微服务诞生背景
随着领域驱动设计、持续交付、按需虚拟化、基础设施自动化、小型自治团队、大型集群系统这些实践的流行,微服务也应运而生。
微服务优势
微服务在技术决策上给了团队极大的自由度,使团队能够更快地响应不可避免的变化。
微服务概念
一些协同工作的小而自治的服务。
微服务——专注于某个业务
内聚性是指将相关代码放在一起:把因相同原因而变化的东西聚合到一起,而把因不同原因而变化的东西分离开来。
在一个单块系统内,通过创建一些抽象层或者模块来保证代码的内聚性。
根据业务的边界来确定服务的边界,这样就很容易确定某个功能代码应该放在哪里。
由于该服务专注于某个边界之内,因此可以很好地避免由于代码库过大衍生出的很多相关问题。
微服务——专注于某个业务——如何判断服务是否足够小
服务是否能够很好地与团队结构相匹配。如果代码库过大,一个小团队无法正常维护,那么就应该将其拆成更小的。
微服务——自治性——需要正确地建模服务和API
一个微服务就是一个独立的实体。
尽量避免把多个服务部署到同一台机器上
服务之间均通过网络调用进行通信,从而加强了服务之间的隔离性,避免紧耦合。
这些服务应该可以彼此间独立进行修改,并且某一个服务的部署不应该引起该服务消费方的变动。
对于服务,需要考虑的是什么应该暴露,什么应该隐藏。如果暴露得过多,那么服务消费方会与该服务的内部实现产生耦合。这会使得服务和消费方之间产生额外的协调工作,从而降低服务的自治性。
服务会暴露出API(Application Programming Interface,应用编程接口),然后服务之间通过这些API进行通信。API的实现技术应该避免与消费方耦合,这就意味着应该选择与具体技术不相关的API实现方式,以保证技术的选择不被限制。
你是否能够修改一个服务并对其进行部署,而不影响其他任何服务?
请关注我的微信公众号
个人微信公众号
技术交流群 (仅作技术交流):642646237
请关注我的头条号:
网友评论