• Dubbo 3 StateRouter:下一代微服务高效流量路由


    云原生场景下,几千、上万乃至十万节点的集群已经不再罕见,如何高效实现这种大规模环境下的选址问题已经成为了必须解决的问题。

    流量路由场景

    流量路由,顾名思义就是将具有某些属性特征的流量,路由到指定的目标。流量路由是流量治理中重要的一环,多个路由如同流水线一样,形成一条路由链,从所有的地址表中筛选出最终目的地址集合,再通过负载均衡策略选择访问的地址。开发者可以基于流量路由标准来实现各种场景,如灰度发布、金丝雀发布、容灾路由、标签路由等。

    路由选址的范式如下:target = rn(…r3(r2(r1(src))))

    下面将借着介绍 OpenSergo 对于流量路由所定义的 v1alpha1 标准,来告诉大家实现流量路由所需的技术。

    OpenSergo 流量路由 v1alpha1 标准

    流量路由规则(v1alpha1) 主要分为三部分:

    • Workload 标签规则 (WorkloadLabelRule):将某一组 workload 打上对应的标签,这一块可以理解为是为 APISIX 的各个上游打上对应的标签
    • 流量标签规则 (TrafficLabelRule):将具有某些属性特征的流量,打上对应的标签
    • 按照 Workload 标签和流量标签来做匹配路由,将带有指定标签的流量路由到匹配的 workload 中

    我们可以赋予标签不同的语义,从而实现各个场景下的路由能力。

    给 Workload 打标签:

    我们对新版本进行灰度时,通常会有单独的环境,单独的部署集。我们将单独的部署集打上 gray 标签(标签值可自定义),标签会参与到具体的流量路由中。

    我们可以通过直接在 Kubernetes workload 上打 label 的方式进行标签绑定,如在 Deployment 上打上 traffic.opensergo.io/label: gray标签代表灰度。对于一些复杂的 workload 打标场景(如数据库实例、缓存实例标签),我们可以利用 WorkloadLabelRule CRD 进行打标。示例:

    apiVersion: traffic.opensergo.io/v1alpha1
    kind: WorkloadLabelRule
    metadata:
      na
  • 相关阅读:
    刨根问底 Redis, 面试过程真好使
    [Kotlin Tutorials 21] 协程的取消
    mysqlbinlog 日用记录
    flutter 设置缓存的方法
    mysql与msql2数据驱动
    12寸和8寸封装线的差异点
    【翻译】Raft 共识算法:集群成员变更
    CSV文件打开乱码解决方案
    pyqt生成.py文件和资源打包
    CSS样式
  • 原文地址:https://blog.csdn.net/AS011x/article/details/126744369