1. 服务治理
一般来说,服务治理主要关注点划分为几点
- 服务注册发现
- 动态路由
- 负载均衡
- 降级熔断限流
- 链路追踪
从实现上来说,可以分为代理端架构和客户端架构方案两种
2. 代理端架构
基于网关。应用被隐藏在网关之后,访问请求必须经过网关,由网关进行相应的服务治理操作,然后再由网关将流量路由至后端应用。Nginx、Kong、Kubernetes Ingress等采用此类方案。
优点:应用只需获取网关地址,后端复杂的部署结构完全被屏蔽掉
缺点:中心化架构理念,代理端自身容易成为整个系统的瓶颈,一旦宕机后果非常严重
3. 客户端架构
基于部署在应用端的框架类库进行服务治理操作,以点对点方式访问服务提供者。Dubbo、Spring Cloud等采用此方案。
优点:去中心化
缺点:代码侵入性强,无法支持异构语言。
4. Sidecar
对于既希望零侵入,又需要去中心化的云原生架构而言,Sidecar架构会更加契合
Sidecar是以一个独立的进程启动,可供多台宿主机同时使用,也可以仅供一个应用使用。所有的服务治理功能都有Sidecar接管,应用对外访问时仅访问Sidecar即可。