<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>比例分流 :: NJET文档</title>
    <link>https://docs.njet.org.cn/docs/v4.0.1/reference/http/split_client/index.html</link>
    <description></description>
    <generator>Hugo</generator>
    <language>zh</language>
    <lastBuildDate>Mon, 18 Aug 2025 10:15:32 +0800</lastBuildDate>
    <atom:link href="https://docs.njet.org.cn/docs/v4.0.1/reference/http/split_client/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>静态配置</title>
      <link>https://docs.njet.org.cn/docs/v4.0.1/reference/http/split_client/static_split_client/index.html</link>
      <pubDate>Mon, 18 Aug 2025 10:15:26 +0800</pubDate>
      <guid>https://docs.njet.org.cn/docs/v4.0.1/reference/http/split_client/static_split_client/index.html</guid>
      <description>1.功能说明 开源nginx提供了一个流量配比的模块split_clients，但是该模块是根据指定的一个变量值（如客户端ip, url 中的参数等），然后计算Hash 值, 然后根据计算的值在 0 - 2^32-1 的位置来进行流量配比， 无法做到根据请求的数量做概率分布。&#xA;Split Clients 2 模块提供流量配比，是根据概率进行分布， 当访问样本足够大的情况下，与设置的比例基本达到一致, 通过该模块的动态配置，可以实现蓝绿发布（配置比例为 0%， 及 100%）&#xA;Split Clients 2 模块提供了两种方式来进行流量配比：&#xA;静态配置方式：通过静态配置文件实现不同流量配比，分配的百分比，已经配置好，可以在配置文件中进行修改，但需要重新reload才能生效 动态配置方式：通过声明式API实现动态修改流量配比 2.依赖模块 load_module modules/njt_http_split_clients_2_module.so; 3.指令说明 配置指令：&#xA;语法: split_clients_2 $variable { … }；&#xA;默认值:&#xA;允许配置位置: http&#xA;配置样例：&#xA;split_clients_2 $backend { 10% backend1; * backend2; } 配置补充说明：&#xA;静态配置百分比修改后，需要reload才能生效。 百分比一行结束后，如果缺少分号，会导致下一行配比不生效。注意不能缺少分号。 配比分流upstream的数量，限制只能配置两个。 4.配置示例 worker_processes 1; error_log logs/error.log info; load_module modules/njt_http_split_clients_2_module.so; helper broker modules/njt_helper_broker_module.so conf/mqtt.conf; helper broker modules/njt_helper_ctrl_module.so conf/njet_ctrl.conf; events { worker_connections 1024; } http{ dyn_kv_conf conf/iot.conf; split_clients_2 $backend { 10% backend1; * backend2; } upstream backend1 { server 127.0.0.1:18080; } upstream backend2 { server 127.0.0.1:18081; } server { listen 18888; location / { proxy_pass http://${backend}; } } server { listen 18080; location / { return 200 &#34;welcome to 18080 http server\n&#34;; } } server { listen 18081; location / { return 200 &#34;welcome to 18081 http server\n&#34;; } } } cluster_name helper; node_name node1; 可以通过如下脚本实现模拟大样本的流量配比验证。如配比为50%， 请求100次，会在40多到50多区间进行配比，如下。</description>
    </item>
    <item>
      <title>动态配置</title>
      <link>https://docs.njet.org.cn/docs/v4.0.1/reference/http/split_client/dyn_split_client/index.html</link>
      <pubDate>Mon, 18 Aug 2025 10:15:32 +0800</pubDate>
      <guid>https://docs.njet.org.cn/docs/v4.0.1/reference/http/split_client/dyn_split_client/index.html</guid>
      <description>1.依赖模块 数据面需要加载如下模块&#xA;njt_helper_broker_module&#xA;njt_http_split_clients_2_module.so&#xA;2.指令说明 动态配置无特殊的指令， split_clients_2 的配置指令及格式与静态配置一致。&#xA;3.API 3.1 API 列表 查询 接口&#xA;&#39;GET&#39; &#39;http://IP+port/api/v1/config/http_split_clients_2&#39; 修改接口：&#xA;PUT http://IP+port/api/v1/config/http_split_clients_2 3.2 调用样例 使用GET方法获取当前split clients 2 模块的流量配比设置，使用PUT 方法更新流量配比设置。 PUT时使用的报文格式与GET获取到的报文格式一致。&#xA;查询 使用GET方法获取当前split_clients_2的静态配置。&#xA;curl -X &#39;GET&#39; &#39;http://127.0.0.1:8081/api/v1/config/http_split_clients_2&#39; 示例返回： { &#34;http&#34;: { &#34;split_clients_2&#34;: { &#34;backend1&#34;: 10, &#34;backend2&#34;: 90 } } 配置修改 修改PUT方法的配置，对应返回消息提示。&#xA;curl -X &#39;PUT&#39; &#39;http://127.0.0.1:8081/api/v1/config/http_split_clients_2&#39; -d &#39;{ &#34;http&#34;: { &#34;split_clients_2&#34;: { &#34;backend1&#34;: 20, &#34;backend2&#34;: 80 } } }&#39; 结果 { &#34;code&#34;: 0, &#34;msg&#34;: &#34;success.&#34; }</description>
    </item>
  </channel>
</rss>