什么是微服务
微服务(Microservices)是一种软件架构风格,它将大型应用程序划分为小而自治的服务单元,每个服务单元都可以独立开发、部署和维护。
如下图所示:
应用程序被划分为:用户服务、商品服务、订单服务等一系列独立的服务单元,这就是微服务。
为什么需要微服务?
一个系统业务量很小的时候,大部分Web工程的Java应用程序,打包为War包部署在一台服务器上。
如下图所示:
这种将所有功能都部署在一个web容器中运行的系统,就叫做单体架构,也叫巨石型应用。
随着业务访问量越来越大,单体应用就会出现巨大的瓶颈,比如:
- 复杂性难以管理:随着时间的推移,单体应用的代码库可能会变得庞大而复杂,导致难以理解和维护。
- 部署问题:单体应用的部署通常是全量部署,这意味着每次更新都需要部署整个应用,这可能导致长时间的停机和风险。
- 技术多样性限制:单体应用通常使用一个技术栈,这可能不适合所有功能或团队的需求,引入新的技术或工具可能会受到限制。
- 团队协作困难:多个团队共同开发和维护单体应用可能会导致协作问题,因为不同团队可能需要同时访问和修改同一部分代码。
- 可伸缩性受限:单体应用的组件之间的依赖性可能会限制其可伸缩性。例如,一个性能较差的组件可能会影响整个应用的性能。
为了解决这些问题,就出现了微服务。
微服务的特点
以下是微服务架构的一些关键特点和概念,如下图所示:
1.服务单元
应用程序被拆分为多个小型服务单元,每个服务单元代表一个独立的功能或业务领域,比如:用户、商品、订单等。
2.自治性
每个服务单元都是自治的,它拥有自己的数据库、业务逻辑和用户界面。
这意味着开发团队可以独立决策,并且故障不会影响整个应用程序。
3.分布式架构
微服务架构通常基于分布式系统的原理,服务单元可以在不同的服务器上运行。
4.独立部署
每个服务单元可以独立部署,而不会影响其他服务单元,这允许灵活的更新和快速部署。
5.轻量通信
服务单元之间的通信通常采用轻量级协议,如HTTP或消息队列,这种松耦合的通信有助于提高系统的弹性。
6.多语言支持
不同的服务单元可以使用不同的编程语言和技术栈,以最适合其需求的方式构建。
微服务框架
目前国内企业使用的微服务框架:主要是Spring Cloud和Spring Cloud Alibaba。
SpringCloud整体架构,如下图所示:
以及SpringCloudAlibaba,如下图所示:
微服务的应用场景
微服务架构在以下多种应用场景中特别有用:
1.大型复杂应用
微服务适用于大型、复杂的应用程序,这些应用程序由多个独立但协作的组件构成。
通过将应用程序拆分为小的服务单元,团队可以更容易地开发、测试和维护应用程序的不同部分。
2.持续交付和部署
微服务架构支持敏捷开发和持续交付实践,每个服务单元可以独立部署,从而加快新功能的交付速度。
3.多团队协作
在多团队开发环境中,微服务架构有助于实现协作,不同团队可以独立开发和维护自己的服务单元,减少冲突和合并的问题。
4.云原生应用
微服务架构与云原生应用开发和部署模式相互补充,它们有助于构建弹性和可扩展的应用程序,适应云环境的动态性。
mikechen
mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!

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