微服务之service mesh

一、什么是service mesh?

在云原生模型中,单个应用程序可能包含数百个服务;,每个服务可能有数千个实例;,并且每个实例可能处于不断变化的状态,因为它们由像Kubernetes这样的协调器动态调度。 这就导致在应用运行过程中,服务通信不仅非常复杂,而且无处不在。 因此,若要保证端到端的性能和可靠性,对服务通信的管理就变得至关重要。

service mesh是用于处理服务与服务之间通信的专用基础设施层, 它负责在包含现代化、云原生应用且拓扑复杂的服务之间可靠地传递请求。 service mesh通过一系列轻量网络代理来实现,这些代理与应用程序代码一起部署,而且对应用程序不感知。 Service Mesh 实际上就是处于 TCP/IP 之上的一个抽象层,它假设底层的 L3/L4 网络能够点对点地传输字节。

二、现状

目前社区Service Mesh的开源解决方案有:Buoyant 公司推出的 Linkerd 和 Google、IBM 等厂商牵头的 Istio。Linkerd 更加成熟稳定些,Istio 功能更加丰富、设计上更为强大,社区相对也更加强大一些。

1)Istio

Istio是由Google、IBM和Lyft开源的微服务管理、保护和监控框架。它是一个完全开源的服务网格,可以透明的分层到现有的分布式应用中,可以集成到任何日志记录平台,遥测或策略系统的API。

官方中文文档地址:https://istio.doczh.cn

Istio 基本功能

  • 流量管理:控制服务之间流量和API调用,使得调用更可靠。
  • 可观察性:了解服务之间依赖关系,以及它们之间流量的本质和流向。
  • 策略执行:策略应用于微服务之间互动,确保访问策略得以执行(执行是通过配置网格而不是修改程序代码)。
  • 服务身份安全:为网格中的服务提供可靠身份验证,并提供保护流量的能力。

2)Linkerd

Linkerd 是开源网络代理,设计为以服务网格部署:用于管理,控制和监控应用程序内的服务与服务间通讯的专用层。

Linkerd 基本功能

  • Load balancing:负载均衡算法,使用实时性能指标来分配负载并减少整个应用程序的尾部延迟。
  • Circuit breaking:自动熔断,将停止将流量发送到被认为不健康的实例,从而使他们有机会恢复并避免连锁反应故障。
  • Service discovery:服务发现后端集成,通过删除特定的(ad-hoc)服务发现实现来帮助您降低代码的复杂性。
  • Dynamic request routing:动态请求路由和重新路由,允许您使用最少量的配置来设置分段服务(staging service),金丝雀(canaries),蓝绿部署(blue-green deploy),跨DC故障切换和黑暗流量(dark traffic)。
  • Retries and deadlines:在某些故障时自动重试请求,并且可以在指定的时间段之后让请求超时。
  • TLS:可以配置为使用 TLS 发送和接收请求,您可以使用它来加密跨主机边界的通信,而不用修改现有的应用程序代码。
  • HTTP proxy integration:可以作为 HTTP 代理,几乎所有现代 HTTP 客户端都广泛支持,使其易于集成到现有应用程序中。
  • Transparent Proxying:在主机上使用 iptables 规则,设置通过 linkerd 的透明代理
  • gRPC: 支持 HTTP/2 和 TLS,允许它路由 gRPC 请求,支持高级 RPC 机制,如双向流,流程控制和结构化数据负载。
  • Distributed tracing:分布式跟踪和度量仪器,可以提供跨越所有服务的统一的可观察性。
  • Instrumentation:支持分布式跟踪和度量仪器,可以提供跨越所有服务的统一的可观察性
发布了83 篇原创文章 · 获赞 0 · 访问量 4538

猜你喜欢

转载自blog.csdn.net/zhangdx001/article/details/105380721