需求
5w用户->每个用户有n个预警条件=5w*n个预警条件
方案
常规
监控节点集群
- 拿到预警条件(持久化到mysql)
- 同步数据源(3秒调度,从行情计算取快照)
- 监控是否满足达到预警条件(一个预警算一个计算线程)
- 发送满足条件的信息
实操过程中的问题
- 持久化存储量级大,单库受不了,数据查询慢
- 内存,cpu消耗大(线程增量无法控制)
- 数据源有延迟,影响监控结果实时性
优化
分门别类,分而治之
- 从业务角度划分(例如,股价+领域)
- 不同节点负责不同划分的功能业务
- 同时只获取相关的信息
数据源由行情推送消息
- 数据源时效性高
- 牵连伙伴团队,后续改进
现有问题
预警怎么分
- 分得依据策略(从业务角度,能否抽象出策略)
- 谁来分(可以有一个专有角色—注册中心,可以由各个节点分饰)
无状态
- 优雅上下线
- 弹性伸缩
- 自动容灾
知识储备
分布式术语
端到端一致性end to end Consistency
- 代表的是业务的正确性
Effective once msg processing 有效的一次处理
- 是说在分布式中业务只正确的进行一次