Design Consistent Hashing
์ํ์ ๊ท๋ชจ ํ์ฅ์ ์ํด์๋ ์์ฒญ ๋๋ ๋ฐ์ดํฐ๊ฐ ๊ฐ ์๋ฒ์ ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐ๋๋ ๊ฒ์ด ์ค์ํ๋ค. ์์ ํด์๋ ์ด๋ฌํ ๋ชฉ์ ์ ๋ฌ์ฑํ๊ธฐ ์ํด ๋ณดํธ์ ์ผ๋ก ์ฌ์ฉ๋๋ ํด์ ๋ฐฉ์์ด๋ค.
ํด์ ํค ์ฌ๋ฐฐ์น(refresh) ๋ฌธ์
์๋ฒ๋ค์ ๋ถํ๋ฅผ ๊ท ๋ฑํ๊ฒ ๋๋๊ธฐ ์ํด ๊ฐ๋จํ ํด์ ํจ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.(serverIndex = hash(key) % serverCount
)
์ด ๋ฐฉ๋ฒ์ ์๋ฒ ํ์ ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋์ด ์๊ฑฐ๋, ๋ฐ์ดํฐ ๋ถํฌ๊ฐ ๊ท ๋ฑํ ๋๋ ์ ๋์ํ์ง๋ง ๋ค์์ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
์๋ฒ๊ฐ ์ญ์ ๋๊ฑฐ๋ ์ถ๊ฐ๋๋ ์ํฉ ๋ฐ์
์๋ฒ ํ์ ํฌ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋์ด serverIndex๊ฐ ๋ณ๊ฒฝ
๊ธฐ์กด ์์ฒญ์ด ๋ค๋ฅธ ์๋ฒ์ ์ ๋ฌ๋์ด ๋๊ท๋ชจ ์บ์ ๋ฏธ์ค๊ฐ ๋ฐ์
๊ธฐ์กด ํด์ ํจ์๋ ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ, ์์ ํด์๋ฅผ ์ฌ์ฉํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํด๊ฒฐํ๊ณ ์๋ค.
์์ ํด์ ํค ์ฌ๋ฐฐ์น ๋ฐฉ๋ฒ
์์ ํด์๋ ํด์ ํ
์ด๋ธ ํฌ๊ธฐ๊ฐ ์กฐ์ ๋ ๋ ๋๋ถ๋ถ ์ฌ๋ฐฐ์น๋๋ ์ ํต์ ํด์ ํ
์ด๋ธ๊ณผ๋ ๋ค๋ฅด๊ฒ ์ค์ง ํค์ ๊ฐ์/์ฌ๋กฏ์ ๊ฐ์
๋งํผ์ ํค๋ง ์ฌ๋ฐฐ์นํ๋ฉด ๋๋ค.
ํด์ ๊ณต๊ฐ์ ๋ฒ์๋ฅผ ๋ง ํํ๋ก ํํํ๊ณ , ๊ฐ ์๋ฒ์ ํค๋ฅผ ์ด ๋ง ์์ ๋ฐฐ์นํ์ฌ ํค๋ฅผ ์๋ฒ์ ํ ๋นํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.

๊ฐ ํค๋ ๋๋จธ์ง ์ฐ์ฐ์ด ์๋, ํด๋น ํค์ ์์น๋ก๋ถํฐ ์๊ณ ๋ฐฉํฅ์ผ๋ก ๋ง์ ํ์ํ์ฌ ๊ฐ์ฅ ๊ฐ๊น์ด ์๋ฒ์ ํ ๋นํ๊ฒ ๋๋ค.
์๋ฒ ์ถ๊ฐ ์:
Key 0
๋งServer 0
์์Server 4
๋ก ์ฌ๋ฐฐ์น์๋ฒ ์ญ์ ์:
Key 2
๋งServer 2
์์Server 3
๋ก ์ฌ๋ฐฐ์น
๊ฐ์ ๋
ธ๋(virtual node)
์ฌ๋ฐฐ์น ๋ฌธ์ ๋ ํด๊ฒฐ๋์์ผ๋, ํํฐ์ ์ ํฌ๊ธฐ ๋ถ๊ท ๋ฑ ๋ฌธ์ ๋ ํค๊ฐ ๋ถ๊ท ๋ฑํ๊ฒ ๋ถํฌ๋์ด ํ๋์ ์๋ฒ์ ๋๋ฌด ๋ง์ ํค ํน์ ๋๋ฌด ์ ์ ํค๊ฐ ํ ๋น๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฐ์ ๋ ธ๋๋ผ๋ ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ค.

์ฌ์ง์ผ๋ก ์ธ ๊ฐ์ ๊ฐ์ ๋ ธ๋๋ฅผ ํ ๋นํ์ง๋ง ์ค์ ๋ก๋ ํจ์ฌ ํฐ ๊ฐ์ ์ฌ์ฉํ์ฌ ๊ท ๋ฑํ๊ฒ ํ ๋นํ ์ ์๋๋ก ํ๋ค.(๋๋ฆด์๋ก ๊ท ๋ฑํด์ง์ง๋ง ๊ฐ์ ๋ ธ๋๋ฅผ ์ํ ๋ฐ์ดํฐ ๊ณต๊ฐ์ด ์ปค์ง๊ฒ ๋จ)
์ฐธ๊ณ ์๋ฃ
Last updated
Was this helpful?