티스토리 뷰

WEB2.0/프로그래밍

redis 샤딩하기

나를찾는아이 2014. 3. 28. 09:49
728x90
반응형

redis는 3.0 버전부터 클러스터 기능이 예정되어 있고,


그 이하 버전에서는 별도의 분산처리를 위한 기능이 없습니다.


그래서 자체적으로 샤딩을 구축해야하는데요.



샤딩 전략은 다양하게 마련할수 있습니다.



회원ID가 1~10000인 사람은 0번 샤드

10001~20000인 사람은 1번 샤드

20001~30000인 사람은 1번 샤드


이런식으로 나눌수도 있고



회원정보는 1번 샤드

게시물 정보는 2번 샤드

기타 정보는 3번 샤드


기능별로 샤드를 분리할수도 있습니다.



또 다른 방식으로 간단하게 샤딩을 구현하기 위해서는 memcached의 방식을 이용해도 됩니다.



샤드번호 = md5('저장할key') % 샤드갯수


뭐 여기서 굳이 md5 함수 말고도 crc32나 sha1로 해도 됩니다.


저장할 key값에 따라 저장할데이터가 각 샤드에 분산배치 되는 방식입니다.


다른 샤딩 전략보다 좀 더 데이터를 각 샤드에 고르게 분산할수 있는 장점이 있습니다.



다만 이 방식의 단점은 운영중인 샤드중 하나에 장애가 발생하여 해당 샤드를 제거하고 샤드갯수를 변경하면


샤드번호가 몽땅 바뀌기 때문에 이 경우를 위한 별도의 로직을 고민해보셔야 합니다.


consistent hash 기능을 이용해도 좋고요.



728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함