一致性hash
一致性哈希算法是分布式系统中常用的算法。比如,一个分布式的存储系统,要将数据存储到具体的节点上,如果采用普通的hash方法,将数据映射到具体的节点上,如key%N,key是数据的key,N是机器节点数,如果有一个机器加入或退出这个集群,则所有的数据映射都无效了,如果是持久化存储则要做数据迁移,如果是分布式缓存,则其他缓存就失效了。 因此引入了一致性hash算法 把数据用hash函数(如MD5),映
一致性哈希算法是分布式系统中常用的算法。比如,一个分布式的存储系统,要将数据存储到具体的节点上,如果采用普通的hash方法,将数据映射到具体的节点上,如key%N,key是数据的key,N是机器节点数,如果有一个机器加入或退出这个集群,则所有的数据映射都无效了,如果是持久化存储则要做数据迁移,如果是分布式缓存,则其他缓存就失效了。 因此引入了一致性hash算法 把数据用hash函数(如MD5),映
在单应用或者传统的强一致解决方案中,A账户转给B账户100元,一个简单的事务就可以保证但是现今互联网界,分布式系统和微服务架构盛行,一个简单操作,在服务端非常可能是由多个服务和数据库实例协同完成的。在互联网金融等一致性要求较高的场景下,多个独立操作之间的一致性问题显得格外棘手。基于水平扩容能力和成本考虑,传统的强一致的解决方案(e.g.单机事务)纷纷被抛弃。其理论依据就是响当当的CAP原理。我们往
SOA是一种面相服务的软件架构模型,往往和微服务一起用来解决应用(主要是WEB应用或者服务)的复杂性,对应用进行解耦,从而便于管理和维护。一般会将大的应用根据功能模块进行拆分,拆成小的独立的服务,服务之间通过定义好的接口或者契约关联起来,从而比较好的适应scrum的敏捷软件开发过程。一般包含如下几个关键部分: 服务注册,分为自动注册和手动注册。 服务发现 服务治理 容灾 负载均衡, 根据服务发现
在一些分布式数据库中,如Dynamo,Project Voldemort,为了控制同一record的不同版本,常常会使用Vector Clock这样的概念。 向量时钟(vector clock)实际上是一个(node,counter)对列表(即(节点,计数器)列表)。 矢量锁是与每个对象的每个版本相关联。通过审查其向量时钟,我们可以判断一个对象的两个版本是平行分枝或有因果顺序。如果第一个时钟对象上