长安链 RPC 服务学习笔记
本文已参与「开源摘星计划」,欢迎正在阅读的你加入。活动链接:https://github.com/weopenprojects/WeOpen-Star
1.长安链 RPC 是基于 GRPC 来实现的,采用 HTTP/2 传输协议,并使用 Protobuf 作为接口描述语言。
功能上支持处理节点请求、基于流模式的消息订阅,通信上支持 TLS 单向、双向认证,流控机制等。
2.核心配置
3.核心点
交易请求结构
交易请求包括交易头、payload 负载、签名.
消息订阅通知
(1)订阅者发起消息订阅请求,当前支持订阅区块消息和交易消息
(2)如果只是订阅历史数据,直接从账本存储(Store
)中获取后返回给订阅者
(3)如果需要订阅实时数据,则会有Subscriber
发起订阅事件,将chan
注册到订阅者列表中,当Core
模块有新区块产生,会发送事件通知,通过chan
通知到Subscriber
,通过RPCServer
返回给订阅者
(4)如果需要同时订阅历史和实时数据,则会分别从账本存储(Store
)以及消息订阅发布者获取,而后返回给订阅者
(5)若订阅消息发送完,RPCServer
会主动关闭订阅通道,避免资源浪费
4.限流
RPCServer
采用令牌桶方式进行限流,可以对接口请求调用和消息订阅事件推送分别进行限流,后者仅会对历史消息进行流控,对实时消息未做限制(实时消息可以通过接口请求调用限流来进行流控)。
5.请求审计日志
默认将在brief.log
日志文件输出请求审计日志。
格式
LogDateTime|IP:Port|OrgId|ChainId|TxType|TxId|Timestamp|ContractName|Method|RetCode|RetCodeMsg|RetMsg
审计日志采用INFO
级别输出,如果需要关闭请求审计日志的输出,请修改log.yml
配置文件,将brief
日志级别log_level_default
设置为WARN
或ERROR
。
评论