文档详情

大数据下的状态机实现.pdf

发布:2017-10-02约2.65千字共16页下载文档
文本预览下载声明
⼤数据下状态机实现 Lotuseed-AIDA(⾸席架构师) 背景 常⻅的场景 • 实时流计算 • 批处理的中间结果 • 有上下⽂关系的中间态 • 字典数据 常⻅的痛点 • 回滚⾄某个时间点(BUG) • 性能 • 不能查询历史 • 丢失部分状态数据 设计思路 缓存思路 • 读写⾼效 • 热点数据 • 允许core • 定期清理 存储思路 • 全量存储 • 周期内变更明细 • 明细查询 • merge 实现 逻辑结构(⼀) • cache_state管理服务 ClientsLib • 从队列获取数据批量的存储 到存储服务器 caches queues • 管理数据的merge • ClientsLib库 cache_state • 从性能⾓度出发 data storage • 为了更好的兼容性,可以独⽴ 成⼀个proxy的服务 逻辑结构(⼆) • Caches ClientsLib • memcached、redis, etc. caches queues • Queues • redis、kafka、zeromq, etc. cache_state • data storage data storage • postgresql, etc. ClientLib • state_cache_query • ⾸先查cache • 缓存⽆时查db的状态总表 • state_cache_update • 更新缓存 • push to queue cache_state(⼀) • batch insert to table • 从分组队列中批量获取数据 • 批量的insert到指定的tmp表 • switch • 定时的对临时表进⾏切换 • 在下次切换前,需检查之前的切换后的临时表是否已merge到总表 • merge • 对已切换后的临时表中的数据,把最新的数据更新到总表 cache_state(⼆) • loader • 缓存异常情况 • 服务重启 • cache2db • queue异常情况,把cache⾥最新的state数据 insert到db的临时表 部署结构 app service • 部署的⼏个关键点 (
显示全部
相似文档