《云计算与虚拟化技术丛书 Service Mesh实战》—2.3Linkerd主要功能
2.3 Linkerd主要功能
如图2-2所示, Linkerd提供如下主要功能。
基于感知时延的负载均衡
Linkerd工作于第5层,它能实时观测到所有RPC请求延时、队列里未处理请求的数量,因此可基于这些实时性能数据分发请求,相对于传统启发式负载均衡算法,如LRU、TCP活动情况等,这种分发机制性能更优,可尽可能降低时延,提高稳定性。
提供多种负载均衡算法,如 Power of Two Choices (P2C):Least Loaded、Power of Two Choices:Peak EWMA、Aperture:Least Loaded、Heap:Least Loaded以及Round-Robin。
图2-2 Linkerd功能
运行时动态路由
Linkerd支持基于请求级路由,即在HTTP请求里嵌入特定包头,Linkerd根据包头信息将请求路由到特定的应用实例。
另外支持动态修改路由规则实现运行时流量迁移、蓝绿部署、金丝雀部署、跨数据中心切换等。
熔断机制
快速失败(Fail Fast):基于连接的熔断器,如果Linkerd观测到访问某个应用实例建立连接时发生错误,Linkerd将该实例从维护的连接池移除,新的请求不会再被分发到该实例,与此同时,Linkerd在后台不断尝试与移除的实例建立连接,一旦确认实例已经恢复,Linkerd重新将其加入连接池。
失败累计(Failure Accrual):基于请求的熔断器,如果Linkerd观测到访问某个应用实例时,指定数目请求连续失败,Linkerd将该实例标注为不可用状态,不再接受新的请求尝试。同快速失败一样,在后台,Linkerd基于设置的退避间隔(Backoff Interval)周期地发送请求以验证实例是否恢复,一旦恢复,便可接受新的请求。
插入式服务发现
支持各种服务发现机制,如基于文件(File-based)、DNS、KV键值存储系统Zookeeper和Consul、Kubernetes及Marathon等,可以很方便地接入现有或者新的服务发现工具。
超时重试
支持基于HTTP响应分类器对某些失败的请求进行自动重试。
支持设置基于请求层的超时,一旦超时Linkerd客户端取消请求。
重试和超时是为了避免服务器端陷入超额负载状态。
透明TLS加密通信
Linkerd提供的透明TLS功能使得无需修改代码就可实现服务端到端的安全通信,以统一的方式管理整个基础设施层TLS。
指标及分布式追踪
作为透明代理使得Linkerd第一时间知道从单个到整个集群应用实例的运行时指标,通过InfluxDB、Prometheus等收集这些运行时指标,提高整个系统服务状态可见性。
除此之外,可跟各种分布式追踪系统集成,如Zipkin,动态追踪系统运行状态,无需对应用代码做任何修改。
支持多种协议多语言
支持HTTP、HTTP/2、gRPC、Thrift等协议。
Linkerd是语言无关的,任何环境,任何语言都支持。
- 点赞
- 收藏
- 关注作者
评论(0)