微服务的优缺点

微服务的优缺点

优点

  1. 易于开发和维护, 每个模块独立开发,不同的人负责不同的模块,互不干涉,减少冲突,提高效率。
  2. 易独立部署易扩展,每个服务费独立部署,易于弹性伸缩,不同的微服务部署不同的数量,资源利用率高。
  3. 技术选择更具多样性,不同的微服务可以使用不同的语言,选择性更多,人尽其才,物尽其用。
  4. 可靠性和容错能力、并发能力强,个别微服务的故障不会影响整个系统的稳定性,同时不同的请求发到不同的服务,调度不同机器的计算机资源,并发能力强。

缺点

  1. 技术更复杂,微服务之后需要服务器注册、发现、负载均衡、分布式链路跟踪等技术的支持。
  2. 运维成本高,拆分成多个服务后,运维部署成功高,需要额外的工具支持。
  3. 服务间通信的开销,跨网络调用,带来一定的新能损失。
  4. 数据一致性问题,夸多个节点调用数据一致性难保证,需要分布式事务、补偿机制来保证。

微服务拆分的原则

  1. 低耦合内聚, 相同的业务,关联度高的放在一起,保证单一职责,边界清晰,避免重复开发,不要你中有我,我中有你,比如一个商城,可以拆分陈商品、订单、用户、支付、物流等。
  2. 避免循环调用,避免微服务直接复杂的调用关系,不要出现直接或间接的循环依赖,比如:A->B->A, 或A->B->C-A,滚雪球事件就是这么发生的,出问题都不好排查。
  3. 尽量设计通用接口,不要为某一个业务方做定制接口,比如:查询订单,提供一个查询基础信息和完整信息的接口。
  4. 服务之间调用关系要清晰,分层调用,不能反向调用或同层直接互相调用。
  5. 微服务拆分要渐进式进行,不要一下子拆的太细,太细运维成本也会增加,根据业务情况调整。
0%