同時接続数30万超のチャットサービスのメッセージ配信基盤をRedis Pub/SubからRedis Streamsにした話
同時接続数30万超のチャットサービスのメッセージ配信基盤をRedis Pub/SubからRedis Streamsにした話
https://engineering.linecorp.com/ja/blog/redis-pub_Sub-redis-streams
LINEのエンジニアブログからメッセージ配信基盤を移行したということで
記事が出ていましたのでシェアします。
LINEはこれまで24シャード、48ノード構成のRedis ClusterでPub/Subによる
メッセージ配信を行っていましたが、ピーク時で1.5Gbpsのネットワーク帯域を消費しており
ネットワーク帯域がボトルネックになって拡張が難しくなっていたようです。
そこでRedis Streamsという基盤に移行したそうで、
これによりネットワーク帯域が11Mbps程度に大きく抑えられたということでかなり効果があったようです。
デメリットとしてPub/Subで動かす場合に比べるとStreamsのほうが書き込みが発生する分、
2倍程度のシャード数、ノード数で運用しているようで、
運用コストについては言及されていませんが、
おそらく上がっているのではないかという気がします。
また、Streamsの場合、特定のメッセージは書き込んだシャードからしか読むことができないため
複数個のストリームをDBに書き込むようなケースではそれぞれのシャードに接続する必要があり、
実用的に厳しいように感じのであくまでストリームが1つもしくは2つ程度に限られるケースで
有効ということなのかなと思います。