365bet官网

当前位置: > 365bet >

高干用散布匹式计数器中的并发设计和考虑

时间:2018-10-11 04:42来源:未知 作者:admin 点击:
场景伸见 对实时数据流动以不一纬度终止计数并将结实管到Oracle表中.要寻求到臻以下目的: 实时性拥有要寻求,单并匪是严峻要寻求,根据数据量的父亲小却适当延深 严峻要寻求数据

  场景伸见

  对实时数据流动以不一纬度终止计数并将结实管到Oracle表中.要寻求到臻以下目的:

  实时性拥有要寻求,单并匪是严峻要寻求,根据数据量的父亲小却适当延深

  严峻要寻求数据不符性,即在数据正确的情景下计数的结实应当和尽记载数是不符的

  效力动是却扩展的,充分备止受限于单壹资源的限度局限

  尽能的考虑容错

  效力动设计

  所拥有架构

  实时数据流动接入后由Spark效力动按要寻求终止散布匹式计数,并将计数器的结实写入到Redis集儿子帮中.

  运用Redis集儿子帮却以投降低单个Redis节点的压力.Redis中存放储的是增量的数据.

  同步效力动以壹定的周期从Redis集儿子帮中获取计数器的数据并删摒除计数器的Key,使得计数珍视新末了尾计数.并将结实花样翻新到相干数据库中供事情体系运用.

  架构设计

  牢靠性保障

  1.Spark散布匹式计算+Redis集儿子帮的写入和干用拥有保障,顶持却扩展

  2.Redis集儿子帮顶持原儿子的计数器操干,即兴实证皓是牢靠的摆荡的

  3.同步效力动删摒除Redis key的经过和获取数据的经过却以运用Lua脚丫儿子原本保障整顿个操干的原儿子性

  干用关键点

  Spark到Redis集儿子帮的写并发,当前到来说每秒对壹个节点的写入守陈旧在1W/S+,集儿子帮中更高效

  同步效力动从Redis中获取Key集儿子合的方法,计数器key的数据构造设计,备止运用骈杂数据构造

  从拿到Redis中key的集儿子合到删摒除key获取数据消费的时间

  将数据写入DB消费的时间

  从JVM角度看“同步效力动”

  Redis集儿子帮本身不供对所拥有节点的keys(“match”)操干,且该操干本身会惹宗节点的半途而废,建议针对单个master节点终止keys操干,对JVM到来说却以并发的从多个maser节点中获取对应的key集儿子合

  拿到每个master中的keys后,并发的实行”删摒除&获取流动量数据”的操干

  并发的操干数据库,假设能应尽能的运用批处理写库

  保障壹个同步周期实行完后实行下壹个同步周期,把持上述各个环节的收听候时间和超时时间

  完成关键点

  向Redis写入计数,根据事情设计靠边的key规则,选择适宜的key数据构造即却

  设计保障壹个同步周期完成后下壹个周期才却以末了尾,却以运用合锁(CountDownLatch)、Future等语意到来完成,应当妥善的处理超时. (责任编辑:admin)

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表