微服务宏观把控
架构演进过程
单体应用架构模式
单体应用优化架构模式
ESB 企业总线架构模式
SOA 架构主要针对企业级、采用 ESB 服务(ESB企业服务总线),非常笨重,需要序列化和反序列化,采用 XML 格式传输。ESB 也可以说是传统中间件技术与 XML、Web Service 等技术相互结合的产物。
微服务架构模式
微服务架构主要用于互联网公司,轻量级、小巧、独立运行,基于 Http、REST、JSON 格式传输。
单体架构的缺点
复杂性逐渐变高
技术债务逐渐上升
部署速度逐渐变慢
阻碍技术创新
无法按需伸缩
什么是微服务
Martin Fowler:简而言之,微服务架构风格这种开发方法,是以开发一组小型服务的方式来开发一个独立的应用系统。其中每个小型服务都运行在自己的进程中,并经常采用 HTTP 资源 API 这样轻量的机制来相互通信。这些服务围绕业务功能进行构建,并能通过全自动的部署机制来进行独立部署。这些微服务可以使用不同的语言来编写,并且可以使用不同的数据存储技术。对这些微服务我们仅做最低限度的集中管理(也就是去中心化)。
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务于服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESRful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免同一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。
微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
微服务架构风格特点
服务组件化
服务围绕业务
产品开发模式
轻量级通信机制
REST API 或者是 RPC
去中心化处理
去中心化数据设计
故障处理设计
演进式设计
基础设施自动化
微服务的优点与挑战
优点
开发简单
易于开发和维护。
技术栈灵活
技术栈不受限制。
服务独立
启动较快,局部修改容易部署。
按需扩容
按需伸缩。
DevOps
开发要参与运维工作。
挑战
运维复杂
对运维要求较高,也需要开发人员在一定程度上参与其中。
数据一致性问题
分布式的复杂性
接口调整成本高
集成测试复杂
重复代码
监控困难
微服务设计原则
单一职责原则
服务自治原则
轻量级通信原则
接口明确原则
Last updated