需求

5w用户->每个用户有n个预警条件=5w*n个预警条件

方案

常规

  • 监控节点集群

    • 拿到预警条件(持久化到mysql)
    • 同步数据源(3秒调度,从行情计算取快照)
    • 监控是否满足达到预警条件(一个预警算一个计算线程)
    • 发送满足条件的信息

实操过程中的问题

  • 持久化存储量级大,单库受不了,数据查询慢
  • 内存,cpu消耗大(线程增量无法控制)
  • 数据源有延迟,影响监控结果实时性

优化

  • 分门别类,分而治之

    • 从业务角度划分(例如,股价+领域)
    • 不同节点负责不同划分的功能业务
    • 同时只获取相关的信息
  • 数据源由行情推送消息

    • 数据源时效性高
    • 牵连伙伴团队,后续改进

现有问题

  • 预警怎么分

    • 分得依据策略(从业务角度,能否抽象出策略)
    • 谁来分(可以有一个专有角色—注册中心,可以由各个节点分饰)
  • 无状态

    • 优雅上下线
    • 弹性伸缩
    • 自动容灾

知识储备

分布式术语

  • 端到端一致性end to end Consistency

    • 代表的是业务的正确性
  • Effective once msg processing 有效的一次处理

    • 是说在分布式中业务只正确的进行一次