云原生 - Istio可观察性之分布式跟踪(三)

作者:justmine
头条号:大数据与云原生
微信公众号:大数据与云原生
创作不易,在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处。
为了方便阅读,微信公众号已按分类排版,后续的文章将在移动端首发,想学习云原生相关知识,请关注我

一、回顾

云原生 - 体验Istio的完美入门之旅(一)

云原生 - Why is istio(二)

[请持续关注...]

如前所述,业务微服务化后,每个单独的微服务可能会有很多副本,多个版本,这么多微服务之间的相互调用、管理和治理非常复杂,Istio统一封装了这块内容在代理层,最终形成一个分布式的微服务代理集群(服务网格)。管理员通过统一的控制平面来配置整个集群的应用流量、安全规则等,代理会自动从控制中心获取动态配置,根据用户的期望来改变行为。

话外音:借着微服务和容器化的东风,传统的代理摇身一变,成了如今炙手可热的服务网格。

Istio就是上面service mesh架构的一种实现,通过代理(默认是envoy)全面接管服务间通信,完全支持主流的通信协议HTTP/1.1,HTTP/2,gRPC ,TCP等;同时进一步细分控制中心,包括Pilot、Mixer、Citadel等。

话外音:后面系列会详细介绍控制中心的各个组件,请持续关注。

整体功能描述如下:

  • 连接(Connect)

    控制中心从集群中获取所有微服务的信息,并分发给代理,这样代理就能根据用户的期望来完成服务之间的通信(自动地服务发现、负载均衡、流量控制等)。

  • 保护(Secure)

    所有的流量都是通过代理,当代理接收到未加密流量时,可以自动做一次封装,把它升级成安全的加密流量。

  • 控制(Control)

    用户可以配置各种规则(比如 RBAC 授权、白名单、rate limit 、quota等),当代理发现服务之间的访问不符合这些规则,就直接拒绝掉。

  • 观察(Observe)

    所有的流量都经过代理,因此代理对整个集群的访问情况知道得一清二楚,它把这些数据上报到控制中心,那么管理员就能观察到整个集群的流量情况。

二、前言

作为服务网格的一个完整解决方案,为了追求完美,Istio高度抽象并设计了一个优雅的架构,涉及到众多的组件,它们分工协作,共同组成了完整的控制平面。为了更好地学习如何运用Istio的连接、安全、控制、可观察性全面地治理分布式微服务应用,先从战略上鸟瞰Istio,进一步从战术上学习Istio将更加容易,故作者决定从可观察性开始Istio的布道,先体验,再实践,最后落地,一步步爱上Istio,爱上云原生,充分利用云资源的优势,解放应用开发工程师的双手,使他们仅仅关注业务实现,让专业的人做专业的事,为企业创造更大的价值。

三、Why - 为什么需要分布式跟踪?

当业务微服务化后,一次业务请求,可能会涉及到多个微服务,分布式跟踪可以对跨多个分布式服务网格的1个请求进行追踪分析,并通过可视化的方式深入地了解请求的延迟,序列化和并发,充分地了解服务流量实况,从而快速地排查和定位问题。

四、What - Istio的分布式跟踪?

概述

Istio利用Envoy 的分布式追踪功能提供了开箱即用的追踪集成。确切地说,Istio 提供了安装各种各种追踪后端服务的选项,并且通过配置代理来自动发送追踪span到追踪后端服务。

话外音:Istio目前支持的追踪后端服务包括Zipkin、Jaeger、LightStep。

话外音:Istio分布式追踪的整体功能,请参考文末链接。

采样率

默认情况下,使用demo配置文件安装时,Istio会捕获所有请求的追踪信息,即每次访问 /productpage 接口时,都可以在dashboard中看到一条相应的追踪信息。此采样频率适用于测试或低流量网格。对于高流量网格(如:生产环境),请通过下面的两种方法之一来降低追踪采样频率:

  • 在安装时,使用可选项 values.pilot.traceSampling 来设置采样百分比。

  • 在运行时,通过编辑 istio-pilot deployment并通过以下步骤来改变环境变量:

    root@just:~# kubectl -n istio-system get deploy istio-pilot -o yaml
    apiVersion: extensions/v1beta1
    kind: Deployment
    [...]
    name: istio-pilot
    namespace: istio-system
    [...]
    env:
    - name: PILOT_TRACE_SAMPLINGvalue: "1"
    [...]

Istio默认的追踪采样率为1%,即100个请求生成一次追踪报告,有效值的范围从 0.0 到100.0,精度为 0.01。

五、How - Istio如何配置分布式跟踪?

本篇以zipkin为例,体验Istio的分布式追踪功能。

准备工作

请先部署Istio系统和在线书店例子,详情请参考:云原生 - 体验Istio的完美入门之旅(一)。

部署

istioctl manifest apply --set values.tracing.enabled=true \
--set values.tracing.provider=zipkin

模拟请求

要查看追踪数据,必须向服务发送请求。请求的数量取决于Istio的追踪采样率,默认为1%,即在第一个追踪报告可见之前,需要发送至少100个请求。

使用如下命令向productpage服务发送200个请求:

for i in `seq 1 200`; do curl -s -o /dev/null http://$GATEWAY_URL/productpage; done

查看追踪报告

概览

从上可以看出,产生了两份追踪报告,完全符合追踪采集率。

请求完整链路

Span详情

关于追踪报告的分析,这里就不赘述了。

六、总结

本篇先回顾了微服务架构的痛点,以及服务网格的本质,然后大致概述了Istio的整体功能,最后从why、what、how的角度体验了Istio的可观察性特性。除了分布式跟踪,Istio的可观察性还包括:日志、监控,敬请期待,未完待续。

七、最后

如果有什么疑问和见解,欢迎评论区交流。

如果觉得本篇有帮助的话,欢迎推荐转发

如果觉得本篇非常不错的话,可以请作者吃个鸡腿,创作的源泉将如滔滔江水连绵不断,嘿嘿。

八、参考

https://istio.io/docs/tasks/observability/distributed-tracing/overview

https://istio.io/docs/tasks/observability/distributed-tracing/zipkin

https://www.envoyproxy.io/docs/envoy/v1.12.0/intro/arch_overview/observability/tracing

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

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

相关文章

[蓝桥杯2017初赛]算式900+dfs,next_permutation

法一: 代码如下&#xff1a; #include <iostream> using namespace std; const int N 15; bool st[N]; int a[N];void dfs(int u) {if (u 11) {if ((((a[1] * 1000 a[2] * 100 a[3] * 10 a[4]) - (a[5] * 1000 a[6] * 100 a[7] * 10 a[8])) * (a[9] *10 a[10])…

electron ant-design-vue 不能用_基于 Electron 桌面消息管理客户端iGot

今天给小伙伴们分享一个超棒的Electron聚合消息管理器Electron-iGot。electron-igot 一款汇聚微信、邮箱、App消息推送的桌面管理客户端。支持推送消息实时提醒及管理。用途用于短信转发&#xff1b;服务器进程监听、内存/CPU预警监测&#xff1b;项目业务的提醒&#xff1b;..…

数据结构---邻接矩阵的BFS

数据结构—邻接矩阵的BFS 原理&#xff1a;参考趣学数据结构 代码&#xff1a; 队列代码&#xff1a; #pragma once #define elemType int #define N 100 #include<stdlib.h> typedef struct dQueue {int data;struct dQueue* next; }dQueue; typedef struct queue {d…

WTM系列视频教程:CodeFirst

WTM系列视频教程第二章&#xff1a;CodeFirst文字摘要&#xff1a;“群里好多人质疑我啊&#xff0c;说你刚40&#xff0c;哪来的30年开发经验。我解释一下啊&#xff0c;我是8岁开始接触编程&#xff0c;学习的第一个语言是basic&#xff0c;用的苹果电脑&#xff0c;不是你们…

总结定时器设计方法_钢结构刚性固定钢柱脚设计方法总结,看完不仅懂操作,还懂了原理...

一、钢柱柱脚形式的分类刚性固定柱脚&#xff1a;1)埋入式柱脚&#xff1b;2)外包式柱脚&#xff1b;3)插入式柱脚&#xff1b;铰接柱脚&#xff1a;外露式柱脚&#xff1b;二、埋入式柱脚2.1、基本概念&#xff1a;所谓埋入式柱脚是指将钢柱底端直接埋入混凝土基础筏板、地基梁…

数据结构---邻接表的BFS

数据结构—邻接表的BFS 原理&#xff1a;参考趣学数据结构 代码&#xff1a; 队列代码&#xff1a; #pragma once #define elemType int #define N 100 #include<stdlib.h> typedef struct dQueue {int data;struct dQueue* next; }dQueue; typedef struct queue {dQu…

华硕主板开机只进入Bios模式不进入Windows系统

华硕电脑进入bios界面解决办法 1.可以按平常方法多重启几下&#xff08;bios界面按f10确认保存&#xff09; 2.是固态硬盘的地方看看是否有松动 插回去就可以了3.图形界面bios先按f7进入高级模式&#xff0c;【security】菜单&#xff0c;通过方向键选择【secure Boot】选项&am…

[蓝桥杯2017初赛]Excel地址

题目描述 Excel单元格的地址表示很有趣&#xff0c;它使用字母来表示列号。 比如&#xff0c;A表示第1列&#xff0c;B表示第2列&#xff0c;Z表示第26列&#xff0c;AA表示第27列&#xff0c;AB表示第28列&#xff0c;BA表示第53列&#xff0c;… 当然Excel的最大列号是有限度…

abp vnext2.0核心组件之.Net Core默认DI组件切换到AutoFac源码解析

老版Abp对Castle的严重依赖在vnext中已经得到了解决,vnext中DI容器可以任意更换,为了实现这个功能,底层架构相较于老版abp,可以说是进行了高度重构.当然这得益于.Net Core的DI容器组件本身的优势.接着abp vnext2.0核心组件之模块加载组件源码解析 上文,上文中我跳过了DI切换这个…

安卓listview下拉刷新_安卓QQ内测教学,保证不让你走弯路

本文章为安卓QQ内测资格获取教程&#xff0c;仅针对安卓用户&#xff0c;苹果手机我暂无渠道。安卓QQ用户不可直接安装测试版QQ&#xff0c;否则会被强制退出&#xff0c;也无法回退旧版本&#xff0c;只能卸载重新安装旧版本。切记&#xff0c;切记&#xff0c;一定现申请资格…

数据结构---prim最小生成树

数据结构—prim最小生成树 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> #define N 100 #define elemType int //const int MAX_INT (1 << 31) - 1; //const int MAX_INT 0X7fffffff; #define INF (((…

洛谷P2884 [USACO07MAR]Monthly Expense S

题目描述 Farmer John is an astounding accounting wizard and has realized he might run out of money to run the farm. He has already calculated and recorded the exact amount of money (1 ≤ moneyi ≤ 10,000) that he will need to spend each day over the next N…

c++中计算2得n次方_七上,一元一次方程,知识点综合学霸笔记在手

一元一次方程的解定义&#xff1a;使一元一次方程左右两边相等的未知数的值叫做一元一次方程的解&#xff0e;把方程的解代入原方程&#xff0c;等式左右两边相等&#xff0e;解一元一次方程(1)解一元一次方程的一般步骤&#xff1a;去分母、去括号、移项、合并同类项、系数化为…

abp vnext2.0核心组件之DDD组件之实体结构源码解析

接着abp vnext2.0核心组件之模块加载组件源码解析和abp vnext2.0核心组件之.Net Core默认DI组件切换到AutoFac源码解析集合.Net Core3.1,基本环境已经完备,接下去就是构建领域层,vnext整个领域层大致分为聚合根、实体、值对象、事件实体、仓储、服务等等,内容较多,所以我打算分…

[蓝桥杯2017初赛]方格分割-dfs+思维

解题思路&#xff1a; 这是大佬的思路&#xff1a; 这道题可能上来会想到搜格子&#xff0c;但搜格子意味着更高的复杂度以及判连通的需要&#xff0c;本题似乎搜索要切开的边更优。由题意&#xff0c;这一条切割线必定经过图的中心点&#xff0c;那么我们一旦确定了半条到达边…

数据结构---Kruskal最小生成树

数据结构—Kruskal最小生成树 原理&#xff1a;参考趣学数据结构 代码&#xff1a; 快速排序&#xff1a; #pragma once #define elemType int typedef struct vER {elemType u;elemType v;int weight; }VER; int quickSort(VER a[], int l, int h) {//快速排序int i l, j…

电脑打字手指正确姿势_写字坐姿不正确的难题,已被家长攻克,果然高手在民间...

全文1000字&#xff0c;预计阅读需7分钟​进入小学&#xff0c;老师会教一年级学生如何坐正&#xff0c;如何正确拿笔&#xff0c;但由于学生人数较多&#xff0c;加之学习课本知识等&#xff0c;老师很难将每一个学生的坐姿都教得很好。什么样的坐姿才是正确的&#xff1f;怎样…

云原生 - Istio可观察性之监控(四)

作者&#xff1a;justmine头条号&#xff1a;大数据与云原生微信公众号&#xff1a;大数据与云原生创作不易&#xff0c;在满足创作共用版权协议的基础上可以转载&#xff0c;但请以超链接形式注明出处。为了方便阅读&#xff0c;微信公众号已按分类排版&#xff0c;后续的文章…

word List 09

word List 09 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢

[蓝桥杯2016决赛]一步之遥-枚举

题目描述 从昏迷中醒来&#xff0c;小明发现自己被关在X星球的废矿车里。矿车停在平直的废弃的轨道上。 他的面前是两个按钮&#xff0c;分别写着“F”和“B”。 小明突然记起来&#xff0c;这两个按钮可以控制矿车在轨道上前进和后退。按F&#xff0c;会前进97米。按B会后退1…