Sky19

nginx about waf

This project is maintained by wangfakang

redis的pub\sub介绍

在之前的动态upstream管理项目中有提到在进行集群管理nginx的动态upstream的时候是使用 consul相关组件来做得,其实我们也可以利用redis的pub\sub机制来进行管理集群的nginx的动态upstream的下发.

基本原理:

简单实列:

订阅端:
订阅端订阅了两个通道的消息.

fakang@fakang-pc:~$ redis-cli 
127.0.0.1:6379> SUBSCRIBE china jappan
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "china"
3) (integer) 1
1) "subscribe"
2) "jappan"
3) (integer) 2


1) "message"
2) "china"
3) "hello"

发布端:
此时发布端向china的通道推送了一条消息.

fakang@fakang-pc:~$ redis-cli 
127.0.0.1:6379> PUBLISH china "hello"
(integer) 1

注: 上面的这个interger: 1是表示此时只有一个成功订阅端订阅了china这个topic.

redis的pub\sub的简单解析:

1.其实redis在发布端维护了一种表,这张表,这张表饿内容就是:以相关通道名称(如china japan)为key,然后相关的订阅端为value 进行的一个hash表,如果同一个通道(如china)此时有两个client进行了订阅,则此时key为china的后面就是一个链表挂载了两个 client节点.
2.发布端进行发布消息饿时候,找到相应的key然后遍历后面挂载饿链表依次进行发送消息.
3.订阅端然后进行在队列中消费相应的消息.

Communite

在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流

Thx

Author