写点什么

长安链 RPC 服务学习笔记

作者:
  • 2022 年 8 月 30 日
    湖南
  • 本文字数:1250 字

    阅读完需:约 4 分钟

本文已参与「开源摘星计划」,欢迎正在阅读的你加入。活动链接:https://github.com/weopenprojects/WeOpen-Star


1.长安链 RPC 是基于 GRPC 来实现的,采用 HTTP/2 传输协议,并使用 Protobuf 作为接口描述语言。

功能上支持处理节点请求、基于流模式的消息订阅,通信上支持 TLS 单向、双向认证,流控机制等。

2.核心配置

  # 模式,当前仅支持grpc方式  provider: grpc  # 监听端口  port: 12301  # 检查链配置TrustRoots证书变化时间间隔,实现自动刷新,单位:s,最小值为10s  check_chain_conf_trust_roots_change_interval: 60  # 流量控制配置,采用令牌桶限流  ratelimit:    # rpc接口限速功能开关    enabled: true    # 限速类型:0-全局限速;1-基于来源IP限速    type: 0    # 每秒补充令牌数,取值:-1-不受限;0-默认值(10000)    token_per_second: -1    # 令牌桶大小,取值:-1-不受限;0-默认值(10000)    token_bucket_size: -1  subscriber:    # 历史消息订阅流控,实时消息订阅不会进行流控    ratelimit:      # 每秒补充令牌数,取值:-1-不受限;0-默认值(1000)      token_per_second: 100      # 令牌桶大小,取值:-1-不受限;0-默认值(1000)      token_bucket_size: 100  tls:    # TLS模式:    #   disable - 不启用TLS    #   oneway  - 单向认证    #   twoway  - 双向认证    mode:           twoway    priv_key_file:  ./certs/node/consensus1/consensus1.tls.key    cert_file:      ./certs/node/consensus1/consensus1.tls.crt  blacklist:                addresses:                # IP黑名单地址填写于此,若没有请为空      #- "127.0.0.1"
复制代码

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设置为WARNERROR

  brief:    log_level_default: INFO    file_path: ../log/brief.log
复制代码


用户头像

关注

还未添加个人签名 2018.05.04 加入

还未添加个人简介

评论

发布
暂无评论
长安链RPC服务学习笔记_长安链_李_InfoQ写作社区