Kubernetes - 服务网格(service mesh)

1. 服务网格诞生的背景


服务网格并不是新概念,微服务架构被越来越多的机构采用是服务网格诞生的大背景。

微服务相对于多个服务一体的单体应用来说,有诸多好处,因而被越来越多的采用:

  • 技术可异构,各个服务之间采用RPC或HTTP通信,约定好接口,使用哪种技术或语言都可以;
  • 鲁棒性,如果微服务之间的依赖关系处理的好,可以做到一个服务挂掉不影响其他服务;
  • 组合,独立的微服务意味着可重用性强,可以使用部分微服务组合新应用。

微服务也有其问题,当服务多起来,具有一定规模后,问题开始显露:

  • 服务之间互相调用时,服务A如何能快速找到并访问服务B(服务发现);
  • 当某服务不可用时,如何做到快速熔断,以免造成微服务的雪崩(熔断机制);
  • 服务B如何保证到达的请求都是通过认证的请求(权限认证);
  • 如何管理复杂的微服务之间的调用关系,出现问题如何快速定位(服务监控与追踪)。

2. 服务网格是什么


微服务的问题,我们可以解决,比如我们可以在应用中添加服务发现的功能,增加熔断机制,增加权限认证,同时追踪服务调用关系链,我们的服务将非常臃肿,而且每个服务都有重复的东西:

Kubernetes - 服务网格(service mesh)_第1张图片 每个服务都实现相同的功能

软件工程的一个准则是复用,当我们发现一块功能会使用超过两次,我们就应该提取出来,上图中服务A和B的服务发现、熔断机制、权限认证、服务监控与追踪应当提取为一个模块,提取后会变成这样:

Kubernetes - 服务网格(service mesh)_第2张图片 服务的相同部分提取为单独模块

和之前一样,每个服务都有相同的功能,但不同的是,提取后相同的功能都是一个对象的实例(数据平面),且以sidecar的模式存在,这些实例有集中管理和配置的地方(控制平面)进行管理和配置。最终形成如下网格状的结构,借用一张经典的图,也就是服务网格。

Kubernetes - 服务网格(service mesh)_第3张图片 借用地址: https://philcalcado.com/2017/08/03/pattern_service_mesh.html

3. 服务网格能做什么


  • 服务发现
  • 负载均衡
  • 加密通信
  • 观察与追踪微服务之间的拓扑
  • 服务之间访问的鉴权与授权
  • 熔断机制

4. 服务网格怎么用


Istio是用的比较多的服务网格实现,它除了管理集群内服务间的流量外,还可以管理集群外进入集群内的流量,和Kubernetes Ingress功能类似,并且注入了Istio的各项能力。

4.1 

 

5. 效果怎么样

你可能感兴趣的:(云计算,kubernetes,Service,Mesh)