微服务架构
- 一.传统的单体架构与微服务架构的区别
- 1.1 单体架构
- 1.1.1 优点
- 1.1.2 缺点
- 1.2 微服务架构
- 1.2.1 优点
- 1.2.2 面临的问题与挑战
- 二. 微服务架构模式方案
- 2.1 聚合器微服务
- 2.2 链式微服务
- 2.3 数据共享微服务
- 2.4 异步消息传递微服务
- 三. SOA与微服务的区别
微服务:顾名思义就是很小的服务,所以它是面向服务架构的一种。传统的单体架构与微服务架构的区别类似于雕版印刷VS活字印刷。
一.传统的单体架构与微服务架构的区别
1.1 单体架构
1.1.1 优点
①开发简单,集中式管理
②基本不会重复开发
③功能都在本地,没有分布式的管理和调用消耗
1.1.2 缺点
1、效率低:开发都在同一个项目改代码,相互等待,冲突不断
2、维护难:代码功能耦合在一起,新人不知道何从下手
3、不灵活:构建时间长,任何小修改都要重构整个项目,耗时
4、稳定性差:一个微小的问题,都可能导致整个应用挂掉
5、扩展性不够:无法满足高并发下的业务需求
1.2 微服务架构
目的:有效的拆分应用,实现敏捷开发和部署
1.2.1 优点
①复杂应用解耦
小服务(且专注于做一件事),化整为零,易于小团队开发。
②独立性强
独立开发、独立部署、独立测试、独立运行(每个服务在其独立进程中)
③技术选型灵活
支持异构(如:每个服务使用不同的数据库)
④容错能力强
故障被隔离在单个服务中,通过重试、平稳退化等机制实现应用层容错。
⑤松耦合、易扩展
可根据需求独立扩展。
1.2.2 面临的问题与挑战
-
分布式环境下的数据一致性
-
测试的复杂性【服务间依赖测试】
-
运维的复杂性
二. 微服务架构模式方案
2.1 聚合器微服务
2.2 链式微服务
2.3 数据共享微服务
2.4 异步消息传递微服务
三. SOA与微服务的区别
微服务 | SOA |
---|---|
能拆分的就拆分 | 是整体的,服务能放一起的都放一起 |
纵向业务划分 | 是水平分多层 |
由单一组织负责 | 按层级划分不同部门的组织负责 |
细粒度 | 粗粒度 |
两句话可以解释明白 | 几百字只相当于SOA的目录 |
独立的子公司 | 类似大公司里面划分了一些业务单元(BU) |
组件小 | 存在较复杂的组件 |
业务逻辑存在于每一个服务中 | 业务逻辑横跨多个业务领域 |
使用轻量级的通信方式,如HTTP | 企业服务总线(ESB)充当了服务之间通信的角色 |