阅读笔记(十)

虚拟订单中心的核心功能主要围绕数据搬运工(Hamal)产品运行, Hamal 是京米依托开源项目研发的 MySQL 数据库 binlog 监听产品,在保证高可用的前提下实现了高指标的监听转换过程。

binlog 是 mysql 数据库开启 Row 模式时提供的二进制日志,以 binlogEvent 形式记录对数据发生或潜在发生更改(事务开启)的 SQL 语句和数据,类似于 oracle 数据库的归档日志,可以用来查看数据库的变更历史、数据库增量备份和基于时间点的恢复及 Mysql 的复制等。

Hamal 作为虚拟订单中心数据管道的入口,其首要的任务是保证数据库数据变动的精准消费,因此必须谨慎设计 binlog 的消费记录和异常消费后续处理机制等。

 

健壮性和高可用 Hamal 使用 zookeeper 集群管理监听实例和记录 binlog 的消费位置信息。对于目标库,多个 Hamal 实例在启动时抢占该库的映射节点以获取监听权限,落选的实例则以热备份形式监听 zk 对应节点 binlog 位置信息,在遭遇服务不可用或宕机时,迅速通过抢占接力监听服务和 binlog 信息;Hamal 也支持同时监听目标库的多个目标从库,幂等的消费 binlog 以防止目标库单节点宕机故障。由此,多重防灾机制力保服务的72小时高可用及数据的完备性,目前稳定提供日监听千万行记录,从未抛弃过一条订单。

作为数据管道出口,订单网关系统(GW)对外提供了可定制模版数据或消息数据订阅、数据分页查询、订单搜索统计等服务,是对接数据应用的关键环节。网关系统实现了非常完备且强悍的多级平滑搜索过程,当订单搜索超时或失败时立刻跳转到下级搜索,降级搜索的结果反补上级数据源;如果虚拟订单中心检索失败,搜索会落地到产品线数据库做最终检索,检索成功则会反补该订单到订单中心的各级存储中,检索失败则必然是单号有误;当虚拟订单服务完全不可用时,网关搜索将直接降级到原产品线生产数据库拉取订单数据。多级检索方案,保证最完善的用户体验!

原文部分转载:

京东虚拟业务多维订单系统架构设计

posted @ 2019-05-14 14:32  胖虎ydy  阅读(102)  评论(0编辑  收藏  举报