分布式系统学习大纲

写在前面

毕业以来接触了很多行业和技术(云存储, 图像处理, 深度学习, 区块链...),年纪越来越大精力也不是那么充沛,为未来考虑还是要在一个行业深挖,互联网行业无论是区块链,云还是业务后台都要组织大量机器协同工作,分布式系统在其中广泛应用.再综合了自己的兴趣还有技术栈之后决定未来就深耕于云相关行业,所以对于分布式系统知识需要有系统性的掌握和理解.

记录是一个很有用的学习方法,在这里记录自己的学习历程和心得来巩固并向其他人分享.

待解决的问题

单台设备的网络性能,计算性能,存储性能,甚至安全性总是有限的,比如静态资源下载常用的 CDN 技术可以解决单机网络性能不足的问题,两地三中心的3 副本分布式存储技术可以解决单机存储量少且可能丢失的问题.BTC,ETH等区块链系统支持让无限的机器共同维护一个数据库解决了机器间的信任问题...
通过分布式技术可以让许多廉价的机器来解决若干问题,降低成本.同时解决单机不能克服的问题.

数据冗余

分布式系统中有大量机器,家用机器平时很难遇到的断电,断网,磁盘损坏,机器宕机等问题乘以机器规模都是一个不容忽视的问题.因此保证数据不会丢失是分布式系统必须解决的问题.
为了避免因单点异常引发的系统可靠性和高可用问题,可行的办法就是数据冗余,也称为复制集.即将同一数据放置在不同机器,机架,数据中心甚至不同城市和国家.数据有多份副本需要多次读写带来新的问题,假设有三副本:

  • 三个副本有没有主次,可以在所有节点写还是只能在一个节点写
  • 可以在所有节点写入的情况下
    • 如何保证每次写操作顺序正确
    • 每个节点数据如何保证一致
    • 任意节点都能读取到最新的数据吗?
  • 只能在单一节点写入的情况下
    • 主节点和从节点之间的数据同步如何实现?方式是同步还是异步?
    • 从节点能否提供数据读取数据,如果允许,如何保证客户端不会读取到重复或者过时的数据?
    • 主节点的选举机制是怎么样的?

分布式系统的数据冗余(复制集)

一定还有其他问题等待解决,等到遇到新的问题在补充更新

posted @ 2022-03-19 16:22  哪吒young  阅读(83)  评论(0)    收藏  举报