venus-gateway 代码解析

gateway只是转发链组件(miner,messager)发送给本地组件(wallet,cluster,market)的一个代理,中间不会存储任何信息,所以也就没有用数据库。gateway也需要在auth服务中注册,也就是依赖auth组件,只依赖这一个服务,剩下的服务都是反向依赖gataway

  1. gateway只是转发链组件(miner,messager)发送给本地组件(wallet,cluster,market)的一个代理,中间不会存储任何信息,所以也就没有用数据库。
  2. gateway也需要在auth服务中注册,也就是依赖auth组件,只依赖这一个服务,剩下的服务都是反向依赖gataway。反响依赖的含义是wallet,cluster,market本地组件不需要暴露组件服务的ip,而是通过websocket协议连接gateway,这样gateway需要调用本地组件时,通过websocket发起请求。
  3. 本地组件wallet通过请求walletevent/wallet_event.go的(w WalletEventStream) ListenWalletEvent()rpc接口方法来进行websocket连接的。通过这个方法连接时,gateway会生成一个golang 的channel,然后把channel通过 (w walletConnMgr) addNewConn()方法缓存起来,以备gateway向wallet服务发起请求。例如:miner服务需要签名时,通过rpc接口发送WalletSign请求,这个时候(w WalletEventStream) WalletSign()方法来处理这个http的rpc请求,处理方式是利用(w walletConnMgr) getChannels()方法获取channel,然后对channel发送walletSign请求给wallet。
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
杜满想Elvin
杜满想Elvin
老程序员,区块链架构师