istio大咖秀中百度分享解读

istio大咖秀中百度分享解读

本文内容来自bilibili视频,如有误读或者侵权请联系作者删除

总结如下

1.基于自有组件naming agent进行服务发现,故障时可以自动切换成直连模式
2.基于服务订阅模式进行配置增量更新
3.通过bgrpc优化envoy内核来提升性能
4.修改pilot使其支持私有化协议
5.支持配置的灰度发布

百度服务治理现状时间线

13年探索sidecar模式
16年百度网盘应用sidecar模式
16年9月 service mesh提出,百度开始研发bmesh(go开发)
18年7月 istio1.0的发布
19年 百度内部确定基于istio+envoy模式进行研发

为什么要引入service mesh(什么样的场景适合)

多语言技术栈(语言技术栈单一可以不引入)
更细粒度的服务治理,提供统一的服务治理
产品研发能力不强(通过service mesh提供统一的功能,否则需要独立开发)

百度内部架构方案一

image.png
1.通过envoy直接连接注册中心
2.自主开发mesh logic来和k8s apiserver对接,写入sidecar CRD
3.大幅降低xds推送量,减少了envoy中配置数
4.java agent探针,所以只支持java

百度内部架构方案二

image.png
1.通过naming agent来实现服务发现
2.将envoy地址配置到naming中
3.naming会把包含envoy地址的请求转到envoy上
4.如果没有envoy地址就采用直连模式
5.mesh方案,支持多语言
6.支持link订阅,能够支持xds根据订阅模式进行增量下发
7.istio不支持私有化协议,改造istio使其支持私有化协议
8.改造了envoy内核,使其包含brpc并且能够在envoy内核和brpc内核进行切换,提升性能

mesh带来的好处

1.提高运维管理的能力,机房切换流量,夸机房流量切换
2.提高产品发布能力,通过版本控制,可以回滚,溯源
3.服务网格可编程能力,提高了平台化能力

提问

1. 请问,istio组件,包括数据面和控制面发生故障时,有哪些快速fallback的方案,之前阅读了大佬的相关文章,这块好像没有细讲,谢谢--Heaven
答:百度是通过envoy和naming集成,当遇见故障时,快速切换为直连模式,防止对业务产生影响。
2. 有些服务QoS想设置guaranteed,但是istio的sidecar不是 request和litmit一样的。要guaranteed的话必须sidecar的QoS相关配置也要改。你们是怎么做的?如果改,建议设置为多少?感谢大佬!
答:目前使用的pod的容量是envoy50到200兆左右,cpu为应用cpu的10%左右。具体其实需要实际场景进行qos压测才可以,这只是建议的值。
3. 你好。作为业务方的技术负责人,被中间件团队推动上Istio,目前带来的收益主要是服务治理方向的。从业务迭代效率的角度看,上Istio的增量收益抵不上迁移成本的代价;另外还降低了业务方工作的技术含量。请问有没有实践中,业务方在Mesh化的过程中获得显著收益的例子?
答:迁移确实具有一定的成本,业务mesh化可以带来服务治理时效性增强,可以把不同技术栈统一起来。
4. 为什么没有采用mcp over xds的方案? 而是独立搭建了api server 和 etcd? 
答:目前k8s支持这种单独搭建的方式,比较方便,还是复用istio部署方案。
5. pilot的多业务方案是怎么做的? 如果是多个pilot的话,那独立的k8s api server和etcd也要多个么?
答:目前百度是用同一套,也是可以独立部署的。
6. envoy 的brpc改造方案,会考虑开源么? 怎么follow后续社区envoy的最新代码呢
答:brpc本身就是开源的,百度只是把它集成到envoy的内核中了。目前这块需要等istio社区稳定之后会输出到社区。
7. 内部的mesh方案,考虑通过百度云的方式对外输出么? 
答:目前已经输出了。
8. 随着istio新版本的不断发布,内部使用的版本是否跟进了开源新版本,跟进社区版本升级有什么经验分享? 
答:目前还在等待版本的稳定,继续跟进社区动态,后续输出到社区。
9. envoy filter管理麻烦的话,nshead,dubbo等多协议支持是怎么实现的?在pilot中是如何管理的? 
答:通过改造pilot,实现配置化管理,来支持多协议。
10. 引入两个sidecar后问题定位的成本和难度会大福增加,这块有什么经验可以分享
答:根据envoy的configdump和调用连,指标监控来分析和定位问题。
11. sidecar带来的额外成本问题谁来买单?业务认可吗
答:百度业务认可,内部已经推广。
12. sidecar可以使用的的资源配额是怎么分配管理的,动态的还是静态的,有什么经验
答:200兆。cpu是业务应用的10%,但是还需要压测。和前面问题类似。
13. sidecar的监控是怎么做的? 权限,成本方面可能都有一些疑问
答:
14. Naming这个agent和框架非常不错,请问Naming可以支持负载均衡么, 也就是PodX访问PodY的时候,naming不要返回PodY真实IP,而是返回负载均衡的VIP给PodX; 十分感谢-Ken
答:没采用这种方式,后续可以使用vip方式。
15. 这种架构的话,PodX主动出公网的逻辑是怎样的呢,也是通过ip-masq 做NAT吗?
答:这个和百度的内部网络架构有关系。
16. Naming agent是部署在哪个容器?
答:单机的,host部署一个。
17. Pliot在落地过程中部署模型,大规模envoy注册后,是否存在一些性能瓶颈,有什么优化的经验?
答:百度也做了很多pilot的优化,比如100万行的crd配置,大概10s就能够完成匹配。大规模envoy注册的话,连接数变多了,可以通过pilot水平扩展来解决。
18. 虽然老师不一定有关注这一块,但也提个问题看看吧。 envoy流量劫持是在userSpace还要经TCP协议栈其实损耗非常大的,后续Envoy有考虑byPass Kernel,直接传包给网卡驱动提速么(例如DPDK、SPDK)
答:还未大规模进行落地,不过系统真是的瓶颈其实也不再这块。
19. 流量都经过sidecar后,sidecar在trace这方面是怎么考虑和设计的?
答:原生就是智慧trace的,有traceid,spanid这些,只要进行适配就可以。
20. 对于inbound流量的限流是如何设计的呢?
答:这块原生不支持,是通过envoy filter来实现的。
21. 私有协议如果要变更的时候,是不是要级联更新?
答:题目不明确,未回答。
22. 支持服务治理的配置灰度下发吗?可以简单说下实现方案吗
答:目前百度是支持配置灰度的,这个原生不支持,百度自己实现,后续单独发一篇文章讲一下。
23. 你们 内部对于 istio deployment 里的 version 字段在落地时有大规模使用吗?我们最近在基于 istio 做灰度发布,但是每次灰度都要给他一个版本号,导致完成之后 deployment 名称就从 v1 变成 v2 以此累加,这样还会导致 deployment 本身的回滚功能失效。
答:不用非得使用version,还有其他的label标签可以使用或者自定义。
24. Envoy对于我司来说技术储备其实不是很够, 请问贵司刚上线的时候, Envoy有没有遇到哪些问题。 特别是稳定性和故障方面。 如果能建议一下envoy应该如何监控,那就perfect.
答:主要就是靠识别出envoy故障后,能够快速切换到直连方式来解决。
25. 对于 dubbo 的泛化调用,探针会实时检测调用关系的变化么?如果 sidecar 还没有被生成,这个时候流量请求阻塞怎么处理呢?一直等待还是直接拒绝?如果服务是新的请求呢?
答:naming实现,不会出现这种情况,会在sidecar生成后在进行流量转发,否则流量还是直连模式。
26. link模型解决xDS问题,可以再详细介绍一下整个逻辑链路么?例如consumer和provider的link数据是怎么获得的
答:这是百度自己做的一个产品配置页面,提供服务订阅,然后根据订阅关系进行配置下发。
27. 2ms的Envoy额外消耗,请问是怎么查看的呢? curl endpoint 跟 curl envoy 做一次对比么
答:差不多,基本就是直连和过sidecar请求来进行交叉对比。
28. Envoy注入后业务pod会存在2个container, 那么envoy的配额是怎么限制的呢? 比如限制4核心可能就是2个容器(1个pod)里面的配额了; 
答:前面介绍了。
29. 就是我们在落地的时候,会遇到部分服务有sidecar,部分没有(服务A会被其他10个服务调用),一般如何去判断配置设置在哪里,是在outbound(其他10个服务部署sidecar)处还是inbound处(服务A部署sidecar)。这个有没有什么比较好的实践
答:还是naming组件实现,如果能匹配到就过envoy,匹配不到就走直连模式
30. Envoy如何实现长连接的动态开关的?
答:通过开发一个listener,通过listener来监听envoy的长连接,当变更的时候进行控制。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 今天要和大家分享的是关于新一代微服务架构——Service Mesh的具体玩法!在微服务架构盛行的今天,作为一名互...
    风平浪静如码阅读 434评论 0 1
  • Service Mesh新秀,初出茅庐便声势浩荡,前有Google,IBM和Lyft倾情奉献,后有业界大佬俯首膜拜...
    燕京博士阅读 7,027评论 3 19
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,520评论 28 53
  • 信任包括信任自己和信任他人 很多时候,很多事情,失败、遗憾、错过,源于不自信,不信任他人 觉得自己做不成,别人做不...
    吴氵晃阅读 6,180评论 4 8
  • 步骤:发微博01-导航栏内容 -> 发微博02-自定义TextView -> 发微博03-完善TextView和...
    dibadalu阅读 3,125评论 1 3