WQS

消息服务中间件
授权协议 Apache 2.0
开发语言 Google Go
所属分类 服务器软件、 JMS/消息中间件
软件类型 开源软件
地区 国产
投 递 者 颛孙高义
操作系统 跨平台
开源组织 新浪微博
适用人群 未知
 软件概览

WQS 是微博开源的消息服务中间件。

功能特性

  1. 多租户支持;

  2. 多 IDC 支持;

  3. 多协议支持 memcached、http 1/2、motan

  4. 轻客户端。(去 zk 依赖、无 partition 感知)

  5. 支持 pub/sub、long polling、pipeline;

  6. 支持 TTL;

  7. 支持 filter。

多 IDC 部署

WQS 目前支持多 IDC 部署,创建队列时选取响应的配置表明该队列是否需要多 IDC 功能支持,当 WQS 集群跨 IDC 部署时:

  • Producer 通过 WQS 实例写消息会时写到与自身实例部署在同一 IDC 内的 Kafka 集群上。

  • Consumer 通过 WQS 实例读消息时,该实例会根据 Queue 的配置来执行响应的行为。

    • 当 Queue 未配置多 IDC 同步时,该实例只会从该实例部署的 IDC 的 Kafka 集群中读取消息

    • 当 Queue 配置多 IDC 同步时,该实例会从用户所配置的 IDC 内的 Kafka 集群上读取消息,且不同 IDC 的 WQS 实例读取同一 Kafka 集群时,会采用相同的 consumer-group-ID。

相关配置

为兼容老版本配置,则本地 IDC 的 Kafka 配置为:

kafka.zookeeper.connect=localhost:2181
kafka.zookeeper.root=
#本地IDC的名称,只能是英文字母和数字
kafka.idc=idc

其他 IDC 的配置为:

kafka.remote.<your idc name>.zookeeper.connect=xxx.xxx.xxx.xxx:2181/

例如远端 IDC 的名称为abc则:

kafka.remote.abc.zookeeper.connect=xxx.xxx.xxx.xxx:2181/

创建队列

如果你要创建一个队列,要支持多 IDC 数据同步,队列名为abc,IDC分别为idc1idc2,则创建命令为

curl -X PUT "http://127.0.0.1:8080/queues/abc" -d '{"idcs":["idc1","idc2"]}'
  • 浅谈 Wqs 二分 主要是今天写 「九省联考 2018」林克卡特树 的时候遇到了,就学一下。 使用条件 题目中对于一种 D p \tt Dp Dp 有限制,但是如果没有限制,其复杂度是正确而且很好求的。举个例子来说: 将一棵树划分成 k k k 条链,我们 D p \tt Dp Dp 的时候只需要记录当前节点是否被匹配过,以及是否正在被匹配即可,而且我们还要考虑总共有几条链,进行划分。但是如果不考

  • P2619 [国家集训队]Tree I(wqs二分) wqs是一个大佬,wqs二分是基于 凸包型的问题,斜率的二分。 本题设 ( x , g ( x ) ) (x,g(x)) (x,g(x)) 表示恰好选择 x x x条白边,对应最小MST的权值和 g ( x ) g(x) g(x)。 可以用平方的dp 证明该函数形状是个下凸的。 然后就可以上wqs二分了。 我们二分增量,也就是直线的斜率,在本题

  • 四边形不等式 wqs二分 论DP的各种优化 [APIO/CTSC 2007]数据备份 f x , 0 = m i n ( f x − 1 , 0 , f x − 1 , 1 ) f_{x,0}=min(f_{x-1,0},f_{x-1,1}) fx,0​=min(fx−1,0​,fx−1,1​) f x , 1 = f x − 1 , 0 + d i s x + c f_{x,1}=f_{x-1,

  • 题意 给定一个长度为n的序列,把它划分成m段,每段的和为 w i w_i wi​ 并给定一个参数p,要求最小化 ∑ i = 1 m ( w i + p ) 2 \sum_{i=1}^{m}(w_i+p)^2 ∑i=1m​(wi​+p)2 分析 先把平方拆开, a n s = m p 2 + 2 p ∑ i = 1 n a i + ∑ i = 1 m w i 2 ans=mp^2+2p\sum_{i

  • 问题类型 形如“恰好取 k 个……时的最优答案(并非具体方案)”的问题。 保证存在合法方案。 WQS二分思路 我们先把限制去掉,这时候最终的方案肯定不一定取了 k 个该物品, 假设最优方案该物品个数更小,我们可以每取一个该物品就加一份额外贡献(宏观调控!)来使最终方案的该物品个数增加,若最优方案该物品个数比 k 大,我们可以每取一个该物品就算上一份额外花费来使最终方案的该物品个数减少。 总的来说,

  • 又来写学习记录啦! 今天一早上起来就开始莫名emo,感觉林克卡特树还是不会什么的。 真的,好烦,好难受。 没事,哼,再怎样才浪费一个小时而已,还有大把的美好时光,好好享受信竞带来的乐趣吧! 而且也不要一emo就开始觉得考不上了什么的,这一个月,只是帮助你奔赴所爱的事物,结果如何,不必太放在心上。作息调整得规律些,休息的时候健康些,自我怀疑也会少一些的。 还有,待办绝不是牢笼,它只是一个辅助你的工具

  • 所谓wqs,就是windwhisper说:“qs” (逃) 解析 很神奇的科技。 四两拨千斤的解决一些本来可能不太好解决的问题。 经典模型:有若干个物品,要求选出 m m m 个,选的时候带有限制,求最优的方案。 这个正常 dp 常常需要加一维记录个数,复杂度 O ( n 2 ) O(n^2) O(n2) 难以通过。 设 f ( x ) f(x) f(x) 表示选 x x x 个元素的最优答案,那

  • 传送门:http://codeforces.com/gym/101981 查题解看到这题有个wqs二分,去学习了一蛤,做了道板题,再来看这题发现还不够,于是对着代码理解了好久的决策单调性。 18年寒假我做过一道一模一样的题POJ1160,没想到南京这场竟然有原题,不过那个是O(n^3)过的,这个是O(nlognlogn)才能过。 首先如果要直接DP的话,我们需要设f[i][j]表示前i个地方选j个

  • wqs二分的一些细节 wqs二分的本质 我们要求一个答案函数 f [ x ] f[x] f[x]中一个特定点的值。 f [ x ] f[x] f[x](即函数值)是有特殊限制的下求出的答案(特殊限制即变量 x x x)。 f f f是一个凸函数(凸包)。 如果我们可以构造一个函数 g [ x ] g[x] g[x](作为截距)使它没有特殊限制,并且可以轻易计算(一般通过对限制的选项加权,来构造函数

  • 最小划分 题目链接:YBT2022寒假Day9 A 题目大意 给你一个序列,你要把它划分成 m 个连续的段,以最小化这个东西: 把每一段的数和表示为 w[i],则要最小化每个 (w[i]+p)^2 的和。 思路 首先你发现这个 p p p 是没有关系的,你完全可以把它拆开来。 变成 p 2 ∗ m + 2 ∗ s n ∗ p p^2*m+2*s_{n}*p p2∗m+2∗sn​∗p。 ( s i

  • 传送门 题意: 给你一个 n n n个点 m m m条边的图,每个边有一个代价以及折扣价,你需要输出 n n n行,第 i i i行代表你可以选 i − 1 i-1 i−1条边使其变成优惠价,问每次的最小生成树的代价是多少。 n ≤ 1 e 3 , m ≤ 2 e 5 , c i , d i ≤ 1 e 3 n\le 1e3,m\le2e5,c_i,d_i\le 1e3 n≤1e3,m≤2e5,c

  • 点此看题面 大致题意: 你有两种捕捉球(分别为 A A A个和 B B B个),要捕捉 n n n个神奇宝贝,第 i i i个神奇宝贝被第一种球捕捉的概率是 s 1 i s1_i s1i​,被第二种球捕捉的概率是 s 2 i s2_i s2i​,问在最优策略下期望捕捉到的神奇宝贝数量。 W Q S WQS WQS二分 这应该是一道比较经典的 W Q S WQS WQS二分题(毕竟是 W Q S W

  • 题目链接:点我啊╭(╯^╰)╮ 题目大意:      n n n 个神奇宝贝, a a a 个宝贝球、 b b b 个超级球     宝贝球抓到第 i i i 个神奇宝贝的概率为 p i , p_i, pi​, 超级球为 u i u_i ui​     求最大期望个数 解题思路:     很明显 n 3 n^3 n3 的 d p dp dp 很蠢     考虑到这里 恰好用 b b b 个超级球

  • Tree I 题目链接:luogu P2619 题目大意 给你一无向连通图有黑白两种边,然后每个边有边权,要你找一个权值和最小的生成树使得恰好有 x 条白边,然后保证一定有解。 思路 首先我们先试着直接建生成树,那会有什么问题呢? 有可能刚好,有可能是黑边的数量多了,也可能是白边的数量多了。 那为什么黑边 / 白边的数量可能偏多呢? 因为它们在所有边中整体相对偏小,然后就选到它们的个数更多。 那我

 相关资料
  • 在我的聊天应用程序中,每当用户收到新消息时,我使用FCM和Firebase功能发送通知。 为此,我有一个FirebaseMessagingService,它覆盖了。除此之外,此服务还覆盖。每当用户第一次启动应用程序时,就会调用,我检索一个新令牌并将其存储在Firebase实时数据库中。 然后我去和一些用户聊天(不关闭应用程序)。当我收到新消息时,我会收到通知。调用。 问题是,当我关闭应用程序,然后

  • BeX5消息服务详解(V3.2.1)视频: 视频:https://pan.baidu.com/s/1sls5c9B 配置 1.\conf\server.xml中 <mqtt-server>tcp://localhost:1883</mqtt-server>  配置消息服务地址 <external-address>http://demo.justep.cn</external-address>配置应

  • BeX5消息服务详解(V3.2.1)视频: 视频:https://pan.baidu.com/s/1sls5c9B 配置 1.\conf\server.xml中 <mqtt-server>tcp://localhost:1883</mqtt-server>  配置消息服务地址 <external-address>http://demo.justep.cn</external-address>配置应

  • 主要内容:1 ReputMessageService消息重放服务,2 doReput执行重放,2.1 isCommitLogAvailable是否需要重放,2.2 getData获取重放数据,2.3 checkMessageAndReturnSize检查消息并构建请求,2.4 doDispatch分发请求,3 总结基于RocketMQ release-4.9.3,深入的介绍了Broker 消息重放服务ReputMessageService源码。 CommitLog文件顺序存储着所有的消息,理论上

  • 问题内容: 我在示例的底部创建了一个运行在端口3000上的小型服务器。您可以通过“ htto:// localhost:3000 / time”访问它。整个请求包含两个中间件。第一个“ cancelHandler”和第二个“ otherHandler”被调用-在4秒钟后响应一些虚拟数据。 对我的问题: 当我在浏览器中请求页面,然后取消请求时(在4秒之前)。服务器仍在后台处理goroutine /请

  • 我的应用程序在服务器上发生某种事件后接收推送通知。 除了在一小段时间内有许多事件一个接一个地发生的情况外,一切都很正常。 设备上的Firebase令牌也是正常的,因为应用程序从Firebase控制台接收通知。