微服务学习-概念浅析
一、单体应用
-
单体架构
一个war包打天下的应用架构,即为单体应用。war包内包含所有的功能模块,架构图如下:
-
单体架构的优点:
单体架构结构简单,在项目初期能够很好的满足需求,而且开发测试运维非常方便。
-
单体架构的缺点
单体应用部署慢、部署频率低:随着项目的迭代和功能的增加,代码越来越多,构建和部署的时间也会相应的增加;每次功能的变更或缺陷修复都需要部署整个应用,全量部署的方法,耗时比较长,涉及范围广,上线风险比较大,从而导致部署频率较低。
单体应用无法按需扩展:如某一功能模块是IO密集型业务,达到性能瓶颈,无法拆分出来单独部署扩展。
阻碍技术创新发展:如某应用非常庞大,而且使用技术比较老旧,使用新技术替换的成本是非常大的。
二、何为微服务
微服务起源于Martin Fowler的 博客:https://www.martinfowler.com/articles/microservices.html。
In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.
微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据库存储技术。
微服务的核心思想是:分而治之。
三、微服务特性
-
每个微服务可独立运行在自己的进程中。
-
一系列独立运行的微服务共同构建起整个系统。
-
每个微服务为独立的业务开发,只关注某个特定的功能。
-
全自动机制(CI/CD)
-
异构(不同的语言与数据存储)
-
轻量的通信机制
四、微服务架构
五、微服务的应用场景
- 大型复杂应用
- 高并发、高负载应用
- 快速迭代