公開: 2022年2月14日 05:09:44 JST (更新: 2022年2月23日 04:46:27 JST)
Article Header Image

Amazon Dynamo

http://www.allthingsdistributed.com/2017/10/a-decade-of-dynamo.html

この記事はもともと、ACCESSに在籍時代、社内勉強会用に調査・作成した発表スライドです。当時はreveal.jsで描画・公開していました。やたら<hr>が多いのは改ページです。

担当領域が社内BaaS/AWS Infraだったので、Amazon Dynamoは関連領域の重要技術でした。その後も直接・間接に分散システムには触れ続けているので、エッセンスとして役に立っている。

他にはSwirldのHashgraphとかを調査した資料もあったんだけど、離職時に社内においてきた。現職の方は検索したら出てくるかもしれません。

このwebsiteを整備するにあたって、過去に書いた記事で雑多に散らばっていたのを整理・集約しています。

References


Dynamo: Amazon’s Highly Available Key-value Store


Background and Related Works


Background

Dynamoはこれらの問題点を解決するためのAmazonの解答の一つ


System Assumptions and Requirements


SLA; Service Level Agreement


99.9th percentile SLA


Design Considerations


When to resolve conflict


Who performs resolutions


Other key principles


Related Works

Note: Partition-tolerantなのはBayou, Ficus, Coda


Dynamo vs. Related Works


Architecture


The Architecture

ProblemTechniqueAdvantage
PartitioningConsistent HashingIncremental Scalability
High Availability for writesVector clocks with reconciliation during readsVersion size is decoupled from update rates.
Handling temporary failuresSloppy Quorum and hinted handoffProvides high availability and durability guarantee when some of the replicas are not available.
Recovering from permanent failuresAnti-entropy using Merkle treesSynchronizes divergent replicas in the background.
Membership and failure detectionGossip-based membership protocol and failure detection.Preserves symmetry and avoids having a centralized registry for storing membership and node liveness information.

Interface


Partitioning


Partitioning


Replication


Figure 2

Figure 2


Data Versioning


Data Versioning: Vector Clock


Data Versioning: Vector Clock


Execution of operations

Note: Hash ringの情報を保持するsmart load-balancerというハイブリッドも当然考えられるが、論文では言及されていない。 Load-balancerからcoordinator nodeまでone hopでroutingするので高速であり、かつclient側知識も減らせるはず。 が、load-balancerの責務が増えるので故障点となる確率が上がり、symmetric nodesの利点である系の単純さを損なう。


Configuration and Execution

Note: 書き込みか読み込み、どちらかのタイミングで多数派から応答が得られていることが保証される、という意味


Operation Coordinators


Handling Transient Failure: Hinted Handoff

Note: sloppy だぶだぶな、だぼだぼな、だぶついた


Handling Permanent Failure: Replica Synchronization

Note: Desync期間が長いと、read時のsyntactic reconciliationによってsyncされる必要があり、read処理が若干遅延するかもしれない。 あるいはdesyncしているnodeが多ければ、stale readとなって現れるかもしれない。


Drawback of Replica Sync


Ring Membership


External Discovery


Failure Detection

Note: あるfailing nodeがtransientなのかpermanentなのかの判定ができないと、ローカルなfailure state viewが肥大化しそうだが、 これは明示的なjoin/leaveのgossip共有があれば避けられる。


Node addition/removal


Implementations and Optimizations


Implementation


Request Coordination


Write coordination


Configuration Patterns

Note: Performance, durability, consistency, availabilityのバランスを取りながらSLAを満たすためによく使われる値は、(N, R, W) = (3, 2, 2)


Optimizations for Higher Performance Requirements


Ensuring Uniform Load Distribution


Equal-sized Partitions


Load distribution efficiency

Figure 7


Nature of Divergence


Client-driven Coordination


Task Admission Control


Closing


Discussion


Conclusion

多分これが一番早いと思います by Amazon


Followers: Riak


Followers: Cassandra


Followers: Voldemort


Followers: Aerospike

公開: 2022年2月14日 05:09:44 JST (更新: 2022年2月23日 04:46:27 JST)