写点什么

长安链 p2p-Liquid 架构设计学习笔记

作者:
  • 2022 年 8 月 31 日
    湖南
  • 本文字数:1309 字

    阅读完需:约 4 分钟

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


Liquid 架构在功能层面由上至下总共划分为三个层级,分别是:网络应用层、网络管理层、安全传输层。


  • 网络应用层:是指使用 Liquid 来实现网络通讯的上层应用集合,Liquid 是使用应用协议(protocol.ID)来区分标识上层应用的,每个应用模块都应该有一个全局唯一的应用协议。应用协议描述详见 4.1。消息发布及订阅模块(PubSub)是 Liquid 内置的一个应用。


  • 网络管理层:负责 Liquid 网络节点间连接状态管理,由多个管理组件组成,它们包括但不限于:应用协议管理(包含应用协议交换机)、节点信息管理(PeerStore)、连接管理(ConnMgr)、数据流管理(SendStreamPool/SendStreamMgr/ReceiveStreamMgr)、黑名单管理、组播组件、连接状态维护组件(ConnSupervisor)、节点发现(Discovery)、节点路由(PeerRouting)、节点中继、NAT 穿透等。其中应用协议交换、节点发现也是基于应用协议支持实现的,它们属于管理层内置的应用模块。


  • 安全传输层:负责底层网络协议支持及传输加密,目前已实现 TCP/TLS、QUIC 两种协议支持,未来会有更多(比如 WebSocket、SCTP 等)协议支持。


源代码在:

https://git.chainmaker.org.cn/chainmaker/net-liquid.git


下载下来进行代码分析

主要包括:

1.core 核心包

2.discovery 服务发现

3.host

4.liquidnet

5.logger

6.pubsub

7.simple

8.tlssupport


核心包内每个子包说明如下:

  • core/basic 基础接口包,包含 Starter、Stopper 以及两者组合封装接口 Switcher。

  • core/blacklist 黑名单接口定义。

  • core/broadcast PubSub 消息发布/订阅功能接口定义。

  • core/discovery 节点发现相关接口定义,包含 Announcer、Discoverer 以及两者组合封装接口 Discovery。

  • core/groupmulticast 组播组件接口定义。

  • core/handler 用于回调的处理器函数类型定义。

  • core/host 网络 Host 接口定义、网络活动事件通知接口定义。

  • core/mgr 管理组件接口定义,包含连接管理(ConnMgr)、连接状态维护(ConnSupervisor)、应用协议管理器(ProtocolManager)、应用协议交换机(ProtocolExchanger)、发送流池(SendStreamPool)、发送流池管理(SendStreamPoolManager)、接收流管理(ReceiveStreamManager)等接口定义。

  • core/network 传输层网络状态机相关接口定义,包含发送流(SendStream)、接收流(ReceiveStream)、双向流(Stream)、连接(Conn)、状态(Stat)、拨号器(Dialer)、监听器(Listener)、网络状态机(network)等以及相关的其他的接口或类型定义。

  • core/peer 节点相关概念接口定义,主要包括节点 ID(peer.ID)类型定义。

  • core/protocol 协议相关定义,主要包括应用协议(protocol.ID)类型定义及网络数据包结构体定义。

  • core/reuse 端口复用相关。

  • core/routing 节点路由相关接口定义。

  • core/store 节点信息存储相关概念接口定义,主要包括节点地址簿(AddrBook)、节点协议簿(ProtocolBook)以及两者组合封装接口(PeerStore)定义。

  • core/types 通用类型或结构体,包括先进先出缓存(FIFOCache)、固定大小超时控制缓存(FixedCapDurationCache)、连续数字记录集(IntervalSet)、通用集(Set)等。

  • core/util 通用工具集合。

用户头像

关注

还未添加个人签名 2018.05.04 加入

还未添加个人简介

评论

发布
暂无评论
长安链 p2p-Liquid 架构设计学习笔记_长安链_李_InfoQ写作社区