欢迎来到天天文库
浏览记录
ID:31520957
大小:3.65 MB
页数:37页
时间:2019-01-12
《分布式系统设计模式》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、分布式系统设计模式汪源内容介绍•目标-介绍一些分布式系统设计思路或经验,非严格意义的设计模式-不求全面,但求最实用•提纲-可伸缩设计模式-高可靠可用设计模式-低成本设计模式可伸缩设计模式伸缩模式(1)scale-downscale-up垂直伸缩scale-inscale-out水平伸缩writewrite读写分离read复制read伸缩模式(2)•垂直伸缩交叉扩容-易于实现-传统观念:不好(规格有限,淘汰损失)节点规格节点数量-基于IaaS云计算:不错系统容量丰富的硬件规格(1-64ECU/64x,1-64GMEM/64x,5G-1T存储/200x)资源共享无浪费20
2、0.00优先进行垂直伸缩,简化系统实现与实施•水平伸缩150.00-伸缩性最佳-难以实现与运维100.00•读写分离50.00-实现难度中等-只适合读多写少的应用0优势:只需要进行1分为N的水平扩容水平分区•哈希分区-推荐:易于规划,易于实现,均衡性一般很好-避免过于trivial的哈希函数(如取模),以免引起分布不均衡教训:DDB(按时间戳分配全局ID导致分布不均衡)•范围分区-一般不推荐:难以规划,均衡性容易出问题-时间分区比较常用•组合分区•自定义分区-例:DDB通过用户自定义.jar包计算纪录的分区号一致性哈希分区策略:HASH%N1缺陷:节点数变化导致数据完
3、全重分布23朴素哈希分区456新增节点30节点3(75~99)0节点2(50~99)节点1(0~49)节点1(0~49)一致性哈希分区优点:节点数变化只导致少量数据重分布50节点2(50~74)50缺点:只分流一个节点的负载,容易不均衡虚拟节点一致性哈希00节点2(50~74,75~99)节点2(67~74,75~99)节点1(0~24,25~49)节点1(0~24,25~33)7525752567345050节点3(34~49,50~66)一个物理节点负责多个虚拟节点,增加节点时从来自于多个物理节点的虚拟节点都分流一部分负载固定分区路由表-事先规划固定数量足够多的分
4、区(相当于虚拟节点),之后只调整分区到物网易DDB理节点的映射关系(即只会迁移整个分区而不分裂分区)-简洁实用-分区数量规划原则>10x最大物理节点数因子数多(60,3600)60=60*1=30*2=20*3=15*4=12*5=10*6=6*10=5*12=4*15数据迁移(1)•DDB数据迁移算法历程-第一代:通过分布式事务进行细粒度迁移,迁移中的分区要合并源和目的结果性能极差,大量死锁,完全不可用-第二代:禁止待迁移分区的访问性能不错,但影响可用性-第三代:基于MySQL复制实现一分为二扩容在线迁移,不影响可用性,性能不错,但伸缩模式受限-第四代:基于MySQ
5、L交叉复制实现多对多伸缩在线,性能不错,伸缩模式灵活,但操作复杂数据迁移(2)•基于复制的高性能在线数据迁移-分区数据隔离(推荐)在目的节点建立待迁移分区数据的复制,等待复制同步后,修改路由信息-分区数据融合在目的节点建立源节点的复制,等待复制同步后,修改路由信息,而后清理不需要的分区数据•路由表版本号-同步修改缓存于所有客户端的路由表困难怎么办?为路由表设置递增的版本号,迁移时增加源节点的路由表版本号客户端请求源节点,发现路由表版本不匹配,同步路由表后正确路由至目的节点无迁移扩容•PB级以上存储需要采用无迁移扩容•元数据库-对象级元数据记录存储位置,元数据与数据分离
6、。数据扩容无需迁移,元数据扩容仍需迁移但数据量小-案例:网易NOS,元数据使用网易DDB,数据使用网易SDFS-凡是没有元数据的海量存储都是耍流氓•分区预留-案例:网易DFS/SDFS文件访问键由系统分配而不是应用程序指定,因此访问键中可以包含分区号事先规划好65536个分区,但不立即启用增加一个物理节点时,启用一批分区分配给该物理节点系统生成文件的访问键时,使用新分配的分区号-适用范围访问键由系统分配且可包含分区号负载在初始分配完成后基本不变高可靠可用设计模式可靠/可用性数据•软件/OS故障:>10%•硬盘故障:8%(参考Google报告)•内存/网卡等故障:1%•
7、交换机故障:<1%可靠性计算:复本•多复本系统综合可靠性(近似):P=pr×tr-1/dr-1-p:单个设备的故障率-d:故障率周期-t:故障恢复时间-r:复本数•增加复本数对提高可靠性最有效•复本数一定时关键在于加快恢复速度可靠性计算:组合•组合系统的综合可靠性:P=1-(1-p)n≈np(np⋘1)-p:单个设备的故障率-n:组合包含的设备数,即组合规模•扩大组合规模伤害系统可靠性,故障率随组合规模线性增长-不建议做很多块磁盘组合的RAID0或RAID1+0•增加复本可靠性三原则•加快恢复•避免组合复本分布与规模效应一对一复制•分布式一对多复制以
此文档下载收益归作者所有