36
REDIS [email protected] 데이터 분배 전략

Redis edu 5

Embed Size (px)

Citation preview

Page 1: Redis edu 5

REDIS

[email protected]

데이터 분배 전략

Page 2: Redis edu 5

데이터 분배

Page 3: Redis edu 5

Range

Page 4: Redis edu 5

Range 1~백만: 1번 백만1~2백만: 2번

Page 5: Redis edu 5

Range Range가 너무 크면 서버별 사용 리소스가 크게 차이날 수 있다.

Page 6: Redis edu 5

Range 서버 추가 시에 Range 조절이 없으면 데이터 이동이 없다.

Page 7: Redis edu 5

Range

User #1

User #10

User #1000000

User #1000001

User #1000100

User #2000000

User #2000001

User #2000200

User #3000000

Server User #1000005

2

Page 8: Redis edu 5

Modulo

Page 9: Redis edu 5

Modulo

Id % 서버대수 = k

Page 10: Redis edu 5

Modulo 서버 대수에 따라서 데이터 이동이 많아짐.

Page 11: Redis edu 5

Modulo 가능하면 2배씩 증가하는 게 유리.

Page 12: Redis edu 5

Modulo Logical Shard Physical Shard

Page 13: Redis edu 5

Modulo

User #1

User #4

User #7

User #2

User #5

User #8

User #3

User #6

User #9

Server User #1

1

Page 14: Redis edu 5

Consistent Hash

Page 15: Redis edu 5

서버의 추가/제거 시에 1/n 정도의 데이터만 사라진다.

Consistent Hash

Page 16: Redis edu 5

다른 방식은 데이터의 서버위치가 고정적이지만, CH는 유동적

Consistent Hash

Page 17: Redis edu 5

A

Add A,B,C Server

Page 18: Redis edu 5

A

B

Add A,B,C Server

Page 19: Redis edu 5

A

B

C

Add A,B,C Server

Page 20: Redis edu 5

A

B

C

1

Add Item 1

Page 21: Redis edu 5

A

B

C

1

2

Add Item 2

Page 22: Redis edu 5

A

B

C

1

2

3

4

5

Add Item 3,4,5

Page 23: Redis edu 5

A

B

C 2

3

4

5

Fail!! B Server

Page 24: Redis edu 5

A

B

C

1

2

3

4

5

Add Item 1 Again -> Allocated C Server

Page 25: Redis edu 5

A

B

C

1

2

3

4

5

1

Recover B Server -> Add Item 1

Page 26: Redis edu 5

Indexed

Page 27: Redis edu 5

Indexed 해당 데이터가 어디 존재하는지 Index 서버가 따로 존재

Page 28: Redis edu 5

Indexed 해당 데이터가 어디 존재하는지 Index 서버가 따로 존재

Page 29: Redis edu 5

Indexed Index 변경으로 데이터 이동이 자유롭다.

Page 30: Redis edu 5

Indexed Index 서버에 대한 관리가 추가로 필요.

Page 31: Redis edu 5

Indexed

User #1

User #2000

User #1000000

User #2

User #2001

User #10000

User #3

User #6

User #5000

Server User #5000

3

Index Server

User 5000 is in 3

Page 32: Redis edu 5

그외 이슈들 캐시는 얼마나 둬야 할까? 또는 사이징?

Multiget Hole 문제

로컬 캐쉬

Page 33: Redis edu 5

캐시 사이징 최근의 추세는 캐시빨…

데이터량, 처리 속도등을 고려해야 함

캐시 서버가 몇대까지 죽어도 괜찮을까?

장비가 많은것 보다는 좋은 장비에 여러 개 띄우는게 더 유리…

Page 34: Redis edu 5

로컬 캐쉬 보통은 Remote Cache

Network, Latency, 성능등의 이슈

적절한 로컬 캐쉬를 사용하면 유리

Expire Time을 짧게 가져감

Page 35: Redis edu 5

Multiget Hole 친구의 정보를 가져올 때…

캐시 서버가 1대에서 3대로 늘면…

정말 캐시 서버의 부하는 1/3일까요?

내 친구 모두를 가져오면…

Page 36: Redis edu 5

Thank you.