概念
基本定义
- 微服务就是一些协同工作的小而自治的服务
服务注册与发现
- 微服务之间互相调用,服务发现需要管理各个服务的服务器地址,当进行扩容或摘除时能及时更新
服务监控
- 监控、日志、调用链、告警通知、健康检查
服务容错
- 熔断
- 切换
- 限流和降级
- 重试
服务安全
敏感服务进行身份验证和授权
- HTTPS传输
- 隐私数据加密存储
服务治理
- 引入微服务框架
相比单体架构
优点
技术异构性
- 不同服务内部可以选择不同的语言开发,也可以选择适合各自服务的数据库(MySQL、Redis)
隔离性
- 一个服务不可用不会导致整个系统或其他服务不可用,各个服务相互独立的
可扩展性
- 可以只对影响性能的瓶颈资源进行扩展升级
简化部署
- 单个服务的修改迭代只需要发步自己的改动
易优化
- 代码量不会很大,重构相对容易且改动带来的影响可控
缺点
- 管理复杂
- 难定位问题
微服务框架
Dubbo
- 阿里
- 仅支持Java语言
Tars
- 腾讯
- 仅支持C++语言
Motan
- 微博
- 仅支持Java
gRPC
- 谷歌
- 支持多种语言
thrift
- 支持多种语言
微服务框架和RPC
RPC(Remote Procedure Call)
- 允许像调用本地函数一样调用另一个程序的函数(C/S模式)
微服务框架
- 微服务框架一般都包含了RPC的实现和一系列的服务治理能力,是一套软件开发框架,可以基于这个框架实现自己的服务,方便的利用框架提供的服务治理和RPC能力,微服务框架也被某些人称为RPC框架
下一代微服务架构
服务网格(Service Mesh)
特点
- 应用程序间通讯中间层
- 轻量级网络代理
- 应用程序无感知
- 解耦应用程序的重试/超时、监控、追踪和服务发现
Service Mesh之于微服务,类似TCP/IP之于网络通信