架构师训练营第六周课后总结
分布式理论
分布式系统架构的设计不能缺少对分布式系统理论的理解,以及分布式系统中需要解决问题的理解。
分布式系统最经典的就是CAP原则:
数据一致性问题
系统可用性问题
这两个问题向来都是分布式系统中棘手的问题。
因为在分布式系统中,数据分开存储在各个系统,当单机应用时,为了保证数据一致性,我们使用数据库的事物管理即可,但分布式系统中,普通的数据库事务已经无法为我们保证分布式的事物问题。
可用性问题,单应用时为了保证系统可用,我们只要为该应用多部署几个节点即可,只要不是机器全部宕机,就能够保证可用性,假设一个应用一年中只有一次会出现应用全部宕机,宕机重启需要花费两个小时的时间的话。一年365天*24个小时=8760个小时,其中只有2个小时不可用,那系统的在一年中的可用性就是8758/8760=99.98%,系统的可用性可以达到3个9,可以说是非常高的。
那假如现在这个系统被拆分为了两部分,分成了A应用和B应用,应用一年出现宕机次数是一样的,恢复时间也一样。那现在一年中最低可用时间又会少两个小时,因为两个应用可能不是一起宕机,而只要其中一个应用完全宕机,整个系统实际上就是不可用的。
所以现在可用性就变成了8756/8760=99.95% ,看起来还是3个9,但随着数量的增加,可用性已经在逐渐降低了,现代的的大型互联网中,核心的系统何止两三个,都是二三十个起,假设有20个,那么可用性就已经变成了8720/8760=99.54%,可用性已经从3个9下降到了两个9了。
所以为了保证分布式系统可用性往都是很复杂的,比如集群部署,分机房部署,灾备部署等等,都是为了提高系统的可用性而做的努力。
分布式数据库
数据库存储了我们所有的数据,为了保证数据的可靠,不会因为灾难情况(比如物理机损坏),我们会为数据库备份,为了提高查询性能,我们需要设计主从数据库,主数据库提供写,从数据库提供读,甚至是多个从。
但随着数据越来越多,单个数据库已经难以支撑整体的数据管理,这时候分布式数据库诞生,分布式数据库可以把数据分布式的存储在多个节点中,每个节点存储不同的数据,应用一些hash路由或者其他路由方式来进行数据拆分。
而分布式的系统为了保证数据可靠,也会为每个分布式的数据节点增加从节点。
所以通过以上我们可以看出来,为数据增加从节点总是一种靠谱又简单的提升系统可用性的手段,有些分布式存储系统甚至还允许主节点宕机后,由从节点来担当主节点的功能。
版权声明: 本文为 InfoQ 作者【Cloud.】的原创文章。
原文链接:【http://xie.infoq.cn/article/211d0387a3d1a9be34056f7b6】。未经作者许可,禁止转载。
评论