Closed ing-eoking closed 11 months ago
@namsic 리뷰 부탁드립니다
@jhpark816 @namsic
ptr->ketama.weighted
의 제거에 관하여server_add
의 경우 weight가 설정된 서버를 추가한 상황ptr->ketama.weighted
를 true로 변경 (set_behavior 를 통한 변경 X)ptr->ketama.weighted
을 변경할 수 있는 함수
arcus-java-client 내에서 weight 관련 처리가 존재하는가?
spy-memcached 에서 weight 관련 처리
@ing-eoking
server_add()
함수와 memcached_server_push_with_count
함수에 의하여
weighted 플래그가 설정하는 것이 맞는 동작인가요?
@jhpark816 저는 맞는 동작이라고 생각합니다.
server_add
와 memcached_server_push_with_count
둘 다 기존 서버에서 사용자가 서버를 추가하는 경우이며,
weight를 갖는 서버 추가를 시도한다면 weighted 플래그를 변경할 수 있는 상황이 만들어집니다.
이때에 사용자가 distribution type이나 weighted 플래그를 설정하게 하기 보다는 해당 함수들에서 내부적으로 처리해주는 편이 낫다고 생각됩니다.
server_add() 함수와 memcached_server_push_with_count 함수에 의하여 weighted 플래그가 설정하는 것이 맞는 동작인가요?
server_add 와 memcached_server_push_with_count 둘 다 기존 서버에서 사용자가 서버를 추가하는 경우이며, weight를 갖는 서버 추가를 시도한다면 weighted 플래그를 변경할 수 있는 상황이 만들어집니다. 이때에 사용자가 distribution type이나 weighted 플래그를 설정하게 하기 보다는 해당 함수들에서 내부적으로 처리해주는 편이 낫다고 생각됩니다.
@ing-eoking 기존 distribution type이 KETAMA(_SPY)가 아닌데 사용자가 weight를 갖는 서버를 추가하면 어떻게 동작하는 것이 맞나요?
기존 distribution type이 KETAMA(_SPY)가 아닌데 사용자가 weight를 갖는 서버를 추가하면 어떻게 동작하는 것이 맞나요?
"distribution type을 KETAMA 또는 KETAMA_SPY로 변경 후 weight 적용"
위와 같은 동작이 가장 알맞는다고 생각합니다.
기존 distribution type이 KETAMA(_SPY)가 아닌데 사용자가 weight를 갖는 서버를 추가하면 => distribution type을 KETAMA 또는 KETAMA_SPY로 변경 후 weight 적용하는 것이 가장 알맞다고 생각합니다.
- 이 때 ketama로 변경해야 하는지 ketama_spy로 변경해야 하는지는 무엇을 기준으로 판단하게 되나요?
기존 type을 기준으로 변경한다고 생각합니다.
ketama일 경우, ketama_weighted ketama_spy이면, ketama_spy_weighted로 변경
- 참고로 저는 위 경우에서 판단 기준이 모호하기 때문에 무시하는 것이 가장 낫지 않나 생각합니다.
무시한다는 것은 설정된 weight 값을 무시하고 continuum hash ring을 구성한다는 말인가요? 혹시 모호한 부분에 대해서 말씀해주실 수 있나요?
우선 제 생각은 사용자가 weight가 없던 서버 리스트에 weight를 갖는 서버를 추가했다는 것은 사용자가 새로 추가된 서버에 부하를 더 주겠다는 의미가 됩니다. (weight의 default는 1이며, 이보다 큰 값을 설정해야 weighted 플래그가 true로 변경됩니다.)
기존 코드가 두 플래그가 continuum hash ring 생성에서 다음에 관여하고 있고,
기존의 공평한 continuum hash(서버가 모두 공평한 distribution을 가짐) 에서 추가된 서버에 부하를 더 주고 싶은 상황이므로 생성 문자열은 그대로 두고, 가중치만 변경할 수 있게 하는 것이 맞다고 생각합니다.
기존 distribution type이 KETAMA(_SPY)가 아닌데 사용자가 weight를 갖는 서버를 추가하면 어떻게 동작하는 것이 맞나요?
기존 type을 기준으로 변경한다고 생각합니다. ketama일 경우, ketama_weighted. ketama_spy이면, ketama_spy_weighted로 변경
RANDOM
또는 MODULA
등의 Non-Ketama type인데server_add()
로 weight를 주었을 때를 묻고자 했습니다. 3번 항목을 결정하기가 어렵기 때문에 weight 인자는 무시하고 기존 distribution type(MODULA
, RANDOM
, …)을 유지해야 하지 않나 생각한 것 이고요.
Non-Ketama type 인데 weight있는 서버를 주었다고 Ketama type으로 변경하는 것은 아닙니다. 해당 type들은 weight 기능을 갖지 않는 type이며, 동작을 변경할 필요가 없습니다. 해당 경우는 Non-Weight-Ketama 동작을 Weight-Ketama로 바꾸는 경우입니다.
앞으로의 내용은 jam2in/arcus-works#485 에 추가해주시면 감사하겠습니다.
263
위 PR의 후속 PR이며,
MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED
타입을 제거합니다. (MEMCACHED_BEHAVIOR_KETAMA
는 좀 더 검토 후 다음 PR로 올릴 예정)MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED
타입이 제거됨에 따라 일부 코드가 조금 변경되었습니다.변경 사항은 아래와 같습니다.
MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED
를 통해 weight를 변경하던 방식을 distribution type을 통해 변경하도록 수정(참고) Distribution Type 별 동작
pre_behavior_ketama_weighted
테스트 이름을pre_distribution_ketama_weighted
로 변경