Google Spanner
Spanner是谷歌开发的一款可扩展的、全球分布式的数据库,其复制技术可以用来服务于全球可用性和地理局部性。
其提供了几个特性:
-
在数据的副本配置方面,应用可以在一个很细的粒度上进行动态控制。应用可以详细规定哪些数据中心包含哪些数据,数据距离用户有多远(控制用户读取数据的延迟),不同数据副本之间距离有多远(控制写操作的延迟...
Spanner是谷歌开发的一款可扩展的、全球分布式的数据库,其复制技术可以用来服务于全球可用性和地理局部性。
其提供了几个特性:
在数据的副本配置方面,应用可以在一个很细的粒度上进行动态控制。应用可以详细规定哪些数据中心包含哪些数据,数据距离用户有多远(控制用户读取数据的延迟),不同数据副本之间距离有多远(控制写操作的延迟...
有用户反应在系统刚启动时的请求耗时会比较长,所以针对这个问题进行了调研。了解到了tcp的slow start特性,并对此进行了测试。
将测试分为同机房测试和跨机房测试。
使用get operation, value=1kB大小,使用c3 client to c...
在Google公司内部,对于海量索引数据的创建和实时更新是必须面对的问题。Map Reduce解决了海量索引数据的批量创建问题,但是却不能支持对增量数据的实时更新,每次需要对全量索引数据进行一次重新创建。并且由于文档在Google上能否被检索到取决于全量索引的创建时间,因此导致其被检索到的时间间隔较长。
...在分布式事务中,不能简单的向所有节点发送提交请求,然后各个节点去独立的执行事务提交。例如:
某些节点检测到违反约束或者冲突因而决定终止,而其他节点则可能成功提交
发送给某些节点的提交请求可能因为网络原因丢失,而发往其他节点的请求则顺利通过
ACID,事务的4个属性,这个每个人都很熟悉。其中:
A代表原子性,即:事务中的操作要么全部正确执行,要么全部不执行。在分布式系统中,其主要由2pc协议来保证的(另外还有一个3pc协议,但是只停留在理论阶段,没有太多实践意义),这里有一篇文章专门介绍了
Read More
之前知道C++有返回值优化,但是一直有点不太敢用,生怕用不好就会导致性能问题。最近本着刨根问底的态度,亲自写代码试验了一下。 测试环境:g++ (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 以及 g++ (GCC) 5.4.0 测试代码如下: 现有的实现如下所示: 目前团队所做的kv存储,对于数据分区所采用的方式是hash分区:对key取hash值,获取的hash值再对partition取模。即: 最近在思考这种方式的实现问题。 显然,由于这种方式...
C++返回值优化的小试验
pegasus load balance重构
背景
simple_load_balancer
:主要用于cure,cure的目的是维护分片的健康(一主两备份)Read More
关于数据分区的一些思考
hash(key) % partition_count