Skip to content

Guide_Distributed

pojol edited this page Jul 13, 2018 · 15 revisions

分布式缓存

使用redis集群,将数据的安全性交给redis & mysql | mongodb, 服务做成无状态,通过redis stream group 来进行负载均衡

高可用

/

负载均衡

redis stream group 的竞争消费

rpc

redis stream

  1. 单独消费
  2. 消费组
  3. 中途加入消费

RPC module

App1moduleA -> App1moduleRpc : 1. 注册module
App1moduleRpc -> redis : 1.1 创建stream队列
App2moduleB -> App2moduleRpc : 2. 发送rpc请求
App2moduleRpc -> redis : 2.1 xadd 推送消息 & 创建监听队列
App1moduleRpc -> redis : 3. xrange
App1moduleRpc -> App1moduleA : 3.1 dispatch event 2 observer
App1moduleA -> App1moduleRpc : 4. callback
App1moduleRpc -> redis : 4.1 xadd 将消息添加到侦听管道
App2moduleRpc -> redis : 4.2 xrange
App2moduleRpc -> App2moduleB : 4.3 dispatch callback 2 listener

用例

client

dispatch(rpcM_, event.rpc, "AuctionModule", event.rpc_auction_getpage, "type", page)

listen(event.rpc_auction_getpage, function(args)
	count = args[1]
    succ = args[2]
    errMsg = args[3]
        
   	if succ then
    	pageInfo = args[4]
   	else 
       	pageInfo = {}
  	end
end)

server

dispatch(rpcM_, event.rpc_subscription, "AuctionModule")

listen(event.rpc_auction_getpage, function(args)
	target = args[1]
    type = args[2]
    page = args[3]
        
    dispatch(rpcM_, event.rpc, target, event.rpc_auction_getpage, 1, true, ""
            ,{"001":{"id":1, "name":"test1", "pirce":100}
             ,"002":{"id":2, "name":"test2", "pirce":101}})
end)
Clone this wiki locally