构建分布式系统时,我们所关注的是计算、存储、通信这三项。
常常用于构建分布式系统的工具是RPC和线程。其中RPC的目标就是掩盖我们正在不可靠网络上通信的事实,而线程提供了并发操作的方式。因此,在实现分布式系统的时候需要花一定的时间来考虑多线程的并发控制。
可扩展性(scalability):我们希望可以通过增加机器的方式来实现扩展,假如仅仅通过增加机器就可以获得更高得性能,那么称这个系统具有可扩展性。但是这现实中这很难实现,需要一些架构设计来将这个可扩展性无限推进下去。
可用性:在出现特定的错误类型的情况下,系统仍然可以继续提供完整的服务,就像没有发生错误一样。
可恢复性:出现错误,系统停止服务,但经过修理之后仍然可以提供服务。这是一个比可用性更弱的要求。
一个好的可用性系统,在出现了大量错误的时候也会停止工作,因此也应该是可恢复的。为了实现这些特性,可以借助的工具有:非易失性存储、复制(replication)。
一致性:指的是当系统中有多个repliacation的时候,请求任意副本中的数据都会得到一致的结果。
一致性分为强一致性和弱一致性。强一致性也称为线性一致性,请求的处理与replication的更新是同步的,而弱一致性是异步的。强一致性可以保证从库有与主库一致的数据。如果主库突然宕机,我们仍可以保证数据完整。但如果从库宕机或网络阻塞,主库就无法完成写入操作。强一致性需要大量的网络通信才能达到。因此工业上常常使用弱一致性。在实践中,我们通常使一个从库是同步的,而其他的则是异步的。如果这个同步的从库出现问题,则使另一个异步从库同步。这可以确保永远有两个节点拥有完整数据:主库和同步从库。 这种配置称为半同步。
标签:主库,同步,可扩展性,分布式系统,一致性,从库 来源: https://www.cnblogs.com/MiaoMiaoGarden/p/15734161.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。