|
ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
|
NSP服务端模板类,负责协调多个读/写端对等节点之间的数据同步。 More...
#include <nsp_server.h>
Public Types | |
| enum | { esend_maxcount = 100 } |
| 常量定义。 More... | |
| using | tnsp_server = nsp_server<ENUMDB, TDerived, T> |
| 本类型的别名,简化内部引用。 | |
Static Public Member Functions | |
| static void | init (ndb_modular< ENUMDB, T, TDerived > *adbmodule) |
| 绑定权威数据库模块并注册通道消息处理器。 | |
| static void | channel_register_reply (i64_actorid aactorid) |
| 将当前对等节点/订阅快照发送回新注册的节点。 | |
| static void | channel_channel_data (i64_actorid aactorid, const np_channel_register< T > *recv) |
| 将初始行快照流式传输到新注册的节点,支持有界分块。 | |
| static void | channel_dataid_sync (i64_actorid aactorid, const np_channel_register< T > *recv) |
| 将新节点的订阅范围广播给已有的对等节点。 | |
| static void | handle (TDerived *, const message< np_channel_register< T > > &adata) |
| 处理对等节点注册消息,完成注册-快照-通告三步流程。 | |
| static void | handle (TDerived *, const message< np_channel_exit< T > > &adata) |
| 处理对等节点退出消息,清理该节点的所有订阅状态。 | |
| static void | handle (TDerived *, const message< np_channel_data< T > > &adata) |
| 处理来自对等节点的增量写入消息,更新权威数据库。 | |
NSP服务端模板类,负责协调多个读/写端对等节点之间的数据同步。
作为权威数据源的守护进程,管理对等节点的注册、订阅范围协商、 初始快照分发和增量写入中继。所有状态均为静态,每个数据库类型共享一份。
| ENUMDB | 数据库枚举标识符 |
| TDerived | 派生Actor类型 |
| T | 数据行的protobuf消息类型 |
| anonymous enum |
|
static |
将初始行快照流式传输到新注册的节点,支持有界分块。
将初始行快照流式传输到新注册的节点,支持有界分块。
| aactorid | 目标节点的Actor ID |
| recv | 注册消息(包含订阅范围信息) |
| aactorid | 目标节点的Actor ID |
| recv | 注册消息(包含订阅范围信息) |
将初始行快照流式传输到新注册的节点,支持有界分块。
实现逻辑:
| ENUMDB | 数据库枚举标识符 |
| TDerived | 派生Actor类型 |
| T | 数据行的protobuf消息类型 |
| aactorid | 目标节点的Actor ID |
| recv | 注册消息(包含订阅范围信息) |
将初始行快照流式传输到新注册的节点,支持有界分块。
实现逻辑:
| ENUMDB | 数据库枚举标识符 |
| TDerived | 派生Actor类型 |
| T | 数据行的protobuf消息类型 |
| aactorid | 目标节点的Actor ID |
| recv | 注册消息(包含订阅范围信息) |
全量订阅者以有界分块方式接收整个数据集。
部分订阅者仅接收其声明的读/写行集合。
当最后一个分块恰好落在边界上时,发送一个空尾包作为结束。
|
static |
将新节点的订阅范围广播给已有的对等节点。
将新节点的订阅范围广播给已有的对等节点。
| aactorid | 新节点的Actor ID |
| recv | 注册消息(包含订阅范围和字段权限) |
| aactorid | 新节点的Actor ID |
| recv | 注册消息(包含订阅范围和字段权限) |
将新节点的订阅范围广播给已有的对等节点。
构造 np_channel_dataid_sync<T> 消息,包含:
将消息发送给除新节点外的所有已注册对等节点, 使它们能够更新路由表和退出状态。
| ENUMDB | 数据库枚举标识符 |
| TDerived | 派生Actor类型 |
| T | 数据行的protobuf消息类型 |
| aactorid | 新节点的Actor ID |
| recv | 注册消息(包含订阅范围和字段权限) |
将新节点的订阅范围广播给已有的对等节点。
构造 np_channel_dataid_sync<T> 消息,包含:
将消息发送给除新节点外的所有已注册对等节点, 使它们能够更新路由表和退出状态。
| ENUMDB | 数据库枚举标识符 |
| TDerived | 派生Actor类型 |
| T | 数据行的protobuf消息类型 |
| aactorid | 新节点的Actor ID |
| recv | 注册消息(包含订阅范围和字段权限) |
每个已有对等节点都需要新对等节点的范围,以保持路由和退出状态完整。
|
static |
将当前对等节点/订阅快照发送回新注册的节点。
将当前对等节点/订阅快照发送回新注册的节点。
| aactorid | 新注册节点的Actor ID |
| aactorid | 新注册节点的Actor ID |
将当前对等节点/订阅快照发送回新注册的节点。
构造 np_channel_register_reply<T> 消息,包含:
| ENUMDB | 数据库枚举标识符 |
| TDerived | 派生Actor类型 |
| T | 数据行的protobuf消息类型 |
| aactorid | 新注册节点的Actor ID |
将当前对等节点/订阅快照发送回新注册的节点。
构造 np_channel_register_reply<T> 消息,包含:
| ENUMDB | 数据库枚举标识符 |
| TDerived | 派生Actor类型 |
| T | 数据行的protobuf消息类型 |
| aactorid | 新注册节点的Actor ID |
返回对等节点范围和合并的字段规则,使新对等节点可以立即参与。
|
static |
处理来自对等节点的增量写入消息,更新权威数据库。
处理来自对等节点的增量写入消息,更新权威数据库。
| aactor | 服务端Actor指针 |
| adata | 增量数据消息 |
| aactor | 服务端Actor指针 |
| adata | 增量数据消息 |
处理来自对等节点的增量写入消息,更新权威数据库。
处理流程:
| ENUMDB | 数据库枚举标识符 |
| TDerived | 派生Actor类型 |
| T | 数据行的protobuf消息类型 |
| aactor | 服务端Actor指针 |
| adata | 增量数据消息 |
处理来自对等节点的增量写入消息,更新权威数据库。
处理流程:
| ENUMDB | 数据库枚举标识符 |
| TDerived | 派生Actor类型 |
| T | 数据行的protobuf消息类型 |
| aactor | 服务端Actor指针 |
| adata | 增量数据消息 |
说明逻辑有问题
|
static |
处理对等节点退出消息,清理该节点的所有订阅状态。
处理对等节点退出消息,清理该节点的所有订阅状态。
| aactor | 服务端Actor指针 |
| adata | 退出消息 |
| aactor | 服务端Actor指针 |
| adata | 退出消息 |
处理对等节点退出消息,清理该节点的所有订阅状态。
清理操作包括:
| ENUMDB | 数据库枚举标识符 |
| TDerived | 派生Actor类型 |
| T | 数据行的protobuf消息类型 |
| aactor | 服务端Actor指针 |
| adata | 退出消息 |
处理对等节点退出消息,清理该节点的所有订阅状态。
清理操作包括:
| ENUMDB | 数据库枚举标识符 |
| TDerived | 派生Actor类型 |
| T | 数据行的protobuf消息类型 |
| aactor | 服务端Actor指针 |
| adata | 退出消息 |
|
static |
处理对等节点注册消息,完成注册-快照-通告三步流程。
处理对等节点注册消息,完成注册-快照-通告三步流程。
| aactor | 服务端Actor指针 |
| adata | 注册消息 |
| aactor | 服务端Actor指针 |
| adata | 注册消息 |
处理对等节点注册消息,完成注册-快照-通告三步流程。
处理流程:
| ENUMDB | 数据库枚举标识符 |
| TDerived | 派生Actor类型 |
| T | 数据行的protobuf消息类型 |
| aactor | 服务端Actor指针 |
| adata | 注册消息 |
处理对等节点注册消息,完成注册-快照-通告三步流程。
处理流程:
| ENUMDB | 数据库枚举标识符 |
| TDerived | 派生Actor类型 |
| T | 数据行的protobuf消息类型 |
| aactor | 服务端Actor指针 |
| adata | 注册消息 |
字段权限按对等节点Actor类型合并,而非按单个对等节点ID。
注册分三步完成:回复对等节点状态、发送快照、通告新对等节点。
|
static |
绑定权威数据库模块并注册通道消息处理器。
绑定权威数据库模块并注册通道消息处理器。
| adbmodule | 数据库模块指针 |
| adbmodule | 数据库模块指针 |
绑定权威数据库模块并注册通道消息处理器。
初始化流程:
| ENUMDB | 数据库枚举标识符 |
| TDerived | 派生Actor类型 |
| T | 数据行的protobuf消息类型 |
| adbmodule | 数据库模块指针 |
绑定权威数据库模块并注册通道消息处理器。
初始化流程:
| ENUMDB | 数据库枚举标识符 |
| TDerived | 派生Actor类型 |
| T | 数据行的protobuf消息类型 |
| adbmodule | 数据库模块指针 |
NSP服务器监听对等节点注册消息。
当新对等节点加入时,触发注册流程。 处理器将完成注册-快照-通告三步流程。
监听对等节点写入消息。
当对等节点发送增量数据更新时触发。 处理器将更新权威数据库并应用字段权限过滤。
监听对等节点断开连接通知。
当对等节点退出或断开连接时触发。 处理器将清理该节点的所有订阅状态。