linkerd2 php 微服务,在 Linkerd2 中进行流量拆分
最新发布的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 中进行流量拆分相关推荐
- 微服务分布式架构中,如何实现日志链路跟踪
摘要:接口设计出来返回结果值和编码,还有哪些是需要我们优化的结果参数?微服务分布式架构中,如何实现日志链路跟踪? 本文分享自华为云社区<微服务分布式架构中,如何实现日志链路跟踪?>,作者: ...
- 微服务分布式架构中,如何实现日志链路跟踪?
本文主要讲解了spring cloud微服务使用Feign作为微服务间的通讯框架的情况下,如何使用统一的日志ID来追踪一次请求日志,高效排查日志.核心解决了以下问题: 1.代码无入侵 2.线程池(主/ ...
- 微服务引擎的线上流量治理最佳实践
简介:本实践将重点介绍如何快速集成主流开源微服务框架,实现业务零改造,解决开源框架在生产落地过程中的痛点,例如无损上下线.标签路由等,并通过托管微服务开源组件(API网关.注册中心.配置中心等)的服务 ...
- 请不要在“微服务”的狂热中迷失自我!
2017年是"微服务"疯狂的一年,如同股灾前的狂欢,各种不同行业的技术团队都在宣讲着自己微服务实践的道路.然而大家是否有反思过自己真的在玩"微服务"吗?您真的在 ...
- 微服务分布式架构中,如何高效收集请求/响应日志
本文主要讲述了spring cloud微服务使用Feign作为微服务间的通讯框架的情况下,如何配置统一的日志打印,能更直观地在日志中收集有效信息. (以下只提供了核心代码截图,详细代码可通过githu ...
- 微服务改造过程中那些必须重视的问题
"微服务"近几年尤其火热,各大厂都在进行微服务化改造和微服务建设,想享受微服务化带来的好处以便对自己的系统进行改造.分布式实验室特约记者李鹏采访了广州轻阅科技系统架构师陈珙,就微服 ...
- 软件架构-zuul微服务网关(中)
咱们今天继续说springcloud的zuul.在最早我们是没有网关这个概念的,微服务搭建起来后,客户端就直接访问一个个微服务了,这些方式有很多的弊端,上次都说了,针对这些弊端,我们用一种什么样的方式 ...
- 微服务系统设计(一) -- 如何拆分服务
在做微服务设计的时候,很大的一个难题就是服务的拆分,很多人都不知道在什么情况拆分服务,在什么情况下不应该拆分服务,所以设计的系统可能会很臃肿,如果遇到业务扩展,之前设计的架构不能满足业务扩增后的需求, ...
- 互联网大厂的微服务架构系统应对超大流量解决方案
常见的限流方式有: 限制总并发数(数据库连接池.线程池等等) 限制瞬时并发数(如Nginx的limit_conn模块) 限制时间窗口的平均速率(如Guava的RateLimiter.Nginx的lim ...
最新文章
- Python十大装腔语法
- JS中toFixed()方法的问题及解决方案
- 延时消息_手把手实现一条延时消息
- CDN(内容分发网络)技术原理(转)
- easyui validatebox 验证类型
- 《深入理解Nginx》 学习笔记(二)
- [网络安全自学篇] 八十五.《Windows黑客编程技术详解》之注入技术详解(全局钩子、远线程钩子、突破Session 0注入、APC注入)
- 射频功率dbm-w换算表
- 201621123068 Week02-Java基本语法与类库
- 使用tftpd32烧写内核(拯救你的“砖”)
- linux漏洞分析,Spring-data-commons(CVE-2018-1273)漏洞分析
- JAVA接入微信刷脸支付分支付【V2、V3两种接入都有提供】
- 程序员职业技能编写_程序员不需要的不需要编写代码的技能
- 删除共享文件凭据脚本
- 【已解决】LaTeX调整图片大小
- 转生活中的各种食品安全问题
- 将base64转换为图片
- 云计算的基本特征,主要有哪些?
- 关于 Microsoft Visual Studio
- 【长句分析】2019.7.25