使用Rust与ClickHouse构建高效可靠的日志系统
第三届中国Rust开发者大会 使用Rust与ClickHouse构建高 效可靠的日志系统 刘炜 腾讯云(专有云) • 自我介绍 • 系统介绍 • 整体架构 • 系统实现 • 遇到问题 大纲 自我介绍 • 大龄码农 • 做过嵌入式/CDN/数据库开发 • 从C/C++到Rust • 现在在腾讯云(专有云)从事日志系统的开发 自我介绍 PhoTto / image / chart 系统介绍 系统介绍 • 属于腾讯专有云PaaS平台(TCS) • 承接TCS底座日志 • 从Loki=>Menicus • 提供日志的搜索/报警/处理等功能 系统介绍 • 为什么放弃 Loki • 资源占用过大 • 统计/计算能力比较弱 • 组件过多,排查问题比较困难 • 商业使用不友好的开源协议 • 为什么选择Mencius+ClickHouse • 存储计算与业务分离 • 每天 100G • 磁盘 • 压缩比 1:13 • 内存 • Mencius • 200M左右 • ClickHouse • 2G以下 • 接入端 • API Gateway • 日志服务(Mencius) • 存储(ClickHouse) 整体架构 • 协议层 • 处理层 • 计算层 • 存储层 系统实现 协议层 • 支持协议 • Loki • 写入 • Json/ProtoBuf0 码力 | 19 页 | 2.66 MB | 1 年前3FISCO BCOS 2.3.0 中文文档
CA白名单功能 AMOP认证功能 合约事件推送 运行时启动新群组 更新 支持Channel Message v2协议 节点连接支持域名配置 部署合约的二进制长度放宽至256K 交易出错打印更全面的日志 build_chain.sh生成的SDK证书名更名为sdk.crt和sdk.key 为提升性能进行了代码实现细节的调整 降低了节点内存的占用 修复 修复了在某种场景下channel连接抛异常的错误 加入兼容性配置 交易编码中加入chainID和groupID 交易中加入二进制缓存 创世块中加入timestamp信息 增加了一些precompile的demo 支持用Docker搭链 删除不必要的日志 删除不必要的重复操作 Bug修复 RPC中处理参数时asInt异常造成程序退出的Bug 交易执行Out of gas时交易一直在交易池中不被处理的Bug 不同组间可以用相同的交易二进制重放的Bug 检查机器的30300~30303,20200~20203,8545~8548端口是否被占用。 检查进程 检查进程是否启动 正常情况会有类似下面的输出; 如果进程数不为4,则进程没有启动(一般 是端口被占用导致的) 检查日志输出 如下,查看节点node0链接的节点数 [INFO] Output Dir : /home/ubuntu/fisco/nodes [INFO] CA Key Path0 码力 | 1227 页 | 10.79 MB | 1 年前3FISCO BCOS 2.2.0 中文文档
CA白名单功能 AMOP认证功能 合约事件推送 运行时启动新群组 更新 支持Channel Message v2协议 节点连接支持域名配置 部署合约的二进制长度放宽至256K 交易出错打印更全面的日志 build_chain.sh生成的SDK证书名更名为sdk.crt和sdk.key 为提升性能进行了代码实现细节的调整 降低了节点内存的占用 修复 修复了在某种场景下channel连接抛异常的错误 加入兼容性配置 交易编码中加入chainID和groupID 交易中加入二进制缓存 创世块中加入timestamp信息 增加了一些precompile的demo 支持用Docker搭链 删除不必要的日志 删除不必要的重复操作 Bug修复 RPC中处理参数时asInt异常造成程序退出的Bug 交易执行Out of gas时交易一直在交易池中不被处理的Bug 不同组间可以用相同的交易二进制重放的Bug bash nodes/127.0.0.1/start_all.sh 检查进程 检查进程是否启动 正常情况会有类似下面的输出;如果进程数不为4,则进程没有启动(一般是 端口被占用导致的) 检查日志输出 如下,查看节点node0链接的节点数 正常情况会不停地输出链接信息,从输出可以看出node0与另外3个节点有链 接。 执行下面指令,检查是否在共识 正常情况会不停输出++++Generating0 码力 | 1156 页 | 10.03 MB | 1 年前3FISCO BCOS 2.4.0 中文文档
CA白名单功能 AMOP认证功能 合约事件推送 运行时启动新群组 更新 支持Channel Message v2协议 节点连接支持域名配置 部署合约的二进制长度放宽至256K 交易出错打印更全面的日志 build_chain.sh生成的SDK证书名更名为sdk.crt和sdk.key 为提升性能进行了代码实现细节的调整 降低了节点内存的占用 修复 修复了在某种场景下channel连接抛异常的错误 加入兼容性配置 交易编码中加入chainID和groupID 交易中加入二进制缓存 创世块中加入timestamp信息 增加了一些precompile的demo 支持用Docker搭链 删除不必要的日志 删除不必要的重复操作 Bug修复 RPC中处理参数时asInt异常造成程序退出的Bug 交易执行Out of gas时交易一直在交易池中不被处理的Bug 不同组间可以用相同的交易二进制重放的Bug 检查机器的30300~30303,20200~20203,8545~8548端口是否被占用。 检查进程 检查进程是否启动 正常情况会有类似下面的输出; 如果进程数不为4,则进程没有启动(一般 是端口被占用导致的) 检查日志输出 如下,查看节点node0链接的节点数 [INFO] Output Dir : /home/ubuntu/fisco/nodes [INFO] CA Key Path0 码力 | 1314 页 | 11.21 MB | 1 年前3peewee Documentation Release 3.6.0
from peewee import * # SQLite database using WAL journal mode and 64MB cache. sqlite_db = SqliteDatabase('/path/to/app.db', pragmas={ 'journal_mode': 'wal', 'cache_size': -1024 * 64}) # Connect to th/to/app.db', regexp_function=True, timeout=3, pragmas={'journal_mode': 'wal'}) from playhouse.postgres_ext import PostgresqlExtDatabase # Use Postgres (and register hstore extension) org/2/library/sqlite3.html#sqlite3.connect]. sqlite_db = SqliteDatabase('my_app.db', pragmas={'journal_mode': 'wal'}) class BaseModel(Model): """A base model that will use our Sqlite database.""" class Meta:0 码力 | 377 页 | 399.12 KB | 1 年前3peewee Documentation Release 3.6.0
some basic, database- specific configuration options. from peewee import * # SQLite database using WAL journal mode and 64MB cache. sqlite_db = SqliteDatabase('/path/to/app.db', pragmas={ (continues on Contents: peewee Documentation, Release 3.6.0 (continued from previous page) 'journal_mode': 'wal', 'cache_size': -1024 * 64}) # Connect to a MySQL database on network. mysql_db = MySQLDatabase('my_app' = SqliteExtDatabase('/path/to/app.db', regexp_function=True, timeout=3, pragmas={'journal_mode': 'wal'}) from playhouse.postgres_ext import PostgresqlExtDatabase # Use Postgres (and register hstore extension)0 码力 | 302 页 | 1.02 MB | 1 年前3peewee Documentation Release 3.5.0
from peewee import * # SQLite database using WAL journal mode and 64MB cache. sqlite_db = SqliteDatabase('/path/to/app.db', pragmas={ 'journal_mode': 'wal', 'cache_size': -1024 * 64}) # Connect to th/to/app.db', regexp_function=True, timeout=3, pragmas={'journal_mode': 'wal'}) from playhouse.postgres_ext import PostgresqlExtDatabase # Use Postgres (and register hstore extension) org/2/library/sqlite3.html#sqlite3.connect]. sqlite_db = SqliteDatabase('my_app.db', pragmas={'journal_mode': 'wal'}) class BaseModel(Model): """A base model that will use our Sqlite database.""" class Meta:0 码力 | 347 页 | 380.80 KB | 1 年前3peewee Documentation Release 3.5.0
from peewee import * # SQLite database using WAL journal mode and 64MB cache. sqlite_db = SqliteDatabase('/path/to/app.db', pragmas={ 'journal_mode': 'wal', 'cache_size': -1024 * 64}) # Connect to a = SqliteExtDatabase('/path/to/app.db', regexp_function=True, timeout=3, pragmas={'journal_mode': 'wal'}) from playhouse.postgres_ext import PostgresqlExtDatabase # Use Postgres (and register hstore extension) other arbitrary sqlite3 parameters. sqlite_db = SqliteDatabase('my_app.db', pragmas={'journal_mode': 'wal'}) class BaseModel(Model): """A base model that will use our Sqlite database.""" class Meta: database0 码力 | 282 页 | 1.02 MB | 1 年前3FISCO BCOS 2.5.0 中文文档
可视化节点管理 基于WeBASE,提供节点管理器 动态管理节点 支持动态新增、剔除、变更节点 动态更改配置 支持动态变更系统配置 数据备份与恢复 提供数据导出与恢复服务组件 监控统计 输出统计日志,提供监控工具 监管审计 基于WeBASE,提供监管审计入口 架构 FISCO BCOS 在2.0中,创新性提出“一体两翼多引擎”架构,实现系统吞吐能 力的横向扩展,大幅提升性能,在安全性、可运维性、易用性、可扩展性 重构libdevcrypto模块,优化代码结构,使用TASSL实现国密和非国密 TLS连接 优化存储模块openTable的锁实现 优化区块数据编码为并行 优化大对象析构耗时为异步 优化日志输出机制,降低日志输出对性能的影响 优化MHD和交易池模块的线程数,减少内存占用 优化MySQL存储适配器实现,优化ZdbStorage的代码实现 修复 修复同一个区块内修改Entry,后续交易查询该Entry结果出错的问题 CA白名单功能 AMOP认证功能 合约事件推送 运行时启动新群组 更新 支持Channel Message v2协议 节点连接支持域名配置 部署合约的二进制长度放宽至256K 交易出错打印更全面的日志 build_chain.sh生成的SDK证书名更名为sdk.crt和sdk.key 为提升性能进行了代码实现细节的调整 降低了节点内存的占用 修复 修复了在某种场景下channel连接抛异常的错误0 码力 | 1456 页 | 13.35 MB | 1 年前3peewee Documentation Release 3.0.0
from peewee import * # SQLite database using WAL journal mode and 64MB cache. sqlite_db = SqliteDatabase('/path/to/app.db', pragmas=( ('journal_mode', 'wal'), ('cache_size', -1024 * 64))) # Connect h/to/app.db', regexp_function=True, timeout=3, pragmas=(('journal_mode', 'wal'),)) from playhouse.postgres_ext import PostgresqlExtDatabase # Use Postgres (and register hstore playhouse.sqlite_ext import SqliteExtDatabase sqlite_db = SqliteExtDatabase('my_app.db', journal_mode='WAL') PRAGMA statements SQLite allows run-time configuration of a number of parameters through PRAGMA0 码力 | 319 页 | 361.50 KB | 1 年前3
共 259 条
- 1
- 2
- 3
- 4
- 5
- 6
- 26