spring cloud
spring-cloud 讲解
微服务优缺点
-
分工协作
- 单体:影响开发效率、发布及迭代性差,项目启动慢,每一个开发者都要对整个项目有个总体的把握
- 拆分:开发效率高,每个开发者专注自己负责的模块,提升了敏捷性,
-
并发能力
- 单体:整体集群,易造成系统资源浪费;无法准确的预测最大并发量,无法准确的预知服务器扩容数量
- 拆分:服务集群,充分利用服务器资源,可以只针对多个或单个服务扩容,容易定位问题或服务并发数量,从而实现更加准确的扩容
-
业务
- 单体:随着业务的增加,应用慢慢膨胀,难以维护
- 差分:根据功能垂直差分,责任更加分明,维护更加精确
-
容错
- 单体:应用某个地方出现问题,可能会导致整个应用出现问题,从而导致无法对外提供服务
- 拆分:单个服务出现问题,可以进行熔断(隔离)不会导致整个应用出现问题
-
维护
-
扩展
- 单体:难以进行升级技术更新
- 拆分:新的服务可以采用任意新技术
-
缺点
- 分布式编程比较困难,并且总是面临失败的可能
- 最终一致性,保持最终一致性非常困难
- 运维较为复杂
SOA、分布式、微服务有什么关系
- 分布式架构是指将单体架构的各个部分拆分,然后部署不同的机器或进程中去,soa和微服务基本上都是微服务架构
- SOA是一个面向服务的架构,系统所有服务都注册在总线上,当调用服务时,从总线上查找信息,然后调用
- 微服务时一种更彻底的面向服务的架构,将系统中各个功能抽象成一个个小的应用程序,基本保持一个应用对应一个服务架构
怎么进行服务拆分
- 高内聚】低耦合,职责单一,服务粒度适中
- 以业务模型切入:比如 商品、用户、订单等等
- 演进式拆分:刚开始不要拆分的太细、可以逐步迭代拆分
- 微服务1.0 仅使用服务注册发现
- 微服务2.0 服务注册发现,熔断、降级
- 微服务3.0 将服务治理作为通用组件