什么是微服务架构?
微服务框架是将某个应用程序开发划分为许多独立小型服务,实现敏捷开发和部署,这些服务一般围绕业务规则进行构建,可以用不同的语言开发,使用不同的数据存储,最终使得每个服务运行在自己的行程中。并且它们之间采用轻量级通信机制进行通信。
微服务的特点:
单一职责:微服务中每一个服务都对应唯一的业务能力,做到单一职责
应用粒度:微服务的服务拆分粒度很小,例如一个用户管理就可以作为一个服务。每个服务虽小,但“五脏俱全”。
面向服务:每个服务都要对外暴露Rest风格服务接口API。各种终端都可以调用,不关心语言、平台限制,也不关心服务的技术实现,只要提供Rest的接口即可。
前后端分离:采用前后端分离开发,提供统一Rest接口,后端不用再为PC、移动段开发不同接口
自治能力:所有的微服务都能运行在自己的进程中,服务间之间互相独立,互不干扰
团队独立:每个服务都是一个独立的开发团队,
技术独立:Rest接口通信,不关心使用技术
部署独立,服务间虽然有调用,但要做到服务重启不影响其它服务。有利于持续集成和持续交付。每个服务都是独立的组件,可复用,可替换,降低耦合,易维护
缺点:
可用性降低:微服务之间通过远程调用实现协作,而远程调用相对来说不稳定,需要用有效的方案来解决处理。
分布式事务困难:当一个用户请求的业务设计多个微服务时,需要解决保障数据的一致性的问题
全能对象(God Classes)阻止业务拆分,每个业务都有可能存在一个或多个全能对象,比如说商城项目中的订单对象,它几乎会涉及电商应用中的每一个业务,阻止你进行业务拆分