史上最牛逼的微服务架构学习笔记,原来可以这么轻松的就学会了( 四 )

  • 基于新C++11编码:能够提供高效的性能 。
  • L3/L4过滤器:核心是一个L3/L4网络代理,能够作为一个可编程过滤器实现不同TCP代理任务,插入到主服务当中 。通过编写过滤器来支持各种任务,如原始TCP代理、HTTP代理、TLS客户端证书身份验证等 。
  • HTTP L7过滤器:支持一个额外的HTTP L7过滤层 。HTTP过滤器作为一个插件,插入到HTTP链接管理子系统中,从而执行不同的任务,如缓冲,速率限制,路由/转发,嗅探Amazon的DynamoDB等等 。
  • 支持HTTP/2:在HTTP模式下,支持HTTP/1.1、HTTP/2,并且支持HTTP/1.1、HTTP/2双向代理 。这意味着HTTP/1.1和HTTP/2,在客户机和目标服务器的任何组合都可以桥接 。
  • HTTP L7路由:在HTTP模式下运行时,支持根据content type、runtime values等,基于path的路由和重定向 。可用于服务的前端/边缘代理 。
  • 支持gRPC:gRPC是一个来自谷歌的RPC框架,使用HTTP/2作为底层的多路传输 。HTTP/2承载的gRPC请求和应答,都可以使用Envoy的路由和LB能力 。
  • 支持MongoDB L7:支持获取统计和连接记录等信息 。
  • 支持DynamoDB L7:支持获取统计和连接等信息 。
  • 服务发现:支持多种服务发现方法,包括异步DNS解析和通过REST请求服务发现服务 。
  • 健康检查:含有一个健康检查子系统,可以对上游服务集群进行主动的健康检查 。也支持被动健康检查 。
  • 高级LB:包括自动重试、断路器,全局限速,阻隔请求,异常检测 。未来还计划支持请求速率控制 。
  • 前端代理:可作为前端代理,包括TLS、HTTP/1.1、HTTP/2,以及HTTP L7路由 。
  • 极好的可观察性:对所有子系统,提供了可靠的统计能力 。目前支持statsd以及兼容的统计库 。还可以通过管理端口查看统计信息,还支持 第三方的分布式跟踪机制 。
  • 动态配置:提供分层的动态配置API,用户可以使用这些API构建复杂的集中管理部署 。
  • Istio
    Istio是一个用来连接、管理和保护微服务的开放平台 。Istio提供一种简单的方式来建立已部署服务网络,具备负载均衡、服务间认证、监控等功能,而不需要改动任何服务代码 。想要为服务增加对Istio的支持,您只需要在环境中部署一个特殊的边车(sidecar),使用Istio控制面板功能配置和管理代理,拦截微服务之间的所有网络通信 。
    Istio目前仅支持在Kubernetes上的服务部署,但未来版本中将支持其他环境 。
    Istio提供了一个完整的解决方案,通过为整个服务网格提供行为洞察和操作控制来满足微服务应用程序的多样化需求 。它在服务网络中统一提供了许多关键功能:
    • 流量管理:控制服务之间的流量和API调用的流向,使得调用更可靠,并使网络在恶劣情况下更加健壮 。
    • 可观察性:了解服务之间的依赖关系,以及它们之间流量的本质和流向,从而提供快速识别问题的能力 。
    • 策略执行:将组织策略应用于服务之间的互动,确保访问策略得以执行,资源在消费者之间良好分配 。策略的更改是通过配置网格而不是修改应用程序代码 。
    • 服务身份和安全:为网格中的服务提供可验证身份,并提供保护服务流量的能力,使其可以在不同可信度的网络上流转 。

    Istio服务网格逻辑上分为数据面板和控制面板:
    • 数据面板由一组智能代理(Envoy)组成,代理部署为边车,调解和控制微服务之间所有的网络通信 。
    • 控制面板负责管理和配置代理来路由流量,以及在运行时执行策略 。

    下图显示了构成每个面板的不同组件: 
    史上最牛逼的微服务架构学习笔记,原来可以这么轻松的就学会了

    文章插图
     
    Conduit
    Conduit是为Kubernetes设计的一个超轻型服务网格服务,它可透明地管理在Kubernetes上运行的服务的运行时通信,使得它们更安全可靠 。Conduit提供了可见性、可靠性和安全性的功能,而无需更改代码 。
    Conduit service mesh也是由数据面板和控制面板组成 。数据面板承载应用实际的网络流量 。控制面板驱动数据面板,并对外提供北向接口 。
    对比
    Linkerd和Envoy比较相似,都是一种面向服务通信的网络代理,均可实现诸如服务发现、请求路由、负载均衡等功能 。它们的设计目标就是为了解决服务之间的通信问题,使得应用对服务通信无感知,这也是Service Mesh的核心理念 。Linkerd和Envoy像是分布式的Sidebar,多个类似Linkerd和Envoy的proxy互相连接,就组成了service mesh 。
    而Istio则是站在了一个更高的角度,它将Service Mesh分为了Data Plane和Control Plane 。Data Plane负责微服务间的所有网络通信,而Control Plane负责管理Data Plane Proxy:


    推荐阅读