1 什么是微服务
微服务是指一个颗粒度很小但具备独立完成某个较小的系统模块功能的服务。每个微服务子系统内部只封装当前需求的业务逻辑以及服务的通信和故障处理机制,能够被部署到一台或多台网络服务器上,通过集群的方式像外界提供服务。微服务是从 SOA 架构中演变而来的。
2 微服务体系——以电商系统为例
(1)底层是系统服务,主要包括基本的缓存服务、存储服务以及消息服务等。这些服务被封装为独立的服务模块,连接上层和系统底层之间的交互。上层通过调用系统服务实现对系统底层的相关功能操作。
(2)中间层是共享服务,主要包括订单服务、支付服务以及产品服务等。该层主要根据可通用的服务类型进行拆分,封装不同可通用服务类型下的业务处理逻辑。
(3)顶层是业务服务,主要包括广告服务、下单服务以及团购服务等。该层主要提供系统可感知的,面向用户的具体业务功能。
![微服务 微服务](//ziboxinyan.com/FileUpload/ueditor_s/upload/2021-11/29/6377380028837653389205052.png)
3 微服务架构
其中X轴表示运行多个负载均衡器之后的运行实例,Y轴表示将应用进一步分解为微服务(分库):Z轴表示大数据量时,将服务分区(分表)
![微服务 微服务](//ziboxinyan.com/FileUpload/ueditor_s/upload/2021-11/29/63773800309834.png)
基于微服务体系架构的系统中,不同服务之间的调用,不存在严格的逐层调用界限。业务服务内部的不同服务之间可以实现内部调用。同时也可以跨越共享服务层,直接调用系统服务层的不同服务模块。在同层调用方面,由于共享服务和系统服务是基于通用服务类型以及系统底层交互形式进行拆分的细分服务类型。因此这两层的服务在同层内,无法相互调用。
4 微服务架构的优劣势
采用微服务架构进行系统设计,所带来的优势如下:
(1)由于每个微服务的模块颗粒度非常小,使得微服务模块的程序代码能够完全集中于实现一个具体的细微的业务需求。代码的内在集成度高。
(2)微服务系统由于各个子系统模块之间的独立性强,所以每个微服务子系统完全可以由独立的 2 到 5 人的开发团队进行实现。
(3)不同微服务之间彼此耦合度低,每个微服务都具有独立的功能意义。不论是在微服务开发时,还是在对微服务模块进行部署时,每个微服务都可以独立进行。
(4)不同的微服务之间通过 HTTP 以及服务传递的 API 进行调用,使得不同的微服务可以采用不同的编程语言进行开发,灵活性更强。
虽然微服务架构具有上述很多的优势,但是基于微服务架构的系统,也存在一些劣势。主要有如下方面:
(1)基于微服务架构的系统,由于具备远程服务的选择功能。因此开发人员必须考虑并实现服务异常状态下的服务调用机制。使得开发过程不仅要实现基本的业务功能,还要实现相关故障处理机制。
(2)微服务系统由于自身业务的复杂性,经常在修改一个实体对象时,需要关联其他多个实体对象。而微服务系统的数据库往往是彼此独立的。因此保证不同数据库之间数据的一致性是微服务系统另一个难点。
来源:胡耀东《基于微服务的电商系统的设计与实现》
推荐阅读:
《GIAC_利开园_基于TarsGO的微服务技术架构实践.pptx》
《7-第四范式-微服务平台中业务服务的全栈监控-余超.pdf》
《Knative云原生无服务器架构平台的微服务实践.pdf》