[Algorithm] consistent hash (hash ring)
consistent hash์ DB์ ์ค๋ฉ ๊ฐ์ ๋ถ์ฐ ์ ์ฅ์ ์์ฉ๋๋ ํ ํฌ๋์ด๋ค. hash ring์ด๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
๋ํ์ ์ธ ๋ํ ๋ถ์ฐ DB์ธ Dynamo์ Cassandra๊ฐ ์ด ๋ฐฉ์์ผ๋ก ์ค๋ฉ์ ๊ตฌํํ๋ค.
๋ฌธ์
์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ๋ฅผ ํน์ ์กฐ๊ฑด์ ๊ธฐ์ค์ผ๋ก ๊ฐ๊ฐ์ ๋ ธ๋-์คํธ์ ๋๋ ์ ์ ์ฅํ๋ค๊ณ ๊ฐ์ ํด๋ณด์.
https://binux.tistory.com/119
๊ทธ๋ฌ๋ฉด ๋ฐ์ดํฐ์ ํน์ ์ค๋ ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ํด์๊ฐ์ ์์ฑํ๊ณ , ๊ทธ ๊ฐ์ ๊ฐ๊ฐ์ ์ค๋์ ์ ์ฅํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ด๋ค.
๊ฐ๋ น, ์ค๋ ํค๊ฐ ์ ์๊ณ ์ค๋๊ฐ 3๊ฐ๋ผ๋ฉด ๋๋จธ์ง ์ฐ์ฐ(x%3) ์ ํตํด 0~2์ ํด์๊ฐ์ ์ถ์ถํด์ ์ ์ฅํ ์ ์์ ๊ฒ์ด๋ค.
๊ทธ๋ฐ๋ฐ ์ค๋๊ฐ 2๊ฐ ๋์ด์ 5๊ฐ๊ฐ ๋๋ค๋ฉด ์ด๋จ ๊ฒ ๊ฐ์๊ฐ?
๊ทธ๋ฌ๋ฉด ํด์ ๊ณ์ฐ๋ฒ๋ ์ค๋ ๊ฐ์์ ๋ง์ถฐ ๋ณ๊ฒฝ๋ ํ
๋ฐ, (x%5) ๊ธฐ์กด ์ ์ฅ ๋ฐ์ดํฐ๋ค์ ๋ฐ๋ ํด์๊ฐ์ผ๋ก๋ ๋งค์นญ์ํฌ ์๊ฐ ์๋ค.
๊ทธ๋ ๋ค๊ณ ์ค๋๊ฐ ๋ฐ๋๋๋ง๋ค ํด์๊ฐ์ ๋ง์ถฐ์ ๋ฐ์ดํฐ ์ฌ๋ฐฐ์น๋ฅผ ๊ณ์ ๋๋ฆฌ๋ ๊ฒ๋ ๋ง์ด ์๋๋ ๋ฐฉ๋ฒ์ด๋ค.
hash ring
hash ring์ ์กฐ๊ธ ๋ ํนํ ๋ฐฉ๋ฒ์ผ๋ก ์ด๋ฌํ ๋ฌธ์ ํ์ ํด๊ฒฐํ๋ค. ์ฌ๋ฐฐ์น๋ฅผ ์์ ํผํ์ง๋ ๋ชปํ๊ณ , ์ข ์ค์ด๋ ์ ๋๋ค.
https://binux.tistory.com/119
์ผ๋จ ์ ํํ ๋ฒ์๋ฅผ ๊ฐ์ง๋ ์ค์ ํด์๊ฐ์ ์ถ์ถํ๊ฒ๋ ๋ง๋ ๋ค. ์๋ฅผ ๋ค์ด 0~1๋ก ๋ฒ์๋ฅผ ์ก์ ์ ์๊ฒ ๋ค.
๊ทธ๋ฆฌ๊ณ ์ค๋๊ฐ 3๊ฐ๋ผ๋ฉด, ๊ฐ๊ฐ์ ์ค๋๋ ํด์๊ฐ ์์ญ์ ๊ฐ์ง๋ค. 1์ค๋๋ 0~0.3, 2์ค๋๋ 0.3~0.6, 3์ค๋๋ 0.6~1 ๊ฐ์ ์์ผ๋ก ํ ๋นํ๊ณ , ๊ฐ๊ฐ์ ํด์๊ฐ์ ์ ๋ฒ์์ ๋ค์ด๊ฐ๋ ์ค๋๋ก ๋งค์นญ์ํค๋ ๊ฒ์ด๋ค.
https://binux.tistory.com/119
์ด ๊ตฌ์กฐ์์ ์ค๋๊ฐ ์ถ๊ฐ๋๋ฉด, ์ ๋นํ ์ด๋ ๋ฒ์์ ์๋ก์ด ์ค๋์ ์์ญ์ ๋ถ์ฌํด์ค๋ค.
0.6~1๋ฅผ ์ฐจ์งํ๋ 3์ค๋์ ๋ฒ์๋ฅผ ๊ฐ์ ธ๊ฐ์ 0.8~1 ์์ญ์ ๋ฐฐ์ ํ๊ณ , ํด๋น ์์น๋ก ๋งค์นญ๋๋ ํญ๋ชฉ๋ค๋ง ์ฌ๋ฐฐ์นํด์ฃผ๋ฉด ๋๋ค.
https://binux.tistory.com/119
๊ทธ๋ฆฌ๊ณ ์ค๋๊ฐ ์ ๊ฑฐ๋ ๋๋ ๊ทธ ์์ญ์ ์๋ ๋งค์นญ ํญ๋ชฉ๋ง ์ฌ๋ฐฐ์นํด์ฃผ๋ฉด ๋๋ค.
๊ทผ๋ฐ ์ฌ๊ธฐ์๋ ๋ฌธ์ ๊ฐ ์๋ค. ์์ ๊ทธ๋ฆผ 2๊ฐ์ง๋ง ๋ด๋ ์๊ฒ ์ง๋ง, ์ค๋๊ฐ ์ถ๊ฐ๋๊ฑฐ๋ ์ค์ด๋ค๋ค๋ณด๋ฉด ์ค๋๊ฐ ๊ฐ๊ณ ์๋ ์์ญ์ด ๋ถ๊ท ๋ฑํ๊ฒ ๋ถํฌ๋ ์ ์๋ค๋ ๊ฒ์ด๋ค.
hash ring์ ์ด๋ฌํ ๋จ์ ์ ๊ทน๋ณตํ๊ธฐ ์ํด vnode๋ผ๋ ๋งค์ปค๋์ฆ์ ์ฌ์ฉํ๋ค.
vnode
๊ฐ์ ๋ ธ๋๋ผ๋ ๋ง์ธ๋ฐ, ๊ทธ๋ ๊ฒ ๊ฑฐ์ฐฝํ์ง๋ ์๋ค.

๊ทธ๋ฅ ์ค์ ์ค๋ ํ๋๋ง๋ค ์ฌ๋ฌ๊ฐ์ vnode ์์ญ์ ์ก์๋๊ณ , ์์ํ๊ณ ๋๋คํ๊ฒ ์์ญ์ ์ฐจ์งํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
๊ทธ๋์ ํด์๊ฐ์ด ๋์ค๋ฉด ๊ทธ ์ฃผ๋ณ์ ์์นํ vnode์ ์ค์ ์ค๋์ ์ ์ฅํ๋๋ก ํ๋ค.
๋ฒ์๋ฅผ ๋ ์๊ฒ ์ชผ๊ฐ๊ณ ํฉ๋ฟ๋ ค์ ์ง์ค์ ์ค์ด๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ๋ก ์ด๋ค.
์ฐธ์กฐ
https://www.designgurus.io/course-play/grokking-the-advanced-system-design-interview/doc/6376795982f3782df575c65f
https://binux.tistory.com/119