์ฝ์ ๋ ์ง : 2024.08.26
์ง์์ด : ์๋ ์ค ์ฌ
์ถํ์ฌ : ์ธ์ฌ์ดํธ
โ๏ธ ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ
ํด์ ํค ์ฌ๋ฐฐ์น(rehash) ๋ฌธ์
- N๊ฐ์ ์บ์ ์๋ฒ๊ฐ ์์ ๋ ์๋ฒ๋ค์ ๋ถํ๋ฅผ ๊ท ๋ฑํ๊ฒ ๋๋๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์
- serverIndex = hash(key) % N
- ํน์ ํค๊ฐ ๋ณด๊ด๋ ์๋ฒ์ ์ธ๋ฑ์ค๋ฅผ ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ
- ์ด ๋ฐฉ๋ฒ์ ์๋ฒ ํ์ ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋์ด ์์ ๋์ ๋ฐ์ดํฐ ๋ถํฌ๊ฐ ๊ท ๋ฑํ ๋๋ ์ ๋์ํ๋ค.
- ๊ทธ๋ฌ๋ ์๋ฒ๊ฐ ์ถ๊ฐ๋๊ฑฐ๋ ๊ธฐ์กด ์๋ฒ๊ฐ ์ญ์ ๋๋ ๊ฒฝ์ฐ(์ฆ, N ๊ฐ์ด ๋ฐ๋), ์๋ฒ ์ธ๋ฑ์ค ๊ฐ์ด ๋ฐ๋๋ฉด์ ๋๊ท๋ชจ ์บ์ ๋ฏธ์ค(cache miss)๊ฐ ๋ฐ์ํ๋ค.
์์ ํด์(consistent hash)
- ํด์ ํ ์ด๋ธ ํฌ๊ธฐ๊ฐ ์กฐ์ ๋ ๋ ๊ฑฐ์ ๋๋ถ๋ถ์ ํค๋ฅผ ์ฌ๋ฐฐ์นํ๋ ์ ํต์ ์ธ ๋ฐฉ์๊ณผ ๋ฌ๋ฆฌ, ์์ ํด์๋ ํ๊ท ์ ์ผ๋ก k/n๊ฐ์ ํค๋ง ์ฌ๋ฐฐ์นํ๋ ํด์ ๊ธฐ์ ์ด๋ค. (k๋ ํค์ ๊ฐ์, n์ ์ฌ๋กฏ์ ๊ฐ์)
ํด์ ๊ณต๊ฐ๊ณผ ํด์ ๋ง
- x0 ~ xn ๋ฒ์(ํด์ ํจ์์ ์ถ๋ ฅ ๋ฒ์)์ ํด์ ๊ณต๊ฐ์ ์์ชฝ์ ๊ตฌ๋ถ๋ ค ์ ์ผ๋ฉด ํด์ ๋ง(hash ring)์ด ๋๋ค.
- ์๋ฒ์ ํค๋ฅผ ๊ท ๋ฑ ๋ถํฌ ํด์ ํจ์๋ฅผ ์ฌ์ฉํด์ ํด์ ๋ง์ ๋ฐฐ์นํ๋ค.
- ํค๊ฐ ์ ์ฅ๋ ์๋ฒ๋ ํค์ ์์น์์ ๋ง์ ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ํ๋ค ๋ง๋๋ ์ต์ด์ ์๋ฒ์ด๋ค.
์๋ฒ ์กฐํ/์ถ๊ฐ/์ญ์
- ํด์ ๋ง์์ ์ด๋ค ํค๊ฐ ์ ์ฅ๋ ์๋ฒ๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์, ํด๋น ํค์ ์์น๋ก๋ถํฐ ์๊ณ ๋ฐฉํฅ์ผ๋ก ๋ง์ ํ์ํด์ ๋ง๋๋ ์ฒซ๋ฒ์งธ ์๋ฒ์ด๋ค.
- ์๋ฒ๋ฅผ ์ถ๊ฐ ๋๋ ์ญ์ ํ๋๋ผ๋ ์ผ๋ถ ํค๋ง ์ฌ๋ฐฐ์น ๋๋ค. ์ถ๊ฐ ๋๋ ์ญ์ ๋ ์๋ฒ์ ๋ฐ์๊ณ ๋ฐฉํฅ์ ์๋ ์ต์ด ์๋ฒ๊น์ง์ ํค๊ฐ ์ฌ๋ฐฐ์น ๋๋ค.
์์ ํด์ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ์ ๋ ๊ฐ์ง
- ์๋ฒ๋ฅผ ์ถ๊ฐ, ์ญ์ ํ๊ฒ ๋๋ฉด ํํฐ์ (์ธ์ ์๋ฒ ์ฌ์ด์ ํด์ ๊ณต๊ฐ) ํฌ๊ธฐ๋ฅผ ๊ท ๋ฑํ๊ฒ ์ ์งํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๋ค.
- ํค์ ๊ท ๋ฑ ๋ถํฌ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ด๋ ต๋ค.
๊ฐ์ ๋ ธ๋(virtual node)
- ์ค์ ๋ ธ๋ ๋๋ ์๋ฒ๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ ธ๋. ํ๋์ ์๋ฒ๋ ๋ง ์์ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ๋ ธ๋๋ฅผ ๊ฐ์ง ์ ์๋ค.
- ์ด๋ก์จ ํ๋์ ์๋ฒ๊ฐ ์ฌ๋ฌ ๊ฐ์ ํํฐ์ ์ ๊ด๋ฆฌํ๊ฒ ๋๋ค.
- ํค์ ์์น๋ก๋ถํฐ ์๊ณ ๋ฐฉํฅ์ผ๋ก ๋ง์ ํ์ํ๋ค ๋ง๋๋ ์ต์ด์ ๊ฐ์ ๋ ธ๋๊ฐ ํด๋น ํค๊ฐ ์ ์ฅ๋ ์๋ฒ๊ฐ ๋๋ค.
- ๊ฐ์ ๋ ธ๋์ ๊ฐ์๋ฅผ ๋๋ฆฌ๋ฉด ํค์ ๋ถํฌ๊ฐ ์ ์ ๋ ๊ท ๋ฑํด์ง๋ค. ๊ทธ๋ฌ๋ ๊ฐ์ ๋ ธ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๊ณต๊ฐ์ ๋ํ tradeoff๊ฐ ๋ฐ์ํ๋ค.
์์ ํด์์ ์ด์
- ์๋ฒ ์ถ๊ฐ/์ญ์ ์ ์ฌ๋ฐฐ์น ๋๋ ํค์ ์ ์ต์ํ
- ๋ฐ์ดํฐ์ ๊ท ๋ฑ ๋ถํฌ๋ก ์ํ์ ๊ท๋ชจ ํ์ฅ ๋ฌ์ฑํ๊ธฐ ์ฌ์
- ํซ์คํ(hotspot) ํค ๋ฌธ์ ๋ฅผ ์ค์
โ๏ธ ์ค๋ ์ฝ์ ์๊ฐ
1์ฅ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ท๋ชจ ํ์ฅ ๋ถ๋ถ์์ ์ธ๊ธ๋ ๋ฐ์ดํฐ ์ฌ ์ค๋ฉ๊ณผ ์์ ํด์ ๊ธฐ๋ฒ์ ์ฐ๊ด์ง์ด ์ ๋ฆฌํด๋ณด์๋ฉด, ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ค๋ ์์ง(shard exhaustion) ํ์์ด ๋ฐ์ํ๋ฉด ์ค๋ ํค๋ฅผ ๊ณ์ฐํ๋ ํจ์๋ฅผ ๋ณ๊ฒฝํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฐฐ์น ํด์ผ ํฉ๋๋ค(์ฌ์ค๋ฉ).
- ์ด๋ ์์ ํด์ ๊ธฐ๋ฒ์ ํ์ฉํ๋ฉด ๋ฐ์ดํฐ ๋ถํฌ์ ๊ท ํ์ ์ ์งํจ๊ณผ ๋์์ ์ฌ๋ฐฐ์น ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ต์ํ๋ฉด์ ์ฌ์ค๋ฉ์ ํจ์จ์ ์ผ๋ก ํ ์ ์์ต๋๋ค.
โ๏ธ ๊ถ๊ธํ ๋ด์ฉ & ์ ์ดํด๋์ง ์๋ ๋ด์ฉ
์บ์ ๋ฏธ์ค(cache miss)
- ์์ฒญํ ๋ฐ์ดํฐ๊ฐ ์บ์์์ ๋ฐ๊ฒฌ๋๋ฉด ์บ์ ํํธ(cache hit), ๋ฐ๊ฒฌ๋์ง ์์ผ๋ฉด ์บ์ ๋ฏธ์ค(cache miss)๋ผ๊ณ ํฉ๋๋ค.
- ์บ์ ๋ฏธ์ค์ ์ ํ
- Cold Miss : ๋ฐ์ดํฐ์ ์ฒ์ ์ก์ธ์คํ ๋ ๋ฐ์ํ๋ ์บ์ ๋ฏธ์ค
- Capacity Miss : ์บ์์ ํฌ๊ธฐ๊ฐ ์ถฉ๋ถํ์ง ์์์ ๋ฐ์ํ๋ ์บ์ ๋ฏธ์ค
- Conflict Miss : ์บ์๊ฐ ํน์ ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์์น๋ฅผ ๊ฒฐ์ ํ ๋, ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ๊ฐ ๋์ผํ ์บ์ ์์น์ ๋งคํ๋ ๋ ๋ฐ์ํ๋ ์บ์ ๋ฏธ์ค
โ๏ธ ์ฐธ๊ณ