聊聊istio服务网格

news/2025/2/22 17:22:45

聊聊istio服务网格

  • 微服务的缺点:
  • istio介绍
    • 微服务改进前后
    • istio与服务治理
  • istio与k8s的关系
  • istio的整体架构
  • 如有需要收藏的看官,顺便也用发财的小手点点赞哈,如有错漏,也欢迎各位在评论区评论!

微服务的缺点:

在这里插入图片描述注意:不能说拆分太细,导致分布式问题,因为服务网格也仍然有这个问题;
正是微服务架构的缺点,而演进的服务网格新架构,是一种新型的微服务架构;
服务网格本质上是服务于微服务的,主要是作为一个基础设施层,将流控负载等数据面操作从微服务中解耦出来;
抽离的基础设施是sideCar(边车),看做是微服务的一个代理。
service Mesh,也就是服务网格:如istio来说,解决了服务与服务之间通讯的问题。通讯包括服务发现、负载均衡、监控、AB测试、速率限制、访问控制;
服务网格负责与云原生进行可靠性的传递;
相比推特的linked服务网格产品,istio多了控制平台组件,用于管理side car(每个服务的通信功能拆成一个side car,这样开发只需服务中的业务即可,但维护成本变高了)
还可将其他治理功能从业务代理中剥离开来,放到sideCar中治理,如下图腾讯云的服务网格:

在这里插入图片描述

istio_15">istio介绍

在这里插入图片描述

特点:非侵入性;
解决了服务与服务之间通讯的问题。通讯包括服务发现、负载均衡、监控、AB测试、速率限制、访问控制;
引入istio,可以做到用户代码几乎不需要改动,而且可以做到用户代码与服务治理无感;

微服务改进前后

在这里插入图片描述
左边是传统微服务,右边是引入istio后的架构。数据平面就是业务代码,而控制平面是控制数据平面的组件;
特征:连接、安全、策略(控制接收流量的策略)、观察;
连接是指网格内服务之间的通信,面临以下问题:
在这里插入图片描述
istio正是来解决这些问题;

istio_29">istio与服务治理

平时的springcloud,微服务与服务治理组件在同一个进程。弊端是,使用sentinel还是侵入性比较强,而且需要与微服务用同一种语言开发。
所以引入istio的治理方式:
在这里插入图片描述

istiok8s_33">istio与k8s的关系

k8s为云原生提供基础设施平台;
k8s部署的容器服务,已提供了网络互通,但是k8s没有对服务进行服务治理,而istio就帮助k8s实现服务治理。
而k8s帮istio的工作,画图如下:
(数据平面,是一个pod中部署了service容器和对应的side car容器)
在这里插入图片描述
如上图就是介绍在k8s实现数据平面、统一服务发现、基于CRD规则扩展自定义资源(CRD 的核心思想是通过声明式的 API 来扩展 Kubernetes 的功能。你可以定义自己的资源结构,然后像操作 Kubernetes 内建资源一样操作这些自定义资源);

istio_41">istio的整体架构

在这里插入图片描述
istio分为控制平面和数据平面;

引入istio后的访问流程:
请求经过gateway后,转发到pod里服务,由同一个pod的另一个代理容器envoy拦截,会调用控制平面的pilot接口获取服务的提供者列表以及负载均衡配置(所以说pilot实现了服务发现机制),才能选出一个具体的服务提供者。而且为了访问安全性,在调用服务提供者之前,还需在控制平面的citadel组件获取服务提供者的证书与秘钥。而通信双方的envoy还要上报访问的数据给控制平面的Mixer组件,便于控制平面的监控。
①:对于side car(代理容器)是自动注入的,在创建pod时,是k8s的控制平面的api server接收kube命令,它会修改yaml文件,在资源配置后添加创建代理的配置,接着按正常创建pod;
②流量拦截,envoy接收数据包后,是由iptables来对数据包进行校验以及转发;
③服务发现,由envoy流量拦截后,就会请求控制平面的pilot组件去发现服务提供者里的列表;
④负载均衡,从发现的服务提供者列表中负载到一个具体的提供者;
⑤每个pod的envoy从pilot获取流量调用规则;
在这里插入图片描述⑥关注的是调用双方的安全;
⑦调用双方的envoy都会各自上报数据给控制平面的Mixer,这样控制平面就能采集双方调用日志;
在这里插入图片描述
⑧策略的执行,控制服务与服务之间的访问,是拒绝调用服务,还是允许,控制权限也来自Mixer;
在这里插入图片描述
调用另一个pod的服务时,先访问控制平面的Mixer,看是否具有访问权限;
⑨外部访问,就是外部请求到gateway,然后转发请求给前端的pod服务;

如有需要收藏的看官,顺便也用发财的小手点点赞哈,如有错漏,也欢迎各位在评论区评论!


http://www.niftyadmin.cn/n/5862573.html

相关文章

写大论文的word版本格式整理,实现自动生成目录、参考文献序号、公式序号、图表序号

前情提要:最近开始写大论文,发现由于内容很多导致用老方法一个一个改的话超级麻烦,需要批量自动化处理,尤其是序号,在不断有增添删减的情况时序号手动调整很慢也容易出错,所以搞一个格式总结,记…

前端开发常见问题与面试-02

1、vue的双向绑定原理是什么?里面的关键点在哪里? Vue的双向绑定原理是基于Object.defineProperty或者Proxy来实现的,其关键点在于数据劫持,即对数据的读取和修改进行拦截,在数据发生变化时自动更新视图 2、实现水平…

Infuse Pro for Mac v8.1 全能视频播放器 支持M、Intel芯片

Infuse Pro 是一款强大的 Mac 视频播放器。它可以一口通吃您所有的视频文件 - Infuse 将把您从繁琐的视频转换中解放出来,用极美的方式在您的 Mac 上观赏几乎所有视频的格式。Infuse 已适配 macOS 11 并添加更加强大的在线视频,Trakt 同步,Ai…

神经网络剪枝技术的重大突破:sGLP-IB与sTLP-IB

神经网络剪枝技术的重大突破:sGLP-IB与sTLP-IB 在人工智能飞速发展的今天,深度学习技术已经成为推动计算机视觉、自然语言处理等领域的核心力量。然而,随着模型规模的不断膨胀,如何在有限的计算资源和存储条件下高效部署这些复杂的神经网络模型,成为了研究者们亟待解决的…

C# 生成二维码隐藏ASCII码

在 C# 中生成二维码时,如果需要隐藏或过滤掉 ASCII 码中的控制字符或不可见字符,可以在生成二维码之前对输入文本进行处理。以下是完整的实现步骤和代码示例: 1. 过滤 ASCII 码中的控制字符 ASCII 码中,0 到 31 以及 127 是控制字…

postman并发测试某个接口

记录一下在postman中压测某一个接口。 1、新建一个collection: 在collection中创建一个get请求(压测该接口) 2、 并发请求collection: 双击该collection,点击run按钮 然后,设置并发: 查看结果…

常见千兆光电收发器型号(PON无源光收发光功率范围)

常见千兆光纤收发器型号,详细参考表格: 型号发送功率范围 (dBm)接收灵敏度 (dBm)过载光功率 (dBm)HTB-GS-03-A-3 ~ 3-285HTB-GS-03-B-3 ~ 3-285HTB-GS-05-A0 ~ 5-276HTB-GS-05-B0 ~ 5-276HTB-GS-10-A2 ~ 7-2510HTB-GS-10-B2 ~ 7-2510HTB-GS-204 ~ 9-24…

ubuntu离线安装ollama

现在,我来一步步说明在Ubuntu上离线安装Ollama的具体步骤: 1. 准备环境 确保目标计算机已预先更新至最新状态。可以使用以下命令: sudo apt update && sudo apt upgrade -y 但如果之后无法联网,建议先完成升级和清理缓存…