Ryu
  • πŸ‘©πŸ»β€πŸ’» Ryu / software_engineer
  • ✨Resume
  • Python3
    • Python3 κ°€μƒν™˜κ²½ μ„€μ •ν•˜κΈ°
      • Python3 vs Python2
      • Pyenv
      • Venv
      • Pip
    • Flask
      • Flask μ„€μΉ˜ν•˜κΈ°
      • API Server λ§Œλ“€κΈ°
    • REST API
    • Command Line ν™œμš©ν•˜κΈ°
    • Module μ‚¬μš©ν•˜κΈ°
      • Pickle - μžλ£Œν˜•μ„ 파일둜 μ €μž₯ν•  λ•Œ
    • MongoDB connection
      • Pymongo
    • WSGI
      • πŸ’‘WSGI κ°€ ν•„μš”ν•œ 이유
      • Web Server / WSGI / Middleware / Application ꡬ쑰
      • WSGI Middleware μ’…λ₯˜
      • Gunicorn
        • Gunicorn vs Uwsgi
    • Dockerize
      • πŸ’‘Dockerize κ°€ ν•„μš”ν•œ 이유
      • 1. Create Dockerfile
        • Gunicorn 으둜 nginx 와 app μ—°κ²°ν•˜κΈ°
    • Kubernetes 둜 λ°°ν¬ν•˜κΈ°
      • πŸ’‘Kubernetes κ°€ ν•„μš”ν•œ 이유
      • Helm μ‚¬μš©ν•˜κΈ°
      • Helm 으둜 k8s 에 μ•± λ°°ν¬ν•˜κΈ°
  • Open Tracing (정리쀑)
    • Open Tracing μ΄λž€ 무엇인가
    • Python OpenTracing Example
    • Jaeger, Jaeger UI
    • Python Jaeger Tutorial
    • Zipkin μ•Œμ•„λ³΄κΈ°
    • Jaeger-client λ¦¬μŠ€νŒ…
  • Microservice Architecture
    • Netflix의 MSA 컨셉
      • ⚑️ MSA λ₯Ό λ„μž…ν• λ•Œ κ³ λ €ν•΄μ•Όν•  점듀
  • Paper
    • Dynamo: Amazon’s Highly Available Key-value Store
      • 1. Introduction
      • 2. Background
      • 3. Related Work
        • Related Paper) Pastry, Chord
        • Byzantine Fault Tolerance
      • 4. System Architecture
        • 4.1 System Interface
        • 4.2 Partitioning
        • 4.3 Replication
        • Hash Function
  • Frontend
    • CommonJS 와 AMD
    • RequireJS
    • WebSocket
      • WebSocket vs Socket.io
      • polling vs long polling vs streaming
    • Vue.js
      • Vue.js μ—μ„œ WebSocket μ‚¬μš©ν•˜κΈ°
      • [ν”„λ‘œμ νŠΈ] Vue, Vuex, AntDesignVue 둜 운영툴 λ§Œλ“€κΈ°
    • React x Redux 둜 ν”„λ‘œμ νŠΈ λ§Œλ“€κΈ°
      • 0. React, Redux λ₯Ό μ„ νƒν•œ 이유
      • 1. ν”„λ‘œμ νŠΈ μƒμ„±ν•˜κ³  Webpack4 μ μš©ν•˜κΈ°
      • 2. React 와 ReactDOM μ μš©ν•˜κΈ°
      • 3. Material UI μ μš©ν•˜κΈ°
  • Data Engineering
    • Spark
      • Spark μ΄λž€?
      • 각 데λͺ¬μ˜ μ—­ν•  Driver, Master, Worker
      • μž₯단점 / ν•¨κ»˜μ‚¬μš©ν•˜λŠ” 툴 / μ‚¬μš© 사둀
  • Service Mesh (정리쀑)
    • RPC
    • gRPC - Python Server λ§Œλ“€κΈ°
      • step 2.
Powered by GitBook
On this page

Was this helpful?

  1. Paper
  2. Dynamo: Amazon’s Highly Available Key-value Store
  3. 4. System Architecture

4.2 Partitioning

Previous4.1 System InterfaceNext4.3 Replication

Last updated 6 years ago

Was this helpful?

4.2 Partitioning

λ°μ΄ν„°μ˜ 규λͺ¨κ°€ 점점 컀짐에 따라, 데이터λ₯Ό λ™μ μœΌλ‘œ λΆ„ν• ν•˜λŠ” λ©”μ»€λ‹ˆμ¦˜μ΄ ν•„μš”ν•΄μ‘ŒμŠ΅λ‹ˆλ‹€.

  • Dynamo λŠ” 데이터λ₯Ό νŒŒν‹°μ…˜μ— μ €μž₯ν•©λ‹ˆλ‹€.

  • Dynamo 의 λΆ„ν•  ꡬ성은 'Consistent Hashing' 을 μ‚¬μš©ν•˜μ—¬ μ—¬λŸ¬ μ €μž₯μ†Œ ν˜ΈμŠ€νŠΈμ— λΆ€ν•˜λ₯Ό λΆ„μ‚°μ‹œν‚΅λ‹ˆλ‹€.

DynamoDB λŠ” λ‹€μŒκ³Ό 같은 μƒν™©μ—μ„œ ν…Œμ΄λΈ”μ— μΆ”κ°€ νŒŒν‹°μ…˜μ„ ν• λ‹Ήν•©λ‹ˆλ‹€.

  • κΈ°μ‘΄ νŒŒν‹°μ…˜μ΄ 지원할 수 μžˆλŠ” ν•œλ„λ₯Ό μ΄ˆκ³Όν•˜μ—¬ ν…Œμ΄λΈ”μ˜ ν• λ‹Ήλœ μ²˜λ¦¬λŸ‰ 섀정을 λŠ˜λ¦¬λŠ” 경우.

  • κΈ°μ‘΄ νŒŒν‹°μ…˜ μš©λŸ‰μ΄ λ‹€ μ°¨μ„œ μΆ”κ°€ μŠ€ν† λ¦¬μ§€ 곡간이 ν•„μš”ν•œ 경우.

방법

  • κ°€μž₯ 큰 ν•΄μ‹œκ°’μ΄ κ°€μž₯ μž‘μ€ ν•΄μ‹œκ°’μœΌλ‘œ 쀄 λ°”κΏˆλ©λ‹ˆλ‹€.

  • ν‚€λ‘œ μ‹λ³„λœ 각 데이터 ν•­λͺ©μ€ λ°μ΄ν„°μ˜ ν‚€λ₯Ό ν•΄μ‹±ν•˜μ—¬ λ§μ—μ„œ ν•΄λ‹Ή μœ„μΉ˜λ₯Ό μ‚°μΆœν•œ λ‹€μŒ, μ‹œκ³„ λ°©ν–₯으둜 κ±·λŠ” λ°©μ‹μœΌλ‘œ ν•­λͺ©μ˜ μœ„μΉ˜λ³΄λ‹€ 큰 μœ„μΉ˜μ˜ 첫번째 λ…Έλ“œλ₯Ό μ°ΎμŠ΅λ‹ˆλ‹€.

Virtual Nodes μ‚¬μš© 이점

  • Node κ°€ μž₯μ• λ‚˜ μœ μ§€κ΄€λ¦¬ 둜 인해 μ‚¬μš©ν• μˆ˜ μ—†κ²Œλ˜λ©΄, 이 λ…Έλ“œμ— μ˜ν•΄ κ΄€λ¦¬λ˜λŠ” load λŠ” λ‚¨μ•„μžˆλŠ” μ‚¬μš©κ°€λŠ₯ν•œ Nodes 둜 κ³ λ₯΄κ²Œ λΆ„μ‚°λ©λ‹ˆλ‹€.

  • Node κ°€ 이후 λ‹€μ‹œ μ‚¬μš©κ°€λŠ₯ν•˜κ²Œ λ˜κ±°λ‚˜ μƒˆλ‘œμš΄ λ…Έλ“œκ°€ μΆ”κ°€λ˜λ©΄, μƒˆλ‘­κ²Œ μ‚¬μš©κ°€λŠ₯ν•΄μ§„ λ…Έλ“œλŠ” λ‹€λ₯Έ λ…Έλ“œλ“€λ‘œλΆ€ν„° load λ₯Ό κ· λ“±ν•˜κ²Œ 받아와 μˆ˜μš©ν•©λ‹ˆλ‹€.

  • λ…Έλ“œκ°€ μ±…μž„μ§€λŠ” Virtual Nodes 의 μˆ˜λŠ” Capacity 에 κΈ°λ°˜ν•˜μ—¬ 결정될 수 있으며, 물리적 인프라 μ•ˆμ—μ„œ heterogeneity λ₯Ό κ³ λ €ν•©λ‹ˆλ‹€.

https://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/HowItWorks.Partitions.html