上一篇介绍了《ServiceMesh究竟解决什么问题?》,当微服务架构体系越来越复杂的时候,需要将“业务服务”和“基础设施”解耦,将一个微服务进程一分为二:

  • 一个进程实现业务逻辑,biz,即上图白色方块

  • 一个进程实现底层技术体系,proxy,即上图蓝色方块,负载均衡、监控告警、服务发现与治理、调用链…等诸多基础设施,都放到这一层实现

如此解耦之后:

  • biz不管是调用服务,还是提供服务,都只与本地的proxy进行本地通信

  • 所有跨网的通信,都通过proxy之间进行

要聊ServiceMesh,就不得不提Istio,它是ServiceMesh目前最流行的实践,今天说说Istio是干啥的。

画外音:不能落伍。

什么是Istio?

Istio是ServiceMesh的产品化落地,它的一些关键性描述是:

  • 帮助微服务之间建立连接,帮助研发团队更好的管理与监控微服务,并使得系统架构更加安全

画外音:Istio helps you to connect, secure, control, and observe microservices.

  • 帮助微服务分层解耦,解耦后的proxy层能够更加专注于提供基础架构能力,例如:

(1)服务发现(discovery);

(2)负载均衡(load balancing);

(3)故障恢复(failure recovery);

(4)服务度量(metrics);

(5)服务监控(monitoring);

(6)A/B测试(A/B testing);

(7)灰度发布(canary rollouts);

(8)限流限速(rate limiting);

(9)访问控制(access control);

(10)身份认证(end-to-end authentication);

画外音:佩服,硬是凑齐了十条,其实SM还能提供更多基础服务功能。

  • 使得业务工程团队与基础架构团队都更加高效的工作,各自专注于自己的工作,更好的彼此赋能

画外音:说的还是解耦。

Istio官网是怎么吹嘘自己的?

画外音:这个问题的另一个问法是“为什么大家要来用Istio”。

Istio非常牛逼,如果要实施ServiceMesh,必须用Istio,因为:

  • 可以通过,在现有服务器新增部署边车代理(sidecar proxy),应用程序不用改代码,或者只需要改很少的代码,就能实现上述N项基础功能

画外音:你信了么?

  • 可以通过,控制后台,简单改改配置,点点按钮,就能管理和查看上述N项基础功能

  • 以下特性,Istio在这个环节里进行了附加说明:

(1)负载均衡支持多协议,HTTP, gRPC, WebSocket, TCP;

(2)通过路由、重试、故障转移对流量进行细粒度流控;

(3)通过可插拔策略层以及可配置API,能够支持流量访问控制、限速、配额管理;

(4)自动度量、日志收集、调用跟踪;

(5)服务到服务的身份认证;

Istio的核心特性是什么?

Istio强调了它提供的五项关键特性:

  • 流控(traffic management)

画外音:断路器(circuit breakers)、超时、重试、高可用、多路由规则、AB测试、灰度发布、按照百分比分配流量等。

  • 安全(security)

画外音:加密、身份认证、服务到服务的权限控制、K8S里容器到容器的权限控制等。

  • 可观察(observability)

画外音:追踪、监控、数据收集,通过控制后台全面了解上行下行流量,服务链路情况,服务运行情况,系统性能情况,国内微服务架构体系,这一块做得比较缺乏。

  • 平台无关系(platform support)

画外音:K8s,物理机,自己的虚机都没问题。

  • 集成与定制(integration and customization)

画外音:可定制化扩展功能。

Istio的吹嘘与特性,对于国外很多通过RESTful提供内网服务的公司,很有吸引力,但相对于国内微服务架构,未必达到了很好的拉拢效果:

(1)国内基本都是TCP的RPC框架,多协议支持未必是必须的;

(2)RPC框架里,路由、重试、故障转移、负载均衡、高可用都是最基础的;

(3)流控、限速、配额管理,是服务治理的内容,在微服务架构初期是锦上添花;

(4)自动度量,系统入口出口数据收集,调用跟踪,可观察和可操控的后台确实是最吸引人的;

(5)服务到服务的身份认证,微服务基本是内网访问,在架构初期也只是锦上添花;

另外一个花边,为什么代理会叫sidecar proxy?

看了上图就容易懂了,biz和proxy相生相伴,就像摩托车(motor)与旁边的车厢(sidecar)。未来,sidecar和proxy就指微服务进程解耦成两个进程之后,提供基础能力的那个代理进程。

Istio这么牛逼,它的核心架构如何呢?

且听下回分解。

Istio究竟是干嘛的?相关推荐

  1. “血洗”Twitter,“杀疯了”的马斯克究竟想干啥?

    周末有个朋友给我说:马斯克"血洗"Twitter了,你有什么评价? 我去搜了一下,果然,马斯克"杀疯了". 440亿美元收购Twitter以后,他立刻解雇了公司 ...

  2. 产品经理究竟是干嘛的

    产品经理究竟是干嘛的? 简单来说,产品经理主要的工作就是:规划.设计产品,对产品研发过程的控制,最终把产品卖出去的一个过程. 而产品经理,基于服务的对象不同,主要分为两种:to b (针对企业)和to ...

  3. 大数据时代,数据仓库究竟是干嘛的?

    前言 无论你是否专门从事大数据开发,作为一个开发人员,应该都听说过数据仓库的概念,那你知道为什么会出现数据仓库?数据仓库究竟是干嘛的吗?有什么价值和意义呢?那么本文就带到入门,揭开数据仓库的面纱. 数 ...

  4. 残差神经网络究竟在干啥?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:深度学习与计算机视觉 本文作者重新审视了ResNet之所 ...

  5. 为啥女性洗澡都很慢,究竟在干啥?

    刚同居的小情侣小言和小康,住在一起的第一天晚上,小言与小康说:你先去洗澡吧! 小康说:还是你先去吧,我洗澡比较快. 小言却说:你先洗吧,我洗澡会很慢的. 小康却不以为然,不过也没再坚持,就去洗澡了.小 ...

  6. SDN控制器究竟在干啥?

    一提到SDN,大家就会想到南北向接口,南向接口负责和交换机的交互,北向接口负责和各种应用的交互,SDN控制器稳坐中间,运筹帷幄,决胜千里.在博主看来,这只是SDN的冰山一角.对这个问题比较全面的阐述出 ...

  7. ng-template、ng-container、ng-content和ngTemplateOutlet、ngProjectAs傻傻分不清!他们究竟是干啥的???

    一句话描述5个关键词的作用: ng-template是备胎(模板):通常在html里面作为备用模板,当绑定了对应的#标记的时候才会显示 ng-container是舔狗(虚拟标签):包裹的内容显示,而自 ...

  8. pc版android系统 app,掏空国产App,这国产系统究竟想干啥?

    大家好,欢迎来到黑马公社. 就在这几天,整个数码圈子都被华为的鸿蒙系统刷屏了! 别的不说,单就华为对鸿蒙系统的后台应用优化就足以让黑马眼馋. 可惜的是,黑马空有设备却没有通过审核.不得已,鸿蒙系统的这 ...

  9. kafka究竟是干嘛的?

    kafka简介 一.维基百科 二.消息队列 2.1 什么是消息队列 2.2 发布/订阅消息队列 三.kafka 简介 一.维基百科 维基百科kafka简介入口 Kafka是由Apache软件基金会开发 ...

最新文章

  1. 剑指offer:矩形覆盖
  2. SpringBoot配置Mybatis在控制台打印sql
  3. 单点登录SSO流程图
  4. 聊聊前端日志库在 SaaS 产品中的应用与设计
  5. 大数据-----软件开发模型(详细讲解)
  6. Python Twisted 介绍
  7. 最新创意购物促销海报设计,广告人必看!
  8. mysql druid读写分离_springboot+mysql+jpa+sharding-jdbc+druid读写分离
  9. 拓端tecdat|R语言分位数自回归QAR分析痛苦指数:失业率与通货膨胀率时间序列
  10. 基于JSP小型超市管理系统
  11. 极坐标梯度公式_一般坐标系下的梯度散度旋度及拉普拉斯形式
  12. 网络连接状态指示器(NCSI ,Network Connectivity Status Indicator)
  13. Leetcode第904题
  14. 《高效能青少年的七个习惯》读后感作文3900字
  15. Java工程师成神之路
  16. 视频如何加水印文字?
  17. Java中4大基本加密算法解析
  18. Linux之命令scp远程拷贝文件
  19. Cocos2d-x教程(36)-多线程与异步加载
  20. HDU 3831 DICS

热门文章

  1. [译]以PostgreSQL为例,谈join计算的代价
  2. Linux下判断字符串长度
  3. expdp / impdp 用法详解(Oracle)
  4. mysql5.6,基于GTID的主从同步与延迟复制
  5. 11--Rails数据交互3
  6. .重要开源协定的比较以及区别
  7. django项目实战(2)-数据库配置
  8. 不越狱无硬件,轻松搞定iPhone投影与录屏
  9. java排序的几种方法
  10. Matlab读取点云数据显示