Groupcache: ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ์—๋ฎฌ๋ ˆ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•

์— ๋งŒ๋“  2013๋…„ 07์›” 29์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: golang/groupcache

๋‚˜๋Š” Setting and expiration time ๋””์ž์ธ ๊ฒฐ์ •์—์„œ ๋ˆ„๋ฝ๋œ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์—๋ฎฌ๋ ˆ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์—ผ๋‘์— ๋‘๊ณ  ์žˆ๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์›น ์•ฑ ์•ž์— ์บ์‹œ๋œ ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŽ˜์ด์ง€๊ฐ€ X๋ถ„ ๋™์•ˆ ์บ์‹œ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ•  ๊ฒƒ์ธ์ง€ ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

(์—ฌ๊ธฐ๊ฐ€ ์งˆ๋ฌธํ•  ๊ณณ์ด ๋งž๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

groupcache์˜ ์„ค๊ณ„๋ฅผ ์ดํ•ดํ•˜๋Š” ํ•œ ์บ์‹œ๋œ ํ•ญ๋ชฉ์„ ๋ฌดํšจํ™”ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ๋งค์šฐ ์–ด๋ ต๊ณ  ๊ฐ’๋น„์‹ผ ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜(์˜ˆ: paxos)์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋žต๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์บ์‹œ ํ‚ค ์ž์ฒด์˜ ์‹œ๊ฐ„ ์ •๋ณด๋ฅผ ์ธ์ฝ”๋”ฉํ•˜์—ฌ X๋ถ„๋งˆ๋‹ค ๊ณ ์œ ํ•œ ์บ์‹œ ํ‚ค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "foo-12:30"์€ ์‹œ๊ฐ„ 12:30์— "foo" ํ•ญ๋ชฉ์„ ๊ณ ์œ ํ•˜๊ฒŒ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด 12:40๊นŒ์ง€ ์ด ํ•ญ๋ชฉ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ์ƒˆ ํ•ญ๋ชฉ "foo-12:40"์ด ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•ก์„ธ์Šค๋ฅผ ์ค‘์ง€ํ•˜๋ฉด ์ด์ „ ํ•ญ๋ชฉ("foo-12:30")์ด ๊ฒฐ๊ตญ ๋งŒ๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

๋ถ„์‚ฐ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ๊ฐœ์ • ๋ฒˆํ˜ธ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ(์˜ˆ: doozerd, zookeeper ๋˜๋Š” ์„ ํƒํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ) ์ด ๊ฐœ์ • ๋ฒˆํ˜ธ๋ฅผ ์บ์‹œ ํ‚ค์˜ ์ผ๋ถ€๋กœ ์ธ์ฝ”๋”ฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” "Last-Modified" ๋˜๋Š” "ETag" HTTP ํ—ค๋”๋ฅผ ์›น ํ”„๋ก์‹œ์—์„œ ์ผ์ข…์˜ ๊ฐœ์ • ๋ฒˆํ˜ธ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

groupcache์˜ ์„ค๊ณ„๋ฅผ ์ดํ•ดํ•˜๋Š” ํ•œ ์บ์‹œ๋œ ํ•ญ๋ชฉ์„ ๋ฌดํšจํ™”ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ๋งค์šฐ ์–ด๋ ต๊ณ  ๊ฐ’๋น„์‹ผ ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜(์˜ˆ: paxos)์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋žต๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์บ์‹œ ํ‚ค ์ž์ฒด์˜ ์‹œ๊ฐ„ ์ •๋ณด๋ฅผ ์ธ์ฝ”๋”ฉํ•˜์—ฌ X๋ถ„๋งˆ๋‹ค ๊ณ ์œ ํ•œ ์บ์‹œ ํ‚ค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "foo-12:30"์€ ์‹œ๊ฐ„ 12:30์— "foo" ํ•ญ๋ชฉ์„ ๊ณ ์œ ํ•˜๊ฒŒ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด 12:40๊นŒ์ง€ ์ด ํ•ญ๋ชฉ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ์ƒˆ ํ•ญ๋ชฉ "foo-12:40"์ด ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•ก์„ธ์Šค๋ฅผ ์ค‘์ง€ํ•˜๋ฉด ์ด์ „ ํ•ญ๋ชฉ("foo-12:30")์ด ๊ฒฐ๊ตญ ๋งŒ๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

๋ถ„์‚ฐ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ๊ฐœ์ • ๋ฒˆํ˜ธ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ(์˜ˆ: doozerd, zookeeper ๋˜๋Š” ์„ ํƒํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ) ์ด ๊ฐœ์ • ๋ฒˆํ˜ธ๋ฅผ ์บ์‹œ ํ‚ค์˜ ์ผ๋ถ€๋กœ ์ธ์ฝ”๋”ฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” "Last-Modified" ๋˜๋Š” "ETag" HTTP ํ—ค๋”๋ฅผ ์›น ํ”„๋ก์‹œ์—์„œ ์ผ์ข…์˜ ๊ฐœ์ • ๋ฒˆํ˜ธ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, tux21b๊ฐ€ ๋งํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. (์ ์–ด๋„ ๋‹น๋ถ„๊ฐ„์€ ์˜๋„์ ์œผ๋กœ ์ƒ๋žตํ–ˆ์Šต๋‹ˆ๋‹ค.)

๊ฐœ์ •์— ๊ด€ํ•œ ์ œ์•ˆ์„ ํ•ด์ฃผ์‹  @tux21b ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰