微服务架构概述
单体应用架构存在的问题
单体应用:一个归档包(例如war格式)包含所有功能的应用程序
优点:比较容易部署、测试
缺点:
- 复杂性高:一个应用百万行级别,修改代码容易牵一发而动全身
- 技术债务:已使用的系统设计或代码难以被修改
- 部署频率低:构建和部署的时间长→部署频率低→两次发布之间有大量功能变更与缺陷修复,出错概率比较高
- 可靠性差:某个应用bug,可能会导致整个应用的崩溃
- 扩展能力受限:单体应用智能作为一个整体进行扩展,无法根据业务模块的需要进行伸缩
- 阻碍技术创新:引入新框架或新技术平台的成本非常高
如何解决单体应用架构存在的问题
微服务就是这样的一种架构模式。
什么是微服务
微服务架构应具备以下特性:
- 每个微服务可独立运行在自己的进程里
- 一系列独立运行的微服务共同构建起整个系统
- 每个服务为独立的业务开发,一个微服务只关注某个特定的功能,例如订单管理、用户管理等
- 微服务之间通过一些轻量的通信机制进行通信,例如通过RESTful API进行调用
- 可以使用不同的语言与数据存储技术
- 全自动的部署机制
微服务架构的优点与挑战
微服务架构的优点
- 易于开发和维护:一个微服务只会关注一个特定的业务功能,所以它业务清晰、代码量比较少。开发和维护单个微服务相对简单。而整个应用是由若干个微服务构建而成的,所以整个应用也会被维持在一个可控状态。
- 单个微服务启动较快:单个微服务代码量较少,所以启动会比较快。
- 局部修改容易部署:单体应用只要有修改,就得重新部