1. 上下行隔离拆分
在 IoT 场景中,我们把需要队列分为两个场景,一个是上行队列,一个是下行队列。拆分之后,可以隔离上下行链路,控制一个设备,比如支付成功要下发打开柜子等,上行出任何问题,千万不能影响到下行业务。另外,上下行两条链路的特点差异非常大。设备上行消息,并发量非常高,但很多场景下对于可靠性和时延要求低,而设备下行消息,并发量则比较低,但下行消息(一般是控制设备指令)要求到达成功率很高。
2. 支持设备级的海量 topic
传统队列的核心诉求是,不论堆积多少不影响它的性能。kafka 的 topic 一多,原本消 息顺序写文件优势就会导致一个 broker 要退化到随机写,失去优势,另外要 zookeeper 来协调这么多 topic 也是有局限,所以这些队列本身有提供一个外挂代理桥接器对外入口是 多个设备 topic,再桥接映射到少量的实际 kafka topic,这方案有一定可行性,但做不到 隔离效果,治标不治本。
通过,图 1 和图 2 对比较明显,一个队列拥塞尽量减少对其它设备影响。我们需要的 是“海量 topic 尽量相互隔离,并且不影响整体性能”,尽量做到设备 A 的消息堆积 topic,不影响设备 B。
3. 实时生成消息优先发送
先举一个例子,一个快递柜业务的队列堆积,然后“此时此刻”在柜子旁边的用户死命 的在旁边用手机点开柜子怎么也打不开(此时后端系统都恢复了),问题就是队列里面还有 几十万条的消息,新来的消息需要排队, 等着之前的那些消息消费完,甭管这些消息还有没 有用。 因此,实时生成消息优先发送,堆积的消息进入降级模式。
资料来源:电子书《AIoT 物联网开发实战(上)》,下载链接:
https://developer.aliyun.com/topic/download?id=1147
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。