简介#
在《Abp vNext微服务实践》系列文章中笔者逐一介绍了ABP微服务架构实践应用的过程,但是由于微服务架构过于复杂且配置十分繁琐,读者在亲自体验中往往不太顺利。在本章系列中我将基于ABP微服务架构重新整理构建更轻量实用的微服务,此外我还会会搭配多种微服务组合方式以提高大家对ABP微服务的理解,构建过程中我会将代码发布至GitHub。
本章系列只是将ABP微服务架构进行重新组合搭建,并不会修改ABP任何应用模块代码,也不会违背ABP设计原则,重构的目的只是为了让大家更好的理解微服务拆分,重构后微服务会更加轻量化可以开箱即用。
架构方案#
ABP架构是基于DDD设计,基于模块化实现,所以使用ABP搭建微服务是十分灵活的,目前我会介绍两种架构方案。这两种方案均是基于ABP设计原理,大家可以根据喜好选择一种架构尝试,也可以根据本系列文章的分析和自己理解自主搭建。
基于ABP应用模块的服务和若干个基于ABP的微服务#
这种模式实际上和ABP微服务架构是一致的,在这种模式中我会对ABP应用层逐一构建成微服务发布,并且这些微服务将有独立的解决方案。架构图如下:
架构分析
- 网关服务:基于Ocelot提供所有微服务API接口聚合、限流、熔断等功能,此外网关还提供权限聚合服务。
- 授权服务:为所有客户端(client)提供身份授权,给所有微服务包括网关提供身份认证。
- ABP用户服务:实现ABP用户模块功能。
- ABP租户服务:实现ABP租户模块功能。
- 其他微服务:实现各自业务。
基于ABP基础服务和若干个基于ABP的微服务#
这种模式是将ABP所有应用(用户、租户等)聚集在ABP基础服务中提供统一的租户、用户、权限管理。
架构分析
- 网关服务:基于Ocelot提供聚合所有微服务API接口、限流、熔断等功能,不提供权限聚合服务。
- ABP基础服务:实现ABP租户、用户、权限等ABP应用模块功能,此外基础服务还提供权限聚合功能。
- 授权服务、其他微服务:同上。
服务发现、服务治理#
ABP微服务架构中直接使用网关配置文件直接微服务地址,所以实际上ABP微服务是不需要发现服务的。可能大家会觉得配置服务地址的方式不太灵活,但是对于初试微服务者来说可以大大避坑,其实个人觉得服务发现也并不太靠谱。
服务治理大家可以根据需要在微服务中集成性能监测中间件,也可以尝试使用k8s进行管理。
系列文章#
在本系列中,我会以更直接的方式呈现ABP微服务搭建全过程,并且会及时发布代码,以下是系列文章完成的目录。