当前位置:网站首页>初识Linkerd项目
初识Linkerd项目
2022-07-05 12:39:00 【51CTO】
Linkerd是云原生软件公司Buoyant推出的开源项目,是全球范围内第一个完善的Service Mesh项目。Linkerd作为下一代云应用的基础网络层,通过自动化负载均衡、服务发现和运行时恢复能力等诸多特性,使得企业能够在不牺牲可靠性的情况下将其计算架构平滑地从单体服务转移到微服务架构。
一、主要特性
Linkerd提供如下主要特性。
1)高性能、高扩展性的集群通信能力。每秒以最小的时延及负载处理万级数量的请求,Linkerd 2.0的数据平面当前大小仅为10MB左右,并且99.9%的请求耗时小于1ms;部署方便,业务代码和配置不需要任何修改,特别方便水平扩展。
2)支持多种服务发现方式,并且扩展非常方便。支持各种服务发现机制,如基于文件(File-based)、ZooKeeper、Consul及Kubernetes;增加自定义的服务发现机制比较方便,扩展性强。
3)强大的负载均衡算法支持。推荐使用基于感知时延的负载均衡算法,通过实时统计数据RPC延迟、要处理请求队列大小决定如何分发请求,反馈实时性强,能够根据当前的实时压力情况调整负载;内置多种负载均衡算法,可以根据实际场景灵活选用。
4)完善的多协议支持。支持HTTP 2.0、HTTP 1.1、gRPC、Thrift多种协议。
5)动态路由。针对HTTP协议,支持多种路由策略;支持动态路由机制,可以通过动态修改路由规则实现蓝绿部署、金丝雀部署、流量迁移等;
6)内置完善的log/Metric/Trace。Linkerd通过收集服务间通信的各种统计数据,构建起强大的仪表盘,具体包含每个服务当前的运行状态,请求的成功率,系统的实时拓扑等。
7)多平台支持。Linkerd通过收集服务间通信的各种统计数据,构建起强大的仪表盘,具体包含每个服务当前的运行状态,请求的成功率,系统的实时拓扑等。
二、路由机制
路由机制是Linkerd的核心,Linkerd的主要工作就是收到一个请求消息,然后将该请求消息转发到合适的目的节点,这个过程中主要由服务识别(Identification)、绑定(Binding)、解析(Resolution)和负载均衡4个主要步骤组成,其中识别、绑定、解析属于路由管理的范畴。
Linkerd路由工作机制示意图识别是指根据请求确定请求调用服务的过程,识别阶段的输出是service name,识别过程是根据识别类型,从请求消息生成一个特定的字符串,这个字符串与随后和这个请求关联,Linkerd路由会有一个默认前缀/svc,Linkerd会将默认前缀加上这个字符串作为本次请求的路由标识往后传递,对于HTTP请求来说,Linkerd默认情况下使用一个io.l5d.header.token类型的标识,它使用HTTP请求头中的Host字段作为标识,比如curl-H"Host:data"http://example/hello,路由标识时被转换为/svr/data。同时,识别是一个可扩展的插件,用户可以使用自定义的识别逻辑,将请求按照自己的意愿转换到相应的识别。
通过识别阶段确定了service name之后,由dtab组件根据service name绑定,确定目标服务的集群名称。绑定阶段输出的是client name,client name是目标集群的名称,类似于DNS的域名,和service name只包含目标服务信息不同,client name中还包含集群、区域以及环境等信息。
dtab负责对绑定规则进行管理,比如dtab规则配置如下:/svc=>/#/io.l5d.fs,我们的/svc/test被转换为:/#/io.l5d.fs/test,client name一般以“/$”或者“/#”开头。绑定是Linkerd中变化非常多的一个阶段,Linkerd中的很多场景需求,比如蓝绿测试、小流量灰度等均通过绑定来实现。解析是服务发现的过程,通过named组件将目标集群名称client name转换成一组可用的节点,Linkerd会通过配置文件配置当前使用的服务发现方式,确定服务发现方式后,就可以根据client name,从服务发现中获取节点信息。
三、核心架构
架构层面,Linkerd也是分为控制平面和数据平面,其中控制平面由下面几个部分组成。
1)Controller控制器:控制器由负责不同控制功能的多个容器组成,主要包括public-api、proxy-api、destination和tap,其中public-api负责Linkerd对外的API交互;
2)Web:Web是Linkerd提供的仪表板;
3)Prometheus:Prometheus负责Linkerd Metric信息的收集和存储;
4)Grafana:Grafana负责Linkered的可视化。
Linkered的数据平面采用的是Rust语言实现的轻量级高性能Proxy代理,通过配置Iptables,它可以透明地管理Kubernetes Pod的入口和出口流量,甚至可以对一个正在运行中的服务透明无感知地添加Linkered代理。Linkered支持HTTP、HTTP/2和TCP协议,通过按需诊断tap API,Linkered拥有强大的可视化监控和诊断能力。
从Linkered的整体架构看,Linkered已经完全舍弃了打造Service Mesh平台的想法,内置具体的统计和可视化组件,聚焦为用户提供开箱即可的Service Mesh能力,当前Linkered确实已经非常轻量,对于没有特别要求的通用场景,Linkered还是一个不错的选择。
边栏推荐
- Detailed structure and code of inception V3
- Pytoch implements tf Functions of the gather() function
- Notes for preparation of information system project manager --- information knowledge
- Get the variable address of structure member in C language
- NPM install reports an error
- Resnet18 actual battle Baoke dream spirit
- Introduction to GNN
- Transactions from December 29, 2021 to January 4, 2022
- Transactions from January 14 to 19, 2022
- Kotlin process control and circulation
猜你喜欢
Simply take stock reading notes (3/8)
Redis highly available slice cluster
Database connection pool & jdbctemplate
Distance measuring sensor chip 4530a used in home intelligent lighting
Redis highly available sentinel mechanism
我在滴滴做开源
How to connect the API interface of Taobao open platform (super detailed)
Taobao flag insertion remarks | logistics delivery interface
Implementing Yang Hui triangle with cyclic queue C language
UNIX socket advanced learning diary - advanced i/o functions
随机推荐
非技术部门,如何参与 DevOps?
SAP 自开发记录用户登录日志等信息
奔跑,开路
Pytoch loads the initialization V3 pre training model and reports an error
ZABBIX monitors mongodb templates and configuration operations
10 minute fitness method reading notes (2/5)
Super efficient! The secret of swagger Yapi
Preliminary exploration of basic knowledge of MySQL
2021-12-21 transaction record
实战模拟│JWT 登录认证
Sqoop import and export operation
Making and using the cutting tool of TTF font library
【云原生】Nacos-TaskManager 任务管理的使用
Distributed solution - completely solve website cross domain requests
Pytoch uses torchnet Classerrormeter in meter
单独编译内核模块
Simply take stock reading notes (4/8)
Yum only downloads the RPM package of the software to the specified directory without installing it
Leetcode-1. Sum of two numbers (Application of hash table)
Taobao short videos are automatically released in batches without manual RPA open source