微服务概述
微服务概念的起源来源于Martin Fowler的一篇知名博文"MicroServices"。
微服务是指开发一个单个小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上。微服务也指一种种松耦合的、有一定的有界上下文的面向服务架构。
简单的说,微服务是系统架构上的一种设计风格,主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于轻量级协议(SpringCloud使用http的RESTful API)进行通信协作。被拆分成的每一个小型服务都围绕着系统中一些耦合度较高的业务功能进行构建,并且每个服务都维护着自身的数据存储,业务开发,自动化测试案例以及独立部署机制。由于有了轻量级的通信协作基础,所以这些微服务可以使用不同的语言来编写。
微服务的主要特点
- 组件化
- 松耦合
- 自治
- 去中心化
主要体现在以下几个方面:
- 细粒度的服务分解
服务粒度要小,而每个服务是针对一个单一职责的业务能力的封装,专注做好一件事情。
- 独立部署运行和扩展
每个服务能够独立被部署并运行在一个进程内。这种运行和部署方式能够赋予系统灵活的代码组织方式和发布节奏,使得快速交付和应对变化成为可能。
- 独立开发和演化
技术选型灵活,不受遗留系统技术约束。合适的业务问题选择合适的技术可以独立演化。服务与服务之间采取与语言无关的API进行集成。相对单体架构,微服务架构是更面向业务创新的一种架构模式。
- 独立团队和自治
团队对服务的整个生命周期负责,工作在独立的上下文中,自己决策自己治理,而不需要统一的指挥中心。团队和团队之间通过松散的社区部落进行衔接。
微服务优点
- 服务足够内聚,聚焦指定的业务或需求
- 松耦合
- 能使用不同语言开发
- 易于集成第三方
- 每个微服务都有自己的存储库,既可以独立使用数据库,也可以统一使用数据库
微服务缺点
- 分布式的复杂性
- 运维成本增加
- 部署依赖
- 服务间通信成本
- 一致性
- 系统集成测试
- 系统监控
常用技术栈
- 服务治理
- 服务管理与配置
- 服务调用
- 服务注册
- 服务熔断器
- 消息队列
- 服务配置中心
- 服务路由
- 负载均衡
- 服务监控
- 全链路跟踪
- 消息总线
- 服务部署
- 数据流操作包
各微服务框架对比
todo