云原生架构相关技术_4.服务网格

devtools/2024/10/19 2:26:18/

1.技术特点

         服务网格(ServiceMesh)是分布式应用在微服务软件架构之上发展起来的新技术,旨在将那些微服务间的连接、安全、流量控制和可观测等通用功能下沉为平台基础设施,实现应用与平台基础设施的解耦。这个解耦意味着开发者无需关注微服务相关治理问题而聚焦于业务逻辑本身,提升应用开发效率并加速业务探索和创新。换句话说,因为大量非功能性从业务进程剥离到另外进程中,服务网格以无侵入的方式实现了应用轻量化,图1展示了服务网格的典型架构。

图1 服务网格的典型架构 

        在这张架构图中,服务A调用服务B的所有请求,都被其下的服务代理截获,代理服务A完成到服务B的服务发现、熔断、限流等策略,而这些策略的总控是在控制平面(Control Plane)上配置。

        从架构上,以开源的Istio服务网格为例,其可以运行在虚拟机或容器中,Istio的主要组件包括Pilot(服务发现、流量管理)、Mixer(访问控制、可观测性)、Citadel(终端用户认证、流量加密);整个服务网格关注连接和流量控制、可观测性、安全和可运维性。虽然相比较没有服务网格的场景多轮4个IPC通信的成本,但整体调用的延迟随着软硬件能力的提升而并不会带来显著的影响,特别是对于白毫秒级别的业务调用而言可以控制在2%以内。从另一方面,服务化的应用并没有做任何改造,就或得了强大的流量控制能力、服务治理能力、4个9(99.99%)以上高可用、容灾和安全等能力,加上业务的横向扩展能力,整体收益仍然是远大于额外IPC通信支出。 

2.主要技术

        2017年发起的服务网格Istio开源项目,清晰定义了数据平面(有开源软件Envoy承载)和管理平台(Istio自身的核心能力)。Istio为微服务架构提供了流量管理机制,同时亦为其他增值功能(包括安全性、监控、路由、连接管理与策略等)创造了基础。

        除了Istio外,也有Linked、Consul这样相对小众的ServiceMesh解决方案,与Istio不同的是,它们在功能上不如Istio完整。

        Linked在数据平面采用了Rust编程语言实现了linked-proxy,控制平面与Istio一样采用Go语言编写。最新的性能测试数据显示,Linked在时延、消耗方面比Istio更具优势。

        Consul在控制面上直接使用ConsulServer,在数据面上可以选择性的使用Envoy。

        Conduit作为Kubernetes的超轻量级ServiceMesh,其目标是成为最快、最轻、最简单且最安全的ServiceMesh。它使用Rust构建了快速、安全的数据平面,用Go开发了简单强大的控制平面,总体设计围绕着性能、安全性和可用性进行。它能透明地管理服务之间的通信,提供可测性、可靠性、安全性和弹性的支持。虽然与Linked相仿,数据平面是在应用代码之外运行的轻量级代理,控制平面是一个高可用的控制器,然而与Linked不同的是,Conduit的设计更加倾向于Kubernetes中的低资源部署。 


http://www.ppmy.cn/devtools/45228.html

相关文章

R语言入门 | 使用 ggplot2 进行数据可视化

1.0准备工作 先下好tidyverse包,并进行加载。 install.packages ( "tidyverse" ) library(tidyverse) R 包只需安装一次,但每次开始新会话时都要重新加载。 1.1 数据框 数据框是变量(列)和观测(行&#x…

oracle 12c DB卸载流程

1.运行卸载程序 [rootprimary1 ~]# su - oracle [oracleprimary1 ~]$ cd $ORACLE_HOME/deinstall [oracleprimary1 deinstall]$ ./deinstall Checking for required files and bootstrapping ... Please wait ... 这里选择3 、回车、y、y、回车、ASM 这里输入y 2.删除相关目录…

Kotlin 数据类

文章目录 定义编译器自动重写、生成方法 定义 Kotlin 数据类可以用于存储数据(当然,不是说普通类不行)。数据类使用data class定义: data class Book(val name: String, val author: String)数据类必须有主构造方法,…

Jupyter Notebook快速搭建

Jupyter Notebook why Jupyter Notebook Jupyter Notebook 是一个开源的 Web 应用程序,允许你创建和分享包含实时代码、方程、可视化和解释性文本的文档。其应用包括:数据清洗和转换、数值模拟、统计建模、数据可视化、机器学习等等。 Jupyter Notebo…

【C++ ——— 继承】

文章目录 继承的概念即定义继承概念继承定义定义格式继承关系和访问限定符继承基类成员访问方式的变化 基类对象和派生类对象的赋值转换继承中的作用域派生类中的默认成员函数继承与友元继承与静态成员菱形继承虚继承解决数据冗余和二义性的原理继承的总结继承常见笔试面试题 继…

基于springboot实现青年公寓服务平台系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现青年公寓服务平台系统演示 摘要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,房屋信息因为其管理内容繁杂&#xff…

算法(十一)贪婪算法

文章目录 算法简介算法概念算法举例 经典问题 -背包问题 算法简介 算法概念 贪婪算法(Greedy)是一种在每一步都采取当前状态下最好的或者最优的选择,从而希望导致结果也是全局最好或者最优的算法。贪婪算法是当下局部的最优判断&#xff0c…

ES 生命周期管理

一 .概念 ILM定义了四个生命周期阶段:Hot:正在积极地更新和查询索引。Warm:不再更新索引,但仍在查询。cold:不再更新索引,很少查询。信息仍然需要可搜索,但是如果这些查询速度较慢也可以。Dele…