微软关于微服务体系结构的理解( 二 )

  • 版本控制 。对某个服务的更新不应中断依赖于它的其他服务 。多个服务可在任意给定时间更新,因此,若不精心设计,可能会遇到向后或向前兼容性问题 。
  • 技能组合 。微服务是一种高度分布式系统 。请仔细评估团队是否具有成功使用微服务所需的技能和经验 。
  • 最佳做法
    • 围绕业务域对服务建模 。
    • 分散所有资源 。单个团队负责设计和生成服务 。避免共享代码或数据架构 。
    • 拥有数据的服务应当有专用的数据存储 。为每个服务和数据类型使用最合适的存储 。
    • 服务通过设计完善的 API 进行通信 。避免泄露实现细节 。API 应对域建模,而不是对服务的内部实现建模 。
    • 避免服务之间耦合 。耦合的原因包括共享的数据库架构和严格的通信协议 。
    • 将身份验证和 SSL 终止等跨领域操作分流到网关 。
    • 让网关不必了解域 。网关应处理和路由客户端请求,而无需了解业务规则或域逻辑 。否则,网关会变成一个从属物,从而导致服务之间耦合 。
    • 服务应具有松散耦合和高功能内聚的特点 。应当将可能会一起更改的函数打包并部署在一起 。如果它们驻留在不同的服务中,这些服务最终会紧密耦合,因为一个服务中的更改将需要更新其他服务 。两个服务之间的通信过于频繁可能是紧密耦合和低内聚的征兆 。
    • 隔离故障 。
    转自:https://docs.microsoft.com/zh-cn/azure/architecture/guide/architecture-styles/microservices

    【微软关于微服务体系结构的理解】


    推荐阅读