什么是微服务(图文最全详解)

什么是微服务(图文最全详解)-mikechen

什么是微服务

微服务(Microservices)是一种软件架构风格,它将大型应用程序划分为小而自治的服务单元,每个服务单元都可以独立开发、部署和维护。

如下图所示:

什么是微服务(图文最全详解)-mikechen

应用程序被划分为:用户服务、商品服务、订单服务等一系列独立的服务单元,这就是微服务。

 

为什么需要微服务?

一个系统业务量很小的时候,大部分Web工程的Java应用程序,打包为War包部署在一台服务器上。

如下图所示:
什么是微服务(图文最全详解)-mikechen
这种将所有功能都部署在一个web容器中运行的系统,就叫做单体架构,也叫巨石型应用。

随着业务访问量越来越大,单体应用就会出现巨大的瓶颈,比如:

  • 复杂性难以管理:随着时间的推移,单体应用的代码库可能会变得庞大而复杂,导致难以理解和维护。
  • 部署问题:单体应用的部署通常是全量部署,这意味着每次更新都需要部署整个应用,这可能导致长时间的停机和风险。
  • 技术多样性限制:单体应用通常使用一个技术栈,这可能不适合所有功能或团队的需求,引入新的技术或工具可能会受到限制。
  • 团队协作困难:多个团队共同开发和维护单体应用可能会导致协作问题,因为不同团队可能需要同时访问和修改同一部分代码。
  • 可伸缩性受限:单体应用的组件之间的依赖性可能会限制其可伸缩性。例如,一个性能较差的组件可能会影响整个应用的性能。

为了解决这些问题,就出现了微服务。

 

微服务的特点

以下是微服务架构的一些关键特点和概念,如下图所示:

什么是微服务(图文最全详解)-mikechen

1.服务单元

应用程序被拆分为多个小型服务单元,每个服务单元代表一个独立的功能或业务领域,比如:用户、商品、订单等。

2.自治性

每个服务单元都是自治的,它拥有自己的数据库、业务逻辑和用户界面。

这意味着开发团队可以独立决策,并且故障不会影响整个应用程序。

3.分布式架构

微服务架构通常基于分布式系统的原理,服务单元可以在不同的服务器上运行。

4.独立部署

每个服务单元可以独立部署,而不会影响其他服务单元,这允许灵活的更新和快速部署。

什么是微服务(图文最全详解)-mikechen

5.轻量通信

服务单元之间的通信通常采用轻量级协议,如HTTP或消息队列,这种松耦合的通信有助于提高系统的弹性。

6.多语言支持

不同的服务单元可以使用不同的编程语言和技术栈,以最适合其需求的方式构建。

 

微服务框架

目前国内企业使用的微服务框架:主要是Spring Cloud和Spring Cloud Alibaba。

SpringCloud整体架构,如下图所示:

什么是微服务(图文最全详解)-mikechen

以及SpringCloudAlibaba,如下图所示:

什么是微服务(图文最全详解)-mikechen

 

微服务的应用场景

微服务架构在以下多种应用场景中特别有用:

1.大型复杂应用

微服务适用于大型、复杂的应用程序,这些应用程序由多个独立但协作的组件构成。

通过将应用程序拆分为小的服务单元,团队可以更容易地开发、测试和维护应用程序的不同部分。

2.持续交付和部署

微服务架构支持敏捷开发和持续交付实践,每个服务单元可以独立部署,从而加快新功能的交付速度。

3.多团队协作

在多团队开发环境中,微服务架构有助于实现协作,不同团队可以独立开发和维护自己的服务单元,减少冲突和合并的问题。

4.云原生应用

微服务架构与云原生应用开发和部署模式相互补充,它们有助于构建弹性和可扩展的应用程序,适应云环境的动态性。

mikechen

mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复架构即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法