要聊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究竟是干嘛的?的更多相关文章

  1. Java程序员入门:程序员究竟可以干多少年?

    很多人都说程序员是青春饭,只能干到30岁. 然而事实真的如此么? 今天我们来探讨一下这个老话题,看看为了技术与编程执着究竟能走多远? 01年龄分布图 先来看一下程序员的年龄分布图: 我们可以看到程序员 ...

  2. WPF 开源项目 【watcher】 守望者,一款监控,统计,分析你每天在自己电脑上究竟干了什么的软件

    时隔多年(两年),天天沉迷写PHP的我在连续加薪了逐渐发现自己不怎么写代码了. 甚至有一天我发现我连IDE 都没有打开,实在是太堕落了 为了及时悬崖勒马,回头是岸.为了鼓励自己专心写代码,我决定写一款 ...

  3. ACMer不得不会的线段树,究竟是种怎样的数据结构?

    大家好,欢迎阅读周三算法数据结构专题,今天我们来聊聊一个新的数据结构,叫做线段树. 线段树这个数据结构很多人可能会有点蒙,觉得没有听说过,但是它非常非常有名,尤其是在竞赛圈,可以说是竞赛圈的必备技能. ...

  4. 高分辨率下IE浏览器缩放导致出现右侧滚动条问题的解决

    0 问题描述 由于需要演示触控操作,采购了SurfacePro,SurfacePro的推荐分辨率为2736×1824,且默认缩放比例为200%,IE浏览器的默认缩放比例也是200%,这样就导致右侧出现 ...

  5. 窥探Swift之数组安全索引与数组切片

    今天是元宵节,祝大家元宵节快乐!在Swift中的数组和字典中下标是非常常见的,数组可以通过索引下标进行元素的查询,字典可以通过键下标来获取相应的值.在使用数组时,一个常见的致命错误就是数组越界.如果在 ...

  6. (转)SQL 优化原则

    一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系 ...

  7. Linq专题之提高编码效率—— 第三篇 你需要知道的枚举类

     众所周知,如果一个类可以被枚举,那么这个类必须要实现IEnumerable接口,而恰恰我们所有的linq都是一个继承自IEnumerable接口的匿名类, 那么问题就来了,IEnumerable使了 ...

  8. Oracle sql语句执行顺序

    sql语法的分析是从右到左 一.sql语句的执行步骤: 1)词法分析,词法分析阶段是编译过程的第一个阶段.这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构 ...

  9. SparkConf加载与SparkContext创建(源码阅读一)

    即日起开始spark源码阅读之旅,这个过程是相当痛苦的,也许有大量的看不懂,但是每天一个方法,一点点看,相信总归会有极大地提高的.那么下面开始: 创建sparkConf对象,那么究竟它干了什么了类,从 ...

随机推荐

  1. js日期处理函数 -- 判断闰年,获取当月的总天数、添加月份

    1. 判断是否是闰年 function isLeapYear(eDate) { var year = eDate.getFullYear(); return (((0 == year % 4) &am ...

  2. 上一篇是copy了整理网上的内容,这篇是一个推荐

    因为公司用的 轮播组件是 aui 的 ui库 这个轮播有样式单一等等很多的问题.... 包括滑动BUG(自己也踩了一个小坑,高度和宽度问题...需要设定好,滑动提示按钮点 丑陋............ ...

  3. python网络编程(四)

    TFTP客户端 1. TFTP协议介绍 TFTP(Trivial File Transfer Protocol,简单文件传输协议) 是TCP/IP协议族中的一个用来在客户端与服务器之间进行简单文件传输 ...

  4. 受欢迎的牛 [HAOI2006] [强连通] [传递闭包(划)]

    Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛 A 认为牛 B受欢迎.这种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A ...

  5. 2017.08.08【NOIP提高组】模拟赛B组

    Summary 今天的题目也不算很难,唯一一道没做出来的题目是以前做过的,太不应该了. Problem T1 油滴扩展 题目大意 给你一堆点,你准备要在这么多的点当中滴油.你可以自己安排顺序,每次滴油 ...

  6. 我要当皇帝等微信小游戏的wbs

    猜字:1.视图交互: 1)主界面:展示每一道题目跟答案 1) 题目展示区域, 成员布局 2) 选项展示 3) 其他 2)下一道题弹框 3)答案弹框 4)结果弹框 5)关卡弹框 2.数据处理, 1) 读 ...

  7. 基于zookeeper的高可用Hadoop HA集群安装

    (1)hadoop2.7.1源码编译 http://aperise.iteye.com/blog/2246856 (2)hadoop2.7.1安装准备 http://aperise.iteye.com ...

  8. javascript中的onmousewheel事件处理

    滚轮事件在不同浏览器会有一点点区别,一个像Firefox使用DOMMouseScroll ,FF也可以使用addEventListener方法绑定DomMouseScroll事件,其他的浏览器滚轮事件 ...

  9. Maven 下载和配置环境

    1.下载 Maven 的网址  www.apache.org www.apache.org 下载放到自己的文件夹里然后解压出来 然后配置环境,打开   我的电脑 按鼠标右键右键  属性 按  新建 然 ...

  10. Aizu2170 Marked Ancestor(并查集)

    https://vjudge.net/problem/Aizu-2170 并查集用于管理元素分组情况. 建树pre[]记录父节点,一开始只有结点1被标记了,所以find()最终得到的根都是1. 如果遇 ...