Istio究竟是干嘛的?
要聊ServiceMesh,就不得不提Istio,它是ServiceMesh目前最流行的实践,
当微服务架构体系越来越复杂的时候,需要将“业务服务”和“基础设施”解耦,将一个微服务进程一分为二:

- 一个进程实现业务逻辑,biz,即上图白色方块
- 一个进程实现底层技术体系,proxy,即上图蓝色方块,负载均衡、监控告警、服务发现与治理、调用链…等诸多基础设施,都放到这一层实现
如此解耦之后:
- biz不管是调用服务,还是提供服务,都只与本地的proxy进行本地通信
- 所有跨网的通信,都通过proxy之间进行
要聊ServiceMesh,就不得不提Istio,它是ServiceMesh目前最流行的实践,今天说说Istio是干啥的。
画外音:不能落伍。
什么是Istio?
Istio是ServiceMesh的产品化落地,它的一些关键性描述是:
(1) 帮助微服务之间建立连接,帮助研发团队更好的管理与监控微服务,并使得系统架构更加安全
画外音:Istio helps you to connect, secure, control, and observe microservices.
(2) 帮助微服务分层解耦,解耦后的proxy层能够更加专注于提供基础架构能力,例如:
- 服务发现(discovery);
- 负载均衡(load balancing);
- 故障恢复(failure recovery);
- 服务度量(metrics);
- 服务监控(monitoring);
- A/B测试(A/B testing);
- 灰度发布(canary rollouts);
- 限流限速(rate limiting);
- 访问控制(access control);
- 身份认证(end-to-end authentication);
画外音:佩服,硬是凑齐了十条,其实SM还能提供更多基础服务功能。
(3) 使得业务工程团队与基础架构团队都更加高效的工作,各自专注于自己的工作,更好的彼此赋能
画外音:说的还是解耦。
Istio官网是怎么吹嘘自己的?
画外音:这个问题的另一个问法是“为什么大家要来用Istio”。
Istio非常牛逼,如果要实施ServiceMesh,必须用Istio,因为:
(1) 可以通过,在现有服务器新增部署边车代理(sidecar proxy),应用程序不用改代码,或者只需要改很少的代码,就能实现上述N项基础功能
画外音:你信了么?
(2) 可以通过,控制后台,简单改改配置,点点按钮,就能管理和查看上述N项基础功能
(3) 以下特性,Istio在这个环节里进行了附加说明:
- 负载均衡支持多协议,HTTP, gRPC, WebSocket, TCP;
- 通过路由、重试、故障转移对流量进行细粒度流控;
- 通过可插拔策略层以及可配置API,能够支持流量访问控制、限速、配额管理;
- 自动度量、日志收集、调用跟踪;
- 服务到服务的身份认证;
Istio的核心特性是什么?
Istio强调了它提供的五项关键特性:
(1) 流控(traffic management)
画外音:断路器(circuit breakers)、超时、重试、高可用、多路由规则、AB测试、灰度发布、按照百分比分配流量等。
(2) 安全(security)
画外音:加密、身份认证、服务到服务的权限控制、K8S里容器到容器的权限控制等。
(3) 可观察(observability)
画外音:追踪、监控、数据收集,通过控制后台全面了解上行下行流量,服务链路情况,服务运行情况,系统性能情况,国内微服务架构体系,这一块做得比较缺乏。
(4) 平台无关系(platform support)
画外音:K8s,物理机,自己的虚机都没问题。
(5) 集成与定制(integration and customization)
画外音:可定制化扩展功能。
Istio的吹嘘与特性,对于国外很多通过RESTful提供内网服务的公司,很有吸引力,但相对于国内微服务架构,未必达到了很好的拉拢效果:
- 国内基本都是TCP的RPC框架,多协议支持未必是必须的;
- RPC框架里,路由、重试、故障转移、负载均衡、高可用都是最基础的;
- 流控、限速、配额管理,是服务治理的内容,在微服务架构初期是锦上添花;
- 自动度量,系统入口出口数据收集,调用跟踪,可观察和可操控的后台确实是最吸引人的;
- 服务到服务的身份认证,微服务基本是内网访问,在架构初期也只是锦上添花;
另外一个花边,为什么代理会叫sidecar proxy?

看了上图就容易懂了,biz和proxy相生相伴,就像摩托车(motor)与旁边的车厢(sidecar)。未来,sidecar和proxy就指微服务进程解耦成两个进程之后,提供基础能力的那个代理进程。
【本文为51CTO专栏作者“58沈剑”原创稿件,转载请联系原作者】
Istio究竟是干嘛的?的更多相关文章
- Java程序员入门:程序员究竟可以干多少年?
很多人都说程序员是青春饭,只能干到30岁. 然而事实真的如此么? 今天我们来探讨一下这个老话题,看看为了技术与编程执着究竟能走多远? 01年龄分布图 先来看一下程序员的年龄分布图: 我们可以看到程序员 ...
- WPF 开源项目 【watcher】 守望者,一款监控,统计,分析你每天在自己电脑上究竟干了什么的软件
时隔多年(两年),天天沉迷写PHP的我在连续加薪了逐渐发现自己不怎么写代码了. 甚至有一天我发现我连IDE 都没有打开,实在是太堕落了 为了及时悬崖勒马,回头是岸.为了鼓励自己专心写代码,我决定写一款 ...
- ACMer不得不会的线段树,究竟是种怎样的数据结构?
大家好,欢迎阅读周三算法数据结构专题,今天我们来聊聊一个新的数据结构,叫做线段树. 线段树这个数据结构很多人可能会有点蒙,觉得没有听说过,但是它非常非常有名,尤其是在竞赛圈,可以说是竞赛圈的必备技能. ...
- 高分辨率下IE浏览器缩放导致出现右侧滚动条问题的解决
0 问题描述 由于需要演示触控操作,采购了SurfacePro,SurfacePro的推荐分辨率为2736×1824,且默认缩放比例为200%,IE浏览器的默认缩放比例也是200%,这样就导致右侧出现 ...
- 窥探Swift之数组安全索引与数组切片
今天是元宵节,祝大家元宵节快乐!在Swift中的数组和字典中下标是非常常见的,数组可以通过索引下标进行元素的查询,字典可以通过键下标来获取相应的值.在使用数组时,一个常见的致命错误就是数组越界.如果在 ...
- (转)SQL 优化原则
一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系 ...
- Linq专题之提高编码效率—— 第三篇 你需要知道的枚举类
众所周知,如果一个类可以被枚举,那么这个类必须要实现IEnumerable接口,而恰恰我们所有的linq都是一个继承自IEnumerable接口的匿名类, 那么问题就来了,IEnumerable使了 ...
- Oracle sql语句执行顺序
sql语法的分析是从右到左 一.sql语句的执行步骤: 1)词法分析,词法分析阶段是编译过程的第一个阶段.这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构 ...
- SparkConf加载与SparkContext创建(源码阅读一)
即日起开始spark源码阅读之旅,这个过程是相当痛苦的,也许有大量的看不懂,但是每天一个方法,一点点看,相信总归会有极大地提高的.那么下面开始: 创建sparkConf对象,那么究竟它干了什么了类,从 ...
随机推荐
- python数据结构之队列(二)
书接上文,双端队列区别于单队列为:双端队列可以对队列头和尾部同时进行操作,单队列不行 #coding:utf-8 class DoubleQueue(object): def __init__(sel ...
- MAVEN 加载公共包 commons
<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileu ...
- 创建emlog
第一步:解压安装包并且安装 第二步:打开phpstudy,并启动(如果安装后打开显示没有VC11,则要去安装) 第三步:打开“其他管理项菜单”下面的“根目录”,将emlog下面的emlog之下的全部文 ...
- vue实例属性之methods和computed
我们可以把同一函数放在methods或者computed中,区别在于computed有缓存,计算属性只有在它的相关依赖发生改变时才会重新求值,即数据改变才会执行函数.而methods每当触发重新渲染时 ...
- AE 模板 素材 视频 科技 公安
3d立体现代城市模型背景视频素材视频素材下载__熊猫办公 1080p 科技高速公路汽车奔驰背景视频视频素材下载__熊猫办公 高科技hud全息元素素材ae视频素材下载__熊猫办公 渲染输出,Adobe ...
- php商品条件筛选功能你是怎么做出来的?
php商品条件筛选功能你是怎么做出来的? php按条件筛选商品的功能,还是比较简单的.其实就是根据不同的条件组成SQL查询条件,从数据库里查出不同的商品出来.举个例子:用户可以按价格范围.按品牌.按商 ...
- [CC-CMPVIRS]Computer Virus
[CC-CMPVIRS]Computer Virus 题目大意: 有一张纸带,从左到右被分成了\(n(n\le10^7)\)个格子,在刚开始,第\(i\)个格子上写着数字\(i\).这张纸带被分成了从 ...
- javaweb数据库编程代码详细讲解
import java.sql.*; /*默写数据库练习数据库编程及注释讲解代码*/ public class Main{ public static void main(String[]args)t ...
- 深入理解FM和FFM
公司主要用这两个模型来进行广告预测. http://geek.csdn.net/news/detail/59793 FM主要是处理在onehot之后,矩阵稀疏的问题. 在引入fm之后,能够更好的处理特 ...
- Django REST framework API开发
RESTful设计方法 1. 域名 应该尽量将API部署在专用域名之下. https://api.example.com 如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下. https:/ ...