美文网首页
微服务 之 服务拆分

微服务 之 服务拆分

作者: 诺之林 | 来源:发表于2020-05-21 16:02 被阅读0次

    软件工程

    软件架构

    • 软件架构实质是 将软件分解成元素 以及 定义这些元素之间的关系

    • 软件架构决定了软件的非功能性能力 包括: 可维护性、可测试性、可扩展性以及可部署性

    单体架构

    • Laravel && Django

    • 视图层 => 多平台多应用、时效性

    • 逻辑控制层 => 和数据持久层紧耦合

    • 数据持久层 => 和逻辑控制层紧耦合

    微服务架构

    • 服务是一个单一的、可独立部署的软件组件

    • 微服务架构的最核心特性是服务之间的松耦合性

    • 服务的大小并不重要

    微服务架构的基础是单体架构

    服务拆分

    • 根据业务能力进行服务拆分

    • 根据子域进行服务拆分 (Domain Driven Design, DDD)

    • 服务拆分的指导原则

    单一职责原则 (Single Responsibility Principle,SRP) 定义的每一个类都应该只有一个职责 因此也就只有一个理由对它进行修改
    
    遵循闭包原则 (Common Closure Principle,CCP) 如果对包做出修改,需要调整的类应该都在这个包之内
    
    • 服务拆分的难点问题
    网络延迟
    
    同步进程间通信导致可用性降低
    
    在服务之间维持数据一致性
    
    获取一致的数据视图
    
    上帝类阻碍了拆分
    

    机械指挥官

    git rev-list --max-parents=0 HEAD
    
    # https://gitlab.zeaho.com/php/saas-tenant
    git show c0ccc2924b710ce39ff2884ddc64bf66765c0797
    # Date: Sat Aug 4 22:30:45 2018 +0800
    
    # https://gitlab.zeaho.com/php/saas-deprecated
    git show fa75dbb809b9c425ef8ebd8a1b63fb771d0ec4c2
    # Date: Tue Jan 17 15:58:27 2017 +0800
    
    项目拆分 => 服务拆分 => 数据库拆分 => (人事)组织拆分
    
    数据一致性 <= 报表重算
    
    通信可靠性 <= 消息中间件
    
    网络延迟 <= 数据接口超时
    
    调试监控 <= 拥抱DevOps
    

    参考

    相关文章

      网友评论

          本文标题:微服务 之 服务拆分

          本文链接:https://www.haomeiwen.com/subject/fmvewhtx.html