微服务概述
什么是微服务
微服务是一个架构方案,属于分布式架构的一种。 微服务提倡将模块以独立服务的方式独立管理,整个项目依靠多个小型的服务(单独进程)同时运作来支撑,单个服务只关注自己的业务实现并且有专业的团队进行开发。服务之间使用轻量的协议进行消息传送,并且对于单个模块的升级不应影响其他服务,也不应该被其他服务感知。每个服务可以发布多个实例,所有的服务组建成一个网状的服务集群。
微服务带来的问题
即微服务的代价
- 将多少业务拆分到一个服务中,涉及到程序设计中颗粒度的问题,而且必然会产生冗余的问题。
- 服务在多机部署的时候,如何对每个服务的集群地址进行维护和管理。
- 服务之间必然存在数据的传输,如何实现服务之间的远程调用。
- 在多个服务存在集群部署的情况下,所有服务的健康状态如何感知。
微服务架构特征
- 单一职责:每个微服务项目都只负责本服务对应的业务功能,避免重复开发业务。
- 面向服务:每个服务都必须提供给其他服务可以访问的接口。
- 服务自治:服务所采用的技术甚至团队也独立管理,各个服务的数据和部署环境也是相互隔离的。
- 隔离性强:服务之间出现调用,如果被调用方出现问题不能引起调用方的额外异常,所以服务之间要相互隔离,做好容错、降级避免出现级联错误。
服务划分原则
- 边界上下文。微服务的粒度不能大于领域驱动里的 Bounded Context(具体是什么 大家自行 Google)