2017-05-04 5 views
1

많은 수의 청취자에게 pub/sub를 사용하는 작업이 있습니다. 여기 docs에서 가입의 예를 단순화 :Redis (redis-py)는 얼마나 많은 채널을 처리 할 수 ​​있습니까?

r = redis.StrictRedis(...) 
p = r.pubsub() 
p.subscribe('my-first-channel', 'my-second-channel', ...) 

for message in p.listen(): 
...  # do something with the message 

은 가정하자 나는 채널 client-#id에 대한 클라이언트를 구독합니다. 각 클라이언트에 대해 하나의 채널. 문제는 다음과 같습니다. 수백 또는 수천 명의 사용자가있을 경우이 방법을 사용해도 괜찮습니까? 모든 채널을 하나의 채널에 등록하고 수신시 필터링 할 메시지에 user-#id을 인코딩해야합니까?

답변

0

귀하의 Redis를 프로비저닝하는 방법과 생성하는 트래픽의 양에 관한 문제입니다. 클라이언트 가입은 네트워크 연결 일 뿐이므로 이들 중 상당수를 사용할 수 있습니다. Redis는 매우 강력하고 상대적으로 취약한 CPU 코어에서도 서버의 NIC를 쉽게 포화시킬 수 있으므로 모든 100K의 클라이언트가 항상 통신 중이면 병목 현상이 발생할 수 있습니다. 이 경우에는 Redis 클러스터를 배치하여 수평 확장 및 부하 처리를 원할 수 있습니다.