深入理解Istio服务网格(一)数据平面Envoy

一、服务网格概述(service mesh)

在传统的微服务架构中,服务间的调用,业务代码需要考虑认证、熔断、服务发现等非业务能力,在某种程度上,表现出了一定的耦合性
在这里插入图片描述
服务网格追求高级别的服务流量治理能力,认证、熔断、服务发现这些能力更多的是平台测的能力。将业务测和平台测能力解耦,开发人员只关心业务测的能力。每个服务实例都有一个代理,服务的入站流量、出站流量都先经过代理,代理不进行业务处理,只做流量转发,因此,传统微服务架构,服务到服务间的调用,转成了proxy到proxy的调用。
在这里插入图片描述
Proxy通常是一种反向代理软件,有强大的流量转发能力。我们前面讲kube-proxy做负载均衡,是利用Linux内核配置iptables规则,做的L4负载均衡,实际上是能力比较弱的负载均衡。由于所有的流量都经过Proxy,基于此,很容易做到监控、熔断、重试、超时处理、负载均衡、认证等能力。

二、Istio架构

在这里插入图片描述
基于Istio的流量治理,控制平面是其istiod组件,而这个proxy角色就是反向代理软件Envoy。istiod负责生成并下发Envoy的配置。通过丰富的路由规则,对流量行为进行细粒度的控制。

三、Envoy

3.1 优势

Envoy在L4和L7都提供了丰富的Filter能力,并且还提供一组可以通过控制平面管理的API(XDS API)。云原生是一个动态的系统,pod的ip并不是固定的,传统的基于静态配置文件加载的方式并不适用。因此Envoy的API可配置性具有很大的优势,控制平面监听到配置需要变更时,控制平面可以主动下发envoy配置,而envoy不需要重新启动,支持hot reload。

3.2 Envoy典型配置

在这里插入图片描述
listener定义了本机监听ip和端口,route_config配置了转发规则,cluster对应的是service,endpoint对应的是转发的pod。

3.3 Envoy架构

在这里插入图片描述
Main Thread通过XDS API接收控制平面下发的配置,然后将listener、route_config、cluster等各配置项下发至Worker Thread,Worker Thread负责真正接收处理请求流量。

3.4 发布应用

1、创建envoy的配置configmap

kubectl create configmap envoy-config --from-file=envoy.yaml

envoy.yaml:

admin:address:socket_address: { address: 127.0.0.1, port_value: 9901 }static_resources:listeners:- name: listener_0address:socket_address: { address: 0.0.0.0, port_value: 10000 }filter_chains:- filters:- name: envoy.filters.network.http_connection_managertyped_config:"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManagerstat_prefix: ingress_httpcodec_type: AUTOroute_config:name: local_routevirtual_hosts:- name: local_servicedomains: ["*"]routes:- match: { prefix: "/" }route: { cluster: some_service }http_filters:- name: envoy.filters.http.routerclusters:- name: some_serviceconnect_timeout: 0.25stype: LOGICAL_DNSlb_policy: ROUND_ROBINload_assignment:cluster_name: some_serviceendpoints:- lb_endpoints:- endpoint:address:socket_address:address: httpserver-svcport_value: 80

2、部署envoy,并将configmap mount进去
envoy-deploy.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:labels:run: envoyname: envoy
spec:replicas: 1selector:matchLabels:run: envoytemplate:metadata:labels:run: envoyspec:containers:- image: envoyproxy/envoy:v1.21.5name: envoyvolumeMounts:- name: envoy-configmountPath: "/etc/envoy"readOnly: truevolumes:- name: envoy-configconfigMap:name: envoy-config

3、通过envoy访问应用
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/666342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文档更新记录

vue-cli3搭建项目_vite cli3搭建项目-CSDN博客 1.8 eslint_"plugins: [\"import\"], // 解决动态导入import语法报错问题 --> -CSDN博客 1.8

N-142基于springboot,vue停车场管理系统

开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 项目采用前后端分离 前端技术:vueelementUI 服务端技术:springbootmybatis-plus 本项目分为普通用户和管理员…

基于若依的ruoyi-nbcio流程管理系统自定义业务回写状态的一种新方法(一)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: https://gitee.com/nbacheng/n…

深度学习驱动下的自然语言处理进展及其应用前景

文章目录 每日一句正能量前言技术进步应用场景挑战与前景自然语言处理技术当前面临的挑战未来的发展趋势和前景 伦理和社会影响实践经验后记 每日一句正能量 一个人若想拥有聪明才智,便需要不断地学习积累。 前言 自然语言处理(NLP)是一项正…

FreeRTOS动态 / 静态创建和删除任务

本篇文章记录我学习FreeRTOS的动态 / 静态创建和删除任务的知识。希望我的分享能给你带来不一样的收获!文中涉及FreeRTOS创建和删除任务的API函数,建议读者参考以下文章: FreeRTOS任务相关的API函数-CSDN博客 目录 ​编辑 一、FreeRTOS动态创…

“超越摩尔定律”,存内计算走在爆发的边缘

目录 ​编辑 前言 在后摩尔时代提高计算机性能 六类存内计算技术 1)XYZ-CIM 2)XZ-CIM 3)Z-CIM 4)XY-CIM 5)X-CIM 6)O-CIM 各种CIM技术的原理 1)XYZ-CIM:NVM有状态逻辑 2…

ES6-数组的解构赋值

一、数组的解构赋值的规律 - 只要等号两边的模式相同,左边的变量就会被赋予对应的值二、数组的解构赋值的例子讲解 1)简单的示例(完整的解构赋值) 示例 //基本的模式匹配 // a,b,c依次和1,2&#xff0c…

libevent源码解析--event,event_callback,event_base

1.概述 实现一个基础tcp网络库,以基于tcp网络库构建服务端应用,客户端应用为起点,我们的核心诉求有: a. tcp网络库管理工作线程。 b. tcp网络库产生服务端对象,通过启动接口,开启服务端监听。进一步&…

解决gitee文件大小超过100MB——分片上传(每片<100MB)

Gitee 上传文件大小限制为 100MB。如果需要上传大于 100MB 的文件,可以按照以下步骤操作: 1. 将大文件分割成多个小于 100MB 的子文件。 2. 使用 Gitee 的命令行工具 git 分别将这些子文件添加到仓库中。 3. 在仓库中创建一个新文件(例如&am…

记录学习--java abstract与interface使用区别

1.abstract使用场景 abstract提供了一套功能代码,这套功能代码可以直接用,也可以细微的改变,但是abstract不希望这套功能都改变了,这可能是一套标准功能。 2.interface使用场景 interface不提供任何功能,提供协议解…

【C生万物】初始C语言

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有…

【微服务】skywalking自定义链路追踪与日志采集

目录 一、前言 二、自定义链路追踪简介 2.1 自定义链路追踪应用场景 2.2 链路追踪几个关键概念 三、skywalking 自定义链路追踪实现 3.1 环境准备 3.2 集成过程 3.2.1 导入核心依赖 3.2.2 几个常用注解 3.2.3 方法集成 3.2.4 上报追踪信息 四、skywalking 自定义日志…

【国产MCU】-CH32V307-通用同步/异步收发器(USART)

通用同步/异步收发器(USART) 文章目录 通用同步/异步收发器(USART)1、USART介绍2、USART驱动API介绍3、USART使用示例3.1 轮询方式数据发送与接收3.2 中断方式数据发送与接收3.3 DMA方式数据发送与接收CH32V307提供了3组通用同步/异步收发器(USART1、USART2、USART3),以…

如何从 iPhone 上恢复永久删除的照片

您的 iPhone 上缺少照片吗?讽刺的是,iPhone 的许多高级功能可能正是这个问题如此普遍的原因。幸运的是,还有很多方法可以从 iPhone 恢复已删除的照片,具体取决于您设备的设置方式。 本文涵盖了所有这些内容。该过程根据您的具体情…

微信公众号迁移公证书怎么办?

公众号迁移有什么作用?只能变更主体吗?公众号迁移的作用可不止是变更主体哦!还可以把原公众号的粉丝、文章素材、违规记录、留言功能、名称等迁移到新的公众号上。这样一来,你就可以实现公众号的公司主体变更、粉丝转移、开通留言…

MySQL数据库备份方法

一、数据库备份的分类 1.按不同维度分类 从物理与逻辑的角度,备份可分为 物理备份:对数据库操作系统的物理文件(如数据文件、日志文件等)的备份 物理备份方法 冷备份(脱机备份):是在关闭数…

使用maven对springboot项目进行瘦身分离jar的多种处理方案

文章目录 前言一、方案一(修改自带的spring-boot-maven-plugin插件)二、方案二(使用spring-boot-thin-maven-plugin插件)总结 前言 springboot项目打包一般我们都使用它自带的spring-boot-maven-plugin插件,这个插件默…

编程笔记 html5cssjs 075 Javascript 常量和变量

编程笔记 html5&css&js 075 Javascript 常量和变量 一、JavaScript 变量二、JavaScript 常量三、示例:小结: 在JavaScript中,变量和常量是用来存储数据的占位符。它们的主要区别在于可变性:变量的值可以改变,而…

大数据本地环境搭建03-Spark搭建

需要提前部署好 Zookeeper/Hadoop/Hive 环境 1 Local模式 1.1 上传压缩包 下载链接 链接:https://pan.baidu.com/s/1rLq39ddxh7np7JKiuRAhDA?pwde20h 提取码:e20h 将spark-3.1.2-bin-hadoop3.2.tar.gz压缩包到node1下的/export/server目录 1.2 解压压…