亚马逊Dynamo数据库解读(英文版)
最近看了亚麻的Dynamo,个人认为其中always writeable的业务目标,对于DHT,vector clock,merkel tree的应用,包括对于一致性和高可用的权衡(基于CAP猜想,实现默认保证分区容错,因此二选一)等都很有意思。建议参考原论文食用。
What is the problem that this paper tries to solve? How would summarise its main idea in a few sentences? How does it work in more detail?
What is good about the paper? What is not good about the paper?
To what extent is the design of Dynamo inspired by Distributed Hash Tables (DHTs)? What are the advantages and disadvantages of such a design?
(part 3.3)
can be described as a zero-hop DHT
P2P:global
dynamo:locality
How does the design of Dynamo compare to that of BigTable?
Dynamo:for ACID(transaction)
BigTable: for structured data
key point:
target: always writeable
consistency & available(dynamo) : always conflict
dynamo: weak consistency: eventual consistency
vector clocks
Dynamo
Requirements
simple query model: r/w op for unique key to value, no mutli-data & relational schema
consistency & available : sometimes conflict
Experience at Amazon has shown that data stores that provide ACID guarantees tend to have poor availability.
efficiency: commodity hardware infrastructure(通用硬件), achieve SLA
other: internal service without security related requirements such as authentication and authorization.
Target: meet SLA
Figure 1: Typically, the aggregator services are stateless, although they use extensive caching.
common standard: average, median and expected variance
while amazon: measured at the 99.9th percentile of the distribution
design
it is well known that when dealing with the possibility of network failures, strong consistency and high data availability cannot be achieved simultaneously
conflict resolution: eventually consistent data store
An important design consideration is to decide when to perform the process of resolving update conflicts
eg. whether conflicts should be resolved during reads(tradition) or writes(dynamo, for "always writeable")
who performs the process of conflict resolution
- data store: simple, eg. "last write win"
- application: flexible & suitable
Other key principles:Incremental scalability, Symmetry, Decentralization, Heterogeneity
related work(omit here)
P2P system
Architecture
partitioning, replication, versioning, membership, failure handling and scaling.
interface
get() put()
partitioning
basic consistent hashing algorithm(hash ring):
- non-uniform data and load distribution
- oblivious to the heterogeneity
improvement:
virtual node: A virtual node looks like a single node in the system, but each node can be responsible for more than one virtual node.
when a new node is added to the system, it is assigned multiple positions (henceforth, “tokens”) in the ring.
Replication
In addition to locally storing each key within its range, the coordinator replicates these keys at the N-1 clockwise successor nodes in the ring.
eg. in figure2: B itself, & C,D replicated
for virtual nodes, avoid dual node -> preference list stepping position(num > N for possible node failure) -> distinct physical nodes
Data versioning(important for consistency)
Dynamo provides eventual consistency, which allows for updates to be propagated to all replicas asynchronously.
(temporary inconsistencies)
thus, possible multi-versions(even the same data)
vector clocks: capture causality between different versions of the same object
format: a list of (node, counter) pairs
data conflict: return all the data to the client/logic to deal with
size restriction(possible for node failure)
Execution of operation: get() & put()
how to get node?
- load balancer route choose
- partition-aware client library
configurable values: R and W.
R is the minimum number of nodes that must participate in a successful read operation.
W is the minimum number of nodes that must participate in a successful write operation.
Setting R and W such that R + W > N yields a quorum-like system.
In this model, the latency of a get (or put) operation is dictated by the slowest of the R (or W) replicas.
For this reason, R and W are usually configured to be less than N, to provide better latency.
Handling Failures(temporary node failure): Hinted Handoff
sloppy quorum
handling the failure of an entire data center: each object is replicated across multiple data centers
Handling Failures(permanent node failure): Replica synchronization
Merkle tree: To detect the inconsistencies between replicas faster and to minimize the amount of transferred data
hash the childnode, construct tree from bottom to uphill, anti-entropy
Ring Membership
how virtual node mapped to physical node?
When a node starts for the first time, it chooses its set of tokens (virtual nodes in the consistent hash space) and maps nodes to their respective token sets.
Adding/Removing Storage Nodes
add front keys to new nodes, then remove related repetitive keys from back nodes
Implementation: all Java
- request coordination
- membership and failure detection
- local persistence engine
EXPERIENCES & LESSONS
Class discussion
internal service so dont care about the security problem
virtual node idea -> load balance(flexibility): random -> logical ring depend on token sets
large-scale distributed system:
block chain: for security & anonymous
web3
consistent hash works: the ring partition
DHT(distributed hash table) ring: each node contains previous range
how the data stored: checking alongside the ring efficiently
gossip-based protocol: propagates membership changes and maintains an eventually consistent view of membership
use binary research to find the destination
distinct physical nodes: the preference list skipping particular position in the ring
N: virtual nodes, while it is possible that the multi virtual nodes on the same physical nodes, thus skipping the same physical nodes.
Brewer's conjecture: CAP Theorem
consistency, availability, and partition-tolerance: pick 2 out of 3!
native design: confirm partition, thus sacrifice strong consistency to earn high availability
亚马逊Dynamo数据库解读(英文版)的更多相关文章
- 国外物联网平台(1):亚马逊AWS IoT
国外物联网平台(1)——亚马逊AWS IoT 马智 平台定位 AWS IoT是一款托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互. AWS IoT可支持数十亿台设备和数万亿条消息,并 ...
- 国外物联网平台初探(一) ——亚马逊AWS IoT
平台定位 AWS IoT是一款托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互. AWS IoT可支持数十亿台设备和数万亿条消息,并且可以对这些消息进行处理并将其安全可靠地路由至 AW ...
- [转帖]亚马逊彻底去掉 Oracle 数据库:迁移完成
亚马逊彻底去掉 Oracle 数据库:迁移完成 https://mp.weixin.qq.com/s/KFonq8efDZ5K6x4YzIVbbg 云头条的信息挺不错的.. 2019 年 10 月 1 ...
- 亚马逊左侧菜单延迟z三角 jquery插件jquery.menu-aim.js源码解读
关于亚马逊的左侧菜单延迟,之前一直不知道它的实现原理.梦神提到了z三角,我也不知道这是什么东西.13号那天很有空,等领导们签字完我就可以走了.下午的时候,找到了一篇博客:http://jayuh.co ...
- 借助亚马逊S3和RapidMiner将机器学习应用到文本挖掘
本挖掘典型地运用了机器学习技术,例如聚类,分类,关联规则,和预测建模.这些技术揭示潜在内容中的意义和关系.文本发掘应用于诸如竞争情报,生命科学,客户呼声,媒体和出版,法律和税收,法律实施,情感分析和趋 ...
- 微软、谷歌、亚马逊、Facebook等硅谷大厂91个开源软件盘点(附下载地址)
开源软件中有大量专家构建的代码,大大节省了开发人员的时间和成本,热衷于开源的大厂们总是能够带给我们新的惊喜.2016年9月GitHub报告显示,GitHub已经有超过 520 万的用户和超 30 万的 ...
- 程序员面试大揭秘——应聘微软、亚马逊、谷歌、苹果等IT公司你都要做什么准备?
对于多数求职者而言,面试好似一个迷局.你去了,见了几个面试官,答了一堆问题,然后,或两手空空离开,或幸运地拿到录用通知. 你有没有想过: 面试结果是怎么得出的? 面试官会不会互相交流? 公司最看重哪些 ...
- AWS系列之一 亚马逊云服务概述
云计算经过这几年的发展,已经不再是是一个高大上的名词,而是已经应用到寻常百姓家的技术.每天如果你和互联网打交道,那么或多或少都会和云扯上关系.gmail.github.各种网盘.GAE.heroku等 ...
- 成都亚马逊AWSome Day回顾
6月25日我和公司同仁一起参加了亚马逊在成都的第一场AWSome Day活动.整个活动时间异常紧促,短短一天包含了7堂session,讲师的狂轰乱炸使得我们同学们普遍觉得比上班累多了.好了,废话不多说 ...
- 亚马逊云服务之CloudFormation
亚马逊的Web Service其实包含了一套云服务.云服务主要分为三种: IaaS: Infrastructure as a service,基础设施即服务. PaaS: Platform as a ...
随机推荐
- python进阶(2)--列表
文档目录:一.访问列表元素二.更新列表三.删除元素四.列表排序五.len()与range()/list()六.创建一个包含1-10平方的列表七.复制列表两种方式八.元组:不可变的列表 -------- ...
- 机器学习-线性回归-损失函数+正则化regularization-06
目录 1. 为什么要加上正则项 2 L1稀疏 L2平滑 3. 代码1--L2正则 4 代码2--L2正则2 5. 代码3--l1正则 6. ElasticNet 1. 为什么要加上正则项 防止模型的过 ...
- Kafka 面试题
1. 为什么要使用 Kafka,为什么要使用消息队列 1.使用消息队列的目的: 服务解耦 流量削峰 异步通信 在早期的 web 应用程序开发中,当请求量突然上来了时候,我们会将要处理的数据推送到一个队 ...
- iview 表单有值却校验失败
转载请注明出处: iview 表单校验数值的时候,表单有值,却在提交的时候,提示表单校验失败: 解决方案: 1. IviewUI的文档里查到了rules规则里面有个校验类型的属性字段type rule ...
- Asp.Net Core造轮之旅:逐步构建自己的开发框架-目录
本系列适用于已有一定.NET开发基础,学习asp.net core人士. 基础篇 asp.net core之Startup asp.net core之依赖注入 asp.net core之中间件 asp ...
- 分享Go书籍-《Go Web编程》
大家好,我是沙漠尽头的狼. 最近几天在看一本Go的书籍,看了100来页,感觉不错,分享给大家. 书籍基本信息 书籍信息: 书名:Go Web编程 作 者:(新加坡)郑兆雄(Sau Sheong C ...
- SpringBoot01:HelloWorld!
回顾Spring Spring是一个开源框架,2003年兴起的一个轻量级的Java开发框架. Spring是为了解决企业级应用开发的复杂性而创建的,简化开发. Spring是怎样简化Java开发的呢? ...
- [转帖]六千字带你了解 Oracle 统计信息和执行计划
https://cloud.tencent.com/developer/article/1616706 大家好,我是 JiekuXu,很高兴又和大家见面了,今天分享下 Oracle 统计信息和执行计划 ...
- [转帖]Docker容器日志查看与清理(亲测有效)
1. 问题 docker容器日志导致主机磁盘空间满了.docker logs -f container_name噼里啪啦一大堆,很占用空间,不用的日志可以清理掉了. 2. 解决方法 2.1 找出Doc ...
- [转帖]netperf - 网络测试工具
1. 概述 Netperf是一种网络性能的测量工具,主要针对基于TCP或UDP的传输.Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer ...