微服务架构设计模式-(6)微服务

微服务

  • 是一种软件架构风格
    • 元素是服务
    • 关系是服务间的通信协议

如何定义微服务架构

  • 第一步
    • 定义系统操作
      • 从需求中提炼各种关键请求
      • 一个系统操作代表一个外部的请求
      • 分类
        • 命令型
          • 新增、修改、删除
        • 查询型
          • 查询
  • 第二步
    • 确定如何分解服务
      • 业务架构学派
        • 定义与业务能力相对应的服务
          • 就是根据业务能力来划分
          • 业务能力
            • 为公司产生价值的商业活动
        • 优点
          • 业务是稳定的
      • 领域驱动
        • 每个子域是一个服务
        • 领域模型
          • 以解决具体问题的方式包含这个领域内的知识
          • 一个问题就是一个领域
          • 一个大问题可以拆成多个子问题,子问题又对应一个领域
    • 拆分的原则
      • 单一职责
      • 闭包原则
        • 因为同一个原因修改的类,应该都在一个包内
    • 难点
      • 网络延迟
      • 进程间通信导致可用性降低
        • 异步是个好方法
      • 数据一致性
        • 传统的分布式解决方法:两段式提交。
          • 同时成功、同时失败
          • 缺点
            • 分布式系统是进程间通信,系统都要处于可用状态
            • 有些数据库不支持分布式事务,如NoSql
        • saga
          • 异步消息来协调本地事务
          • 一个失败时,其他成功的执行补偿事务
      • 数据一致的视图
        • 比较好解决
      • 上帝类
        • DDD拆分
  • 第三步
    • 确定每个服务的API
      • 将第一步中的系统操纵分配给服务
        • 就是你这个服务该完成哪些业务请求

你可能感兴趣的:(微服务,架构)