weevent业务导图
2020-11-26 10:09:01 5 举报
AI智能生成
WeEvent区块链异步通信
作者其他创作
大纲/内容
weevent-governance
事件治理模块,提供一个Web管理端
支持区块链信息浏览、Topic事件治理、流计算、大文件传输等
weevent-processor
weevent-governance实时流计算功能中,规则引擎的分布式运行容器。提供规则的增删改查接口。
weevent-file
提供大文件传输功能
weevent-jms
符合JMS规范,以jar包形式提供核心的发布订阅功能
weevent-jmeter
系统要求
FISCO BCOS 2.2.0
实际部署:2.2/2.3版本可用;2.4+部署合约失败
JDK1.8 or OpenJDK 1.9
如果是1.8.0.231及以上版本,在使用时都需要配置jvm参数-Djdk.tls.namedGroups="secp256k1"。profile可以加上export JAVA_OPTIONS=xxx
可选:Mysql5.7、Zookeeper3.5
weevent-core
集成核心发布订阅功能。
支持Fisco\Fabric两种区块链网络。此处主要学习Fisco相关知识。
主要业务
包含消费者、订阅者、网络三大模块
类图
(右键新标签打开)
其他业务
工具类
启动时部署TC合约
参数检查
配置类
读取Fisco/Fabric网络配置
业务知识点
包含合约
Topic.sol
定义主题的权限、操作者;事件的发布和消费
TopicContorller.sol
操作主题
主题定义
长度[32,128]
生产者发布主题
定义一个主题,不可使用MQTT通配符
消费者订阅主题
可使用MQTT通配符匹配不同层级主题
事件定义
存储事件的id、主题、内容(二进制字节码数据)和扩展Map信息。定义静态值如位移、主题匹配字符等
消费者模型
术语定义
位移
取值:OFFSET_LAST、OFFSET_FIRST,或事件ID(包含块高)、块高
事件ID
主题-序号-所在块高
操作
订阅
输入主题、位移、已订阅消费者ID(Map)
通过web3sdk控制TopicController合约检查订阅合约是否存在
消费
检查、转换位移为块高
消费者ID
UUID.randomUUID()
启动监听程序
独立线程
监听块高<链上块高
取历史区块交易回执并过滤对应主题的事件,返回待消费事件列表
生产者模型
发布
输入主题、群组等,检查等
通过web3sdk控制TopicController合约发布新的Topic合约
网络模型
此处网络特指FiscoBcos的网络,Fabric的网络模型类似
类图(右键新标签打开)
区块网络
依赖web3sdk 2.x
delegate实例
读入fisco配置
通过web3sdk初始化fisco连接池
提供方法
主题
增、删、权限
事件
getEvent:单事件信息
loop:获取区块事件列表
监听
监听消费网络中的新事件
链信息
取区块、群组、交易、节点信息
消费网络
Subscription
订阅者对象
消费者通过主题、位移等参数生成订阅实例线程
提供启停、待消费事件相关等方法
MaintEventLoop
从最新区块位置监听获取新事件,并推送订阅者
继承NotifyTask
HistoryEventLoop
从入参位移变量获取历史事件,并推送订阅者
继承NotifyTask
NotifyTask
StopableTask
Runnable
事件消费实现类。存储已消费事件信息,推送最新事件
消费者Consumer
线程级,提供循环以读取最新事件信息并消费
继承主题模型,实现消费者、监听接口
生产者Producer
继承主题模型,实现生产者接口
提供生产消息接口
主题模型AdminTopic
有区块网络实例,提供主题、事件、区块、节点等区块链相关方法
其他知识点
MQTT协议主题通配符
/ :顶层分隔符。分割主题树层次,订阅者指定主题遇到两个通配符时使用。
# :可以匹配主题内任何层次
+ :匹配一层
Java8特性
CompletableFuture
Optional
Stream
weevent-client
java独立客户端SDK
连接broker服务端进行发布订阅业务
提供rest、jsonrpc、mqtt、stomp等方式接入客户端实现
用例代码
业务类定义
事件WeEvent
主题TopicInfo
错误码ErroCode
返回SendResult
异常处理
weevent-build
安装、构建weevent
安装install-all.sh
打包package.sh
调用子脚本:包含broker\gateway\governance\processor\zookeeper的安装脚本
weevent-broker
服务端入口。提供rest、jsonrpc、mqtt、stomp方式的实现。
接入方式
rest
jsonrpc
mqtt
stomp
合约部署、升级
系统启动时部署TopicController合约
weevent-gateway
网关入口,分发各种类型请求
0 条评论
下一页