微服务
随着企业 IT 服务的不断发展,单台服务器逐渐无法承受用户日益增长的请求压力时,就需要多台服务器联合起来构成「服务集群」共同对外提供服务。
同时业务服务会随着产品需求的增多越来越肿,架构上必须进行服务拆分,一个完整的大型服务会被打散成很多很多独立的小服务,每个小服务会由独立的进程去管理来对外提供服务,这就是「微服务」。
定义:使用一套小服务来开发单个应用的方式,每个服务运行在独立的进程里,一般采用轻量级的通讯机制互联,并且它们可以通过自动化的方式部署。
多微算微?
代码量、开发周期都不算是,不可度量
微服务的特征有哪些?
- 单一职责
- 轻量级通信(平台无关、语言无关,HTTP)
- 隔离性(独立进程运行)
- 独立数据存储系统(降低数据的服务度、耦合度)
- 技术多样性
微服务诞生背景?
- 互联网行业快速发展
- 敏捷开发,快速迭代
- 容器时代
微服务的优势?
- 独立性,体现在独立存储,不会轻易影响到其他系统
- 敏捷性,体现在需求变更,代码重构,技术迭代
- 技术栈灵活,多种语言通过轻量级协议完成交互
- 高效团队
微服务的劣势?
- 额外的工作,服务的拆分,BDD面向对象建模方法
- 数据一致性
- 沟通成本,跨团队沟通
微服务带来的问题?
- 微服务如何通讯?
- 微服务如何发现彼此?
- 微服务如何部署?更新?扩容?
- 部署是个问题,因为微服务将一个应用拆分为一个个小服务,所以部署服务会变得更为频繁和复杂,因为其内部关联关系所致,这对传统的CI、CD是个小挑战~
微服务如何通讯?
从通讯的模式方式考虑
模式 | 一对一 | 一对多 |
---|---|---|
同步 | 请求响应模式 | - |
异步 | 请求/请求异步响应 | 发布/订阅 |
从通讯的协议考虑