微服务化最佳实践

Posted key_3_feng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微服务化最佳实践相关的知识,希望对你有一定的参考价值。

服务管理指导
  • 服务依赖指导:重要的服务不能依赖非重要服务。
  • 团队拆分指导:系统拆分时,团队规模大小以一个系统10个左右开发人员维护为宜(两个比萨原则)。
  • 服务拆分指导:服务拆分时,往往先拆分数据服务层,因为数据服务层往往是复用性高的一层;同一个业务领域内不要拆分。
  • 合并同类项:在服务设计过程中,要避免同类服务由不同服务单元提供;每个业务领域的通用规则需要沉淀成服务。
  • 版本向下兼容:服务要做到向前兼容。如果无法做到,则需要在管控机制上确保服务消费者能强制升级。
  • 组织架构适应:服务化架构的变化要使组织的架构能适应这种变化。
  • 服务部署分离:在部署服务单元时,读服务和写服务分离,核心服务和非核心服务分离,以确保整个服务单元的稳定性和可靠性。
  • 灵活可扩展:在服务接口定义时,要考虑服务需求的多样性和灵活性。
  • 安全先行:服务化时要首先考虑安全。
  • 动静分离:静态资源可以实现服务化,实现静态资源与动态资源分离,从而提高性能。
  • 服务埋点:通过在外层系统埋点,可以实现面向终端用户服务的精细管理,比如服务的容量、服务的性能等。
服务实现指导
  • 超时保护:要提供超时控制。
  • 快速失败:只要发生错误,就立刻返回,避免服务调用时间过长。
  • 结果可预期:任何服务的调用结果一定是成功、失败、未知三者之一,如果是未知,则需要再次检查。
  • 服务无状态:在实现设计上确保服务无状态,避免让服务维护跨服务的会话上下文。
  • 可重入幂等:在实现设计上确保服务操作的幂等效果。
  • 异步解耦:能异步调用的服务尽量使用异步调用,从而提高系统响应速度并降低系统之间的耦合性。
  • 避免单点:服务的实现不能有单点。
  • 乱序可容忍:分布式架构会使任务、数据被处理的顺序可能不同于其产生的顺序,需要在实现设计上消除乱序对业务一致性的影响,要么让处理对顺序不敏感,要么以牺牲性能可扩展性为代价,强制实现处理的顺序性
  • 高并发性能优化:高压场景下的服务调用链路需要特殊处理,可通过将链路缩短、异步化、批量化、缓存预热等多种提升性能的综合手段和处理方式。

以上是关于微服务化最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

译:微服务架构10条最佳实践

微服务架构10条最佳实践

10个微服务架构设计的最佳实践

优化架构设计的 10 个微服务最佳实践

微服务版本最佳实践

灵雀云携手微软:畅谈“微服务架构设计与最佳实践”