长安链 p2p-Liquid 架构设计学习笔记
本文已参与「开源摘星计划」,欢迎正在阅读的你加入。活动链接: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 通用工具集合。
评论