欢迎来到天天文库
浏览记录
ID:8220097
大小:1.95 MB
页数:34页
时间:2018-03-10
《ArchSummit北京-《基于数据同步的云服务架构实践》-谢乔》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、ArchSummit全球架构师峰会北京站2015基于数据同步的云服务架构实践谢乔@野狗科技大纲与范畴•野狗的数据同步理念•数据同步的架构演进•数据同步的细节问题Schema-free数据存储•树形数据库–像一颗Json树–面向聚合–数据之间的关系更直观•完美的与Url结合–每条数据都能通过url来唯一定位–Path为key,key-value经典云服务野狗是这样的副本的同步数据同步的基本模型•初始化慢同步–fullsync–conditionsync•增量同步–本地best-effort–pusho
2、plog•基于长连接–保证有序性–重连需要初始化慢同步架构演进架构特点•写多读少–写同步越实时越好–读容忍一定延迟•最终一致性•并行写冲突•实时•操作幂等v0.1架构框图•面向早期用户•物化路径存储v0.2架构框图•动态建库,app数据隔离•Mongo提升读写性能•副本集多活•机枪换导弹v0.3架构框图•appId-topic•大大提升写性能•类似Nagle减低写压力•读性能下降解决读的不一致问题•幂等的覆盖模式操作v0.3.1架构框图•keysxxx*引发的血案•需要PerformanceMoni
3、toringPerformanceMonitoring•流量统计•调用延迟•异常报警细节问题大巧不工重剑无锋问题一并发写•静态一致性•写隔离•解决方案–中心化锁机制–进程间协商机制分布式树形锁•注意问题–tryLock/release需要2次交互–注册Lock的有效期–等待Lock超时–动态hash–连接异常时退化性能问题•吞吐量下降–每个app一个树形锁,单进程,终究有吞吐上限–任何操作,包括没有冲突操作,都需要先获得锁•主要性能的点–单次pushsync量大,可以导致阻塞–异步pushsync令
4、人恶心的架构诞生了•缩减了write操作的过程•保证云端与客户端一致性•太过复杂,不确定因素累加过多做技术不能意淫•同一客户端场景–GPS实时定位–模拟游戏手柄的按键–游戏中人物坐标的变化–烟雾报警器实时采集•不同客户端场景–投票、点赞等计数器–拔河游戏–协作文档–智能彩灯上帝的归上帝,野狗的归野狗•用户可配置化–默认不启用–大大减少不必要的开销–降低锁粒度–由appIdhash改进为pathhash问题二push并发冲突•依靠写时的树形锁,达到顺序push的效果问题三顺序一致性•需要保证同一客户端
5、的顺序性–按照clientId散列到datahandler–进程内锁实现顺序性–目标又变成解决write的性能问题四最终一致性•实现最终一致性多client并发写冲突Push给自己•返回数据做diff操作问题五原子性操作•场景–ifthen–i++•自旋锁CAS–本地副本计算hash,与云端hash对比,一致才可以操作。–与云端hash值不一致,则重新load数据到本地,重新上步操作。
此文档下载收益归作者所有