最新发布的Linkerd 2.4,加入了对流量拆分的支持。

安装最新版本之后,可以看到这个流量拆分功能所使用的 API 资源并非来自 Linkerd,而是 SMI 规范的一部分。$ curl -sL https://run.linkerd.io/install | sh

...

$ kubectl api-resources | grep -i split

trafficsplits ts split.smi-spec.io true TrafficSplit

和 Istio 的 Service + Selector 的拆分方式不同,Linkerd 其实没有什么特别的上游定义方式,简单的定义独立的 Service 即可。例如我们要从 flaskapp 服务分流到 v1 和 v2 两个版本,在 Istio 中,需要定义一个 flaskapp 服务,然后使用标签,在 Service 的标签子集中,选择两组 Subset 作为目的地。而在 Linkerd/SMI 中,就需要分别定义三个服务了,例如 flaskapp、flaskapp-v1、flaskapp-v2。下面简单操练一下。$ wget https://raw.githubusercontent.com/fleeto/istio-for-beginner/master/code/flaskapp/flaskapp.istio.yaml

$ linkerd inject flaskapp.istio.yaml | kubectl apply -f -

...

$ wget https://raw.githubusercontent.com/fleeto/istio-for-beginner/master/code/sleep/sleep.yaml

$ linkerd inject sleep.yaml | kubectl apply -f -

...

分别安装了两个版本的 flaskapp,和一个版本的 sleep 服务之后。再创建两个 flaskapp 的分版本服务。apiVersion: v1

kind: Service

metadata:

name: flaskapp-v1

labels:

app: flaskapp

spec:

selector:

app: flaskapp

version: v1

ports:

- name: http

port: 80

targetPort: 80

---

apiVersion: v1

kind: Service

metadata:

name: flaskapp-v2

labels:

app: flaskapp

spec:

selector:

app: flaskapp

version: v2

ports:

- name: http

port: 80

targetPort: 80

创建两个服务之后,就可以尝试拆分了,同样是一个 YAML:apiVersion: split.smi-spec.io/v1alpha1

kind: TrafficSplit

metadata:

name: flask-split

spec:

service: flaskapp

backends:

- service: flaskapp-v1

weight: 1

- service: flaskapp-v2

weight: 500m

注意这里的定义和 Istio 也稍有不同,使用权重而非百分比进行分流。

可以在 Sleep 中进行测试:$ for i in {1..1000}; do curl -sSL http://flaskapp/env/version | grep v1; done | wc -l

660

可以看到,按照我们的权重分配,成功进行了分流。但是目前在 SMI 中并没有看到条件选择的相关内容,因此目前的功能可能还比较初级。可以通过 Flagger 的加持,实现更加复杂的功能。

linkerd2 php 微服务,在 Linkerd2 中进行流量拆分相关推荐

  1. 微服务分布式架构中,如何实现日志链路跟踪

    摘要:接口设计出来返回结果值和编码,还有哪些是需要我们优化的结果参数?微服务分布式架构中,如何实现日志链路跟踪? 本文分享自华为云社区<微服务分布式架构中,如何实现日志链路跟踪?>,作者: ...

  2. 微服务分布式架构中,如何实现日志链路跟踪?

    本文主要讲解了spring cloud微服务使用Feign作为微服务间的通讯框架的情况下,如何使用统一的日志ID来追踪一次请求日志,高效排查日志.核心解决了以下问题: 1.代码无入侵 2.线程池(主/ ...

  3. 微服务引擎的线上流量治理最佳实践

    简介:本实践将重点介绍如何快速集成主流开源微服务框架,实现业务零改造,解决开源框架在生产落地过程中的痛点,例如无损上下线.标签路由等,并通过托管微服务开源组件(API网关.注册中心.配置中心等)的服务 ...

  4. 请不要在“微服务”的狂热中迷失自我!

    2017年是"微服务"疯狂的一年,如同股灾前的狂欢,各种不同行业的技术团队都在宣讲着自己微服务实践的道路.然而大家是否有反思过自己真的在玩"微服务"吗?您真的在 ...

  5. 微服务分布式架构中,如何高效收集请求/响应日志

    本文主要讲述了spring cloud微服务使用Feign作为微服务间的通讯框架的情况下,如何配置统一的日志打印,能更直观地在日志中收集有效信息. (以下只提供了核心代码截图,详细代码可通过githu ...

  6. 微服务改造过程中那些必须重视的问题

    "微服务"近几年尤其火热,各大厂都在进行微服务化改造和微服务建设,想享受微服务化带来的好处以便对自己的系统进行改造.分布式实验室特约记者李鹏采访了广州轻阅科技系统架构师陈珙,就微服 ...

  7. 软件架构-zuul微服务网关(中)

    咱们今天继续说springcloud的zuul.在最早我们是没有网关这个概念的,微服务搭建起来后,客户端就直接访问一个个微服务了,这些方式有很多的弊端,上次都说了,针对这些弊端,我们用一种什么样的方式 ...

  8. 微服务系统设计(一) -- 如何拆分服务

    在做微服务设计的时候,很大的一个难题就是服务的拆分,很多人都不知道在什么情况拆分服务,在什么情况下不应该拆分服务,所以设计的系统可能会很臃肿,如果遇到业务扩展,之前设计的架构不能满足业务扩增后的需求, ...

  9. 互联网大厂的微服务架构系统应对超大流量解决方案

    常见的限流方式有: 限制总并发数(数据库连接池.线程池等等) 限制瞬时并发数(如Nginx的limit_conn模块) 限制时间窗口的平均速率(如Guava的RateLimiter.Nginx的lim ...

最新文章

  1. Python十大装腔语法
  2. JS中toFixed()方法的问题及解决方案
  3. 延时消息_手把手实现一条延时消息
  4. CDN(内容分发网络)技术原理(转)
  5. easyui validatebox 验证类型
  6. 《深入理解Nginx》 学习笔记(二)
  7. [网络安全自学篇] 八十五.《Windows黑客编程技术详解》之注入技术详解(全局钩子、远线程钩子、突破Session 0注入、APC注入)
  8. 射频功率dbm-w换算表
  9. 201621123068 Week02-Java基本语法与类库
  10. 使用tftpd32烧写内核(拯救你的“砖”)
  11. linux漏洞分析,Spring-data-commons(CVE-2018-1273)漏洞分析
  12. JAVA接入微信刷脸支付分支付【V2、V3两种接入都有提供】
  13. 程序员职业技能编写_程序员不需要的不需要编写代码的技能
  14. 删除共享文件凭据脚本
  15. 【已解决】LaTeX调整图片大小
  16. 转生活中的各种食品安全问题
  17. 将base64转换为图片
  18. 云计算的基本特征,主要有哪些?
  19. 关于 Microsoft Visual Studio
  20. 【长句分析】2019.7.25

热门文章

  1. node下载文件 解压压缩包
  2. CS231n课程笔记翻译9:卷积神经网络笔记
  3. 企业最需要的邮件服务器5大功能模块
  4. 用一个开关,控制LEP灯的亮和灭
  5. 大一新生必看,自学必看,里昂详解数据结构之二叉树
  6. 【ResNet残差网络解析】
  7. iOS性能测试怎么做?这款工具轻松稿定
  8. Mybatis Plus 多租户架构(Multi-tenancy)实现
  9. 臻色调女装官网评价:专业人士展示行业数据
  10. php中mysql_assoc,在PHP中使用mysql_fetch_assoc时出现警告