1 什么是微服务架构
微服务架构(Micro Services Architecture, MSA)是当前流行的、被广泛应用的分布式软件构建模式,最初由Martin Fowler与James Lewis在2014年提出。与传统的单体式架构不同,微服务架构注重细粒度的服务间相互协调,通过一系列职责单一的、互相配合的服务实现用户的最终目标。在微服务运行与通信方面,各个微服务在独立的进程中运行,彼此之间采用基于HTTP协议的RESTful接口进行通信,每一个服务都能够被独立的部署到生产环境、测试环境中。
![微服务架构 微服务架构](//ziboxinyan.com/FileUpload/ueditor_s/upload/2022-1/6/63777076894734.png)
2 微服务架构的优势
(1)复杂度低。微服务架构将一个大的整体应用分成一组小的服务,每个微服务只专注于一件事情,通过 RPC 调用等方式良好的定义了服务边界,每个微服务的体积轻巧、复杂度也随之降低,提高了开发人员的开发效率且易于维护。
(2)可独立部署。由于每个微服务运行在独立的进程中,所以每个微服务都可以分开独立部署,在传统的单体式架构中,如果应用中某一部分发生了改变,则整个应用需要重新构建和部署。而基于微服务架构的应用则不同,当某个微服务发生了改变时,重新部署该微服务即可,而无需重新编译部署整个应用。这也使得整个微服务架构应用的发布流程更加方便有效,且降低了由于系统环境造成的风险,使得整个应用开发粒度更小、冲突更少、流程更快、交付周期更短。
(3)技术灵活。不同于面向服务架构的集中化特性,微服务体系架构是去中心化的,所以每个微服务都可根据自身需求自行选择合适的技术框架,而且每个微服务在功能上只占整个应用的一部分,逻辑较为简单,当技术栈需要升级时,单个微服务的技术升级风险是比较低的,或者说直接完全重构也是可行的。
(4)容错性好。在传统的单体式架构中,如果某一块功能发生故障,很可能直接扩散到整个应用,导致整个应用无法使用。而在微服务体系架构下,发生的故障被隔离在每个微服务中,通过良好的设计避免其带来的影响(每一种微服务均有多个副本备用),实现应用层面的容错,提升应用程序的健壮性。
(5)易扩展。虽然传统的单体式架构也可以进行扩展,但它是横向扩展,即直接复制整个应用到其他节点上。但是如果应用中不同功能模块的扩展要求不同时,微服务架构的优点就体现出来了,微服务架构下每个微服务都可以按照其自身需求独立的进行扩展,互相不受影响,方便灵活且风险较低。
3 微服务架构有哪些
(1)Dubbo框架:阿里巴巴开发的开源式的分布式服务化治理框架,通过RPC请求方式访问。
(2)Dropwizard:具有轻量化的优势。Dropwizard框架集中了Java生态系统中各个问题域里最好的组件集成于一身,可以快速打造一个Rest风格的后台,整合Dropwizard核心以外的项目。
(3)Akka:一个用Scala编写的库,能够被利用在有简化编写容错、高可伸缩性的Java和Scala的Actor模型,使其实现微服务集群。
(4)Spring Boot:其设计目标是简化新Spring应用初始搭建以及开发过程,是当前非常受欢迎的微服务开发框架。利用Spring
Boot开发的便捷度简化分布式系统基础设施的开发。
(5)Spring
Cloud:基于HTTP(s)的RETS服务构建服务体系的是=一整个系列的框架合计,并非单独框架,能够帮助架构师构建一整套完整的微服务架构技术生态链。
推荐阅读:《GIAC_利开园_基于TarsGO的微服务技术架构实践.pptx》
《网易-翁扬慧-网易数帆从微服务框架到服务网格架构平滑演进及最佳实践.pdf》
《7-第四范式-微服务平台中业务服务的全栈监控-余超.pdf》