软件应用架构演进--微服务架构

单体应用架构

服务及DB单节点(all-in-one)方式部署
优点

  • 项目前期能够快速迭代
  • 架构简单,借助IDE开发、调试即可
  • 易于测试,通过单元测试或者浏览器完成
  • 易于部署

缺点

  • 随着业务增加,会变得臃肿,业务耦合严重
  • 新增业务困难,维护成本高,新人学习成本高
  • 核心业务与边缘业务混合互相影响

垂直应用架构

按业务划分,拆成若干个单体
优点

  • 针对模块开发优化
  • 水平扩展,负载均衡,容错率提高
  • 系统间相互独立,业务迭代更加高效

缺点

  • 服务相互调用,ip地址或端口变化,需手动调整
  • 集群负载均衡复杂
  • 服务接口协议不统一

SOA架构

SOA (Service-Oriented Architecture),即面向服务的架构。把系统拆成独立部署的模块,模块之间相通过RPC等技术通信
由此衍生出一系列服务治理框架(如服务注册、服务调用、服务发现、服务路由),SOA关注的是服务重用及解决信息孤岛问题。SOA服务集中式管理,容易存在服务雪崩问题。

微服务架构

微服务是服务分布式管理,基于SOA将服务更加细化,原本10个服务可能拆分成了100个微服务。微服务关注的是解耦,降低业务之间的耦合度。服务规模扩大,意味着服务的构建、发布、运维的复杂度会成倍增加。微服务会更多地关注在DevOps的持续交付上,因为服务粒度细化之后使得开发运维变得更加重要,因此微服务与容器化技术的结合更加紧密。

优点

  • 专注业务功能点,代码易理解
  • 快速迭代部署上线
  • 可针对某些高吞吐服务进行硬件升级或者服务横向扩容,节约投入成本

缺点

  • 增加运维工作量,以前几个war包,现在要部署几十上百个
  • 增加微服务间互相调用的通讯成本
  • 引入分布式事务解决数据一致性问题
大型网站特点及性能优化指标
微信公众号