【本文仅代表作者个人观点,欢迎吐槽,欢迎转载(转载请标明来源)!】
最近一直在忙着搭建solr的分布式环境,对分布式系统的认识又多了一些,抽空总结一下:
在分布式系统设计过程中,常见的如使用客户端hash来进行sharding,使用replicaiton机制来实现backup和loadbalance,在这些东西的背后,设计一个分布式系统又需要考虑哪些东西呢?
CAP理论是分布式设计设计的基础理论:Consistency(一致性),Availability(可用性),Partition tolerance(分布)三部分在设计系统时只可满足2中,不能3者兼顾。
Base理论:Basically Availble –基本可用,Soft-state –软状态/柔性事务,Eventual Consistency –最终一致性。
最终一致性:最终结果必须保持一致性。
I/O五分钟法则:如果一条记录频繁被访问,就应该放到内存里,否则的话就应该待在硬盘上按需要再访问。
几种常见的手段:
1.一致性hash:一致性哈希算法(Consistent Hashing Algorithm)是一种分布式算法,常用于负载均衡.网上例子很多,可以上网搜下。
2.Quorum NRW:N: 复制的节点数量,R: 成功读操作的最小节点数,W: 成功写操作的最小节点数,只需W + R > N,就可以保证强一致性。
3.Vector clock:vector clock算法。
4.Virtual node:虚拟节点,常与一致性hash相结合。
over!
最近一直在忙着搭建solr的分布式环境,对分布式系统的认识又多了一些,抽空总结一下:
在分布式系统设计过程中,常见的如使用客户端hash来进行sharding,使用replicaiton机制来实现backup和loadbalance,在这些东西的背后,设计一个分布式系统又需要考虑哪些东西呢?
CAP理论是分布式设计设计的基础理论:Consistency(一致性),Availability(可用性),Partition tolerance(分布)三部分在设计系统时只可满足2中,不能3者兼顾。
Base理论:Basically Availble –基本可用,Soft-state –软状态/柔性事务,Eventual Consistency –最终一致性。
最终一致性:最终结果必须保持一致性。
I/O五分钟法则:如果一条记录频繁被访问,就应该放到内存里,否则的话就应该待在硬盘上按需要再访问。
几种常见的手段:
1.一致性hash:一致性哈希算法(Consistent Hashing Algorithm)是一种分布式算法,常用于负载均衡.网上例子很多,可以上网搜下。
2.Quorum NRW:N: 复制的节点数量,R: 成功读操作的最小节点数,W: 成功写操作的最小节点数,只需W + R > N,就可以保证强一致性。
3.Vector clock:vector clock算法。
4.Virtual node:虚拟节点,常与一致性hash相结合。
over!