二:对微服务架构的思考

1. 简介

思考认知是一个长久的过程,结合实际工作经验与情况反复思考、实践、认证、改进、思考,如此往复。V1.0,入门浅显认知。
整体目录可查看左侧 大拇指 下第二个按钮。

2. 如何权衡微服务的利弊

思考微服务架构的利与弊,以及权衡

2.1 有什么优势

  • 独立开发、部署、维护
    • 支持业务快速迭代
    • 提升开发效率
    • 减少沟通成本
  • 基于分布式架构,支持高性能、高可扩展性、高稳定性
    • 可根据需求动态新增、减少服务数量以及使用资源实现高性能、高可扩展性
    • 服务是通过一组相同功能的服务提供,有较好的容错性
  • 技术多样性:
    • 每个团队的技术栈不限
    • 提供技术样性的同时也要避免因此带来的“技术灾难”

2.2 有什么弊端

  • 分布式带来的复杂性
  • 运维的挑战
  • 日志监控、性能监控的挑战
  • 测试的复杂性

2.3 如何权衡

没有万全法,见“企业应该在什么时候开始考虑引入微服务”一小节思考

3. 企业应该在什么时候开始考虑引入微服务

3.1 为什么要考虑引入微服务

  • 核心原因:目前的单体应用或者SOA架构已无法满足业务的快速增长带来的需求,包括功能迭代效率、应用性能要求、稳定性要求。且随着时间推移问题越来越明显
  • 追逐潮流?相信是有的,或者抱着一步到位的理想开始就上微服务,不考虑业务、团队、公司现状,想后续一步一步完善

3.2 微服务与单体在生产效率上有什么关系

应用系统复杂度与生产效率关系

  • 应用系统复杂度低时,单体架构生产效率高
  • 应用系统复杂度较高时,微服务架构生产效率高
  • 两者会有交叉点
  • 但是团队的能力起着决定性作用

3.3 要考虑哪些因素

  • 是否出现需要引入微服务的情况
  • 是否能够根据业务将应用拆解,并能够组建微服务团队
  • 是否能保证选取的微服务架构实施技术或框架能够解决绝大部分微服务必须要解决的技术点
    • 选型的微服务框架或者技术是否已在业界得到证明以及广泛的使用
    • 保证框架能胜任微服务架构需要解决的点
    • 保证资料的健全,遇到问题能够快速的解决
  • 选型的微服务框架是否有熟练使用以及了解、熟悉其原理的同学,一个团队摸着石头过河必然会很痛苦,效率也无法保证

4. 微服务的团队该如何组建

4.1 康威法则

4.1.1 是什么

Orgnizations which design systems x are constrainted to produce designs which are copies of the communication structures of these orgnizations.

设计系统的组织,其产生的架构设计等价于组织之间的沟通结构

4.1.2 有什么用

指导怎么构建微服务团队

  一个传统的项目从需求调研到开发、实施、运维,需要各个不同职能的团队参与进来,比如需求设计,UI 团队,服务端数据团队,数据库团队,测试团队和运维团队。采用这种团队协作的方式时,一个很小的改动都需要涉及到跨团队的沟通协作。
  微服务的构建是有一个个根据业务划分出来的小团队来实现的,相比较于传统的开发模式,有着麻雀虽小五脏俱全的特点。
  微服务团队需要的是一个全栈的、跨职能的团队,需要涵盖整个项目周期的所有阶段所需要的技能,包括前后端开发、UI、数据库设计、测试、部署、运维。

4.1.3 团队的组织方式

团队组织方式

4.1.4团队的三要素:

  • DevOps能力
  • 保持服务的持续演进
  • 保持团队和架构的对齐 微服务的团队对组织的要求

5. 企业应该在什么时候开始考虑引入微服务

5.1 为什么要考虑引入微服务

  • 核心原因:目前的单体应用或者SOA架构已无法满足业务的快速增长带来的需求,包括功能迭代效率、应用性能要求、稳定性要求。且随着时间推移问题越来越明显
  • 追逐潮流?相信是有的,或者抱着一步到位的理想开始就上微服务,不考虑业务、团队、公司现状,想后续一步一步完善

5.2 微服务与单体在生产力有什么关系

5.3 要考虑哪些因素

  • 是否出现需要引入微服务的情况
  • 是否能够根据业务将应用拆解,并能够组建微服务团队
  • 是否能保证选取的微服务架构实施技术或框架能够解决绝大部分微服务必须要解决的技术点
  • 选型的微服务框架或者技术是否已在业界得到证明以及广泛的使用
  • 保证框架能胜任微服务架构需要解决的点
  • 保证资料的健全,遇到问题能够快速的解决
  • 选型的微服务框架是否有熟练使用以及了解、熟悉其原理的同学,一个团队摸着石头过河必然会很痛苦,效率也无法保证

6. 如何给出一个清晰简洁的服务分层方式

服务分层

  • 基础服务层:由多个基础服务构成
  • 聚合服务:有一个或者多个基础服务组合而成

7. 如何实施微服务

  • 如果你搞不定单块应用,别指望微服务能够拯救你!
  • 按业务划分团队
  • 要有做“产品”的态度
  • 智能端点与哑管道
  • 去中心化治理
  • 去中心化管理数据
  • 基础设施自动化
  • 容错设计
  • 演进式设计
  • 参考单块优先

猜你喜欢

转载自blog.csdn.net/chenghuaying/article/details/81196970