第二章 核心架构技术

2.1 连接管理器(ConnectionManager)

SXDB的连接管理器是整个服务的核心,负责数据库实例的生命周期管理、连接池维护和并发访问控制。每个数据库对应一个独立的DbConnection对象,内部采用shared_mutex实现读写分离。

读操作获取共享锁,多个读请求可以并行执行;写操作获取独占锁,确保写入的原子性。这种设计在读多写少的典型场景下能充分利用多核CPU资源。

组件

职责

关键机制

ConnectionManager

数据库实例注册、连接分配

全局互斥锁 + 文件监控线程

DbConnection

单库连接对象,SQL执行

shared_mutex读写分离

ThreadPool

请求分发、并发执行

条件变量 + 任务队列

AuthManager

用户认证、权限校验

JWT Token + 数据库级权限

LogManager

操作审计日志

线程安全环形缓冲区

Metrics

性能指标采集

原子计数器 + 直方图

2.2 并发模型

SXDB采用多层次并发架构,从TCP连接接入到SQL执行均具备并行处理能力。

  1. 接入层:独立的accept线程持续监听新连接,接受后按连接分配给工作线程

  2. 处理层:ThreadPool线程池(默认8线程)并行处理客户端请求

  3. 数据层:每个数据库独立的shared_mutex,读读并行、读写互斥、写写互斥

✔ 线程数可通过config.ini的threads参数配置,建议设置为CPU核心数的1-2倍。

2.3 二进制通信协议

与基于文本的HTTP协议相比,SXDB的自定义二进制协议具有更低的协议开销。每个消息仅包含4字节的固定长度头加上JSON消息体,无需HTTP头部的冗余信息。

特性

二进制协议

HTTP/REST

头部开销

4字节固定

~200-500字节HTTP头

连接方式

长连接,零建连开销

短连接或连接池

序列化

JSON消息体

JSON + HTTP元数据

适用场景

高频数据操作

跨墙、调试、兼容性

平均延迟

<1ms(同主机)

~5-20ms(HTTP开销)

2.4 SQLite存储引擎优化

SXDB在SQLite基础上进行了多项深度优化,显著提升了并发性能和查询速度。

优化项

配置值

作用说明

journal_mode

WAL

写前日志,允许读写并行执行

synchronous

NORMAL

平衡安全性和性能,减少磁盘刷新

cache_size

-2000

2MB页缓存,减少磁盘I/O

temp_store

MEMORY

临时表和索引存储在内存中

mmap_size

268MB

内存映射文件I/O,避免系统调用开销

busy_timeout

5000ms

写入等待超时,避免死锁

ℹ WAL模式是并发性能的关键。在传统日志模式下,读和写互斥;而WAL模式允许读操作在写操作进行时并行执行,极大提升读取吐量。

results matching ""

    No results matching ""