数据采集 ETL & 流批一体化框架 bboss v7.1.3 发布 --- 高效、稳定、快速、安全
本次版本最大亮点:从持久层和ETL两个方面优化对Clickhouse的支持,新增Clickhouse客户端负载均衡机制
bboss 是一个基于开源协议 Apache License 发布的开源项目,由开源团队 bboss 运维,主要由以下三部分构成:
-
Elasticsearch Highlevel Java Restclient , 一个高性能高兼容性的 Elasticsearch/Opensearch java 客户端框架
-
数据采集同步 ETL ,一个基于 java 语言实现数据采集作业的强大 ETL 工具,提供丰富的输入插件和输出插件,可以基于插件规范轻松扩展新的输入插件和输出插件
-
流批一体化计算框架,提供灵活的数据指标统计计算流批一体化处理功能的简易框架,可以结合数据采集同步 ETL 工具,实现数据流处理和批处理计算,亦可以独立使用;计算结果可以保存到各种关系数据库、分布式数据仓库 Elasticsearch、Clickhouse 等,特别适用于数据体量和规模不大的企业级数据分析计算场景,具有成本低、见效快、易运维等特点,助力企业降本增效。
项目源码地址参考:源码下载和构建
快速上手:https://esdoc.bbossgroups.com/#/quickstart
v7.1.3 功能改进
-
为Clickhouse数据源增加负载均衡机制,解决Clickhouse-native-jdbc驱动只有容灾功能而没有负载均衡功能的缺陷,使用方法如下:
在jdbc url地址后面增加b.balance和b.enableBalance参数
jdbc:clickhouse://101.13.6.4:29000,101.13.6.7:29000,101.13.6.6:29000/visualops?b.balance=roundbin&b.enableBalance=true
b.enableBalance为true时启用负载均衡机制,并具备原有容灾功能,否则只具备容灾功能
b.balance 指定负载均衡算法,目前支持random(随机算法,不公平机制)和
roundbin(轮询算法,公平机制)两种算法,默认random算法
另外也可以在DBConf上进行设置,例如:
BConf tempConf = new DBConf();
tempConf.setPoolname(ds.getDbname());
tempConf.setDriver(ds.getDbdriver());
tempConf.setJdbcurl( ds.getDburl());
tempConf.setUsername(ds.getDbuser());
tempConf.setPassword(ds.getDbpassword());
tempConf.setValidationQuery(ds.getValidationQuery());
//tempConf.setTxIsolationLevel("READ_COMMITTED");
tempConf.setJndiName("jndi-"+ds.getDbname());
PropertiesContainer propertiesContainer = PropertiesUtil.getPropertiesContainer();
int initialConnections = propertiesContainer.getIntProperty("initialConnections",5);
tempConf.setInitialConnections(initialConnections);
int minimumSize = propertiesContainer.getIntProperty("minimumSize",5);
tempConf.setMinimumSize(minimumSize);
int maximumSize = propertiesContainer.getIntProperty("maximumSize",10);
tempConf.setMaximumSize(maximumSize);
tempConf.setUsepool(true);
tempConf.setExternal(false);
tempConf.setEncryptdbinfo(false);
boolean showsql = propertiesContainer.getBooleanProperty("showsql",true);
tempConf.setShowsql(showsql);
tempConf.setQueryfetchsize(null);
tempConf.setEnableBalance(true);
tempConf.setBalance(DBConf.BALANCE_RANDOM);
return SQLManager.startPool(tempConf);
持久层使用案例:
ETL DB输出插件案例(DB输入插件类似):
-
优化停止db数据源机制,修复当停止数据源并移除数据源信息时,没有执行停止数据源操作
-
处理sqlite数据库创建statement兼容性问题
-
Clickhouse-native-jdbc驱动兼容性问题修复处理
-
优化jvm推出机制:默认关闭jvm退出时注销ioc容器及相关资源 在启用自动关闭的情况下,才可以在jvm退出时自动关闭和释放资源,否则需要手动调用ShutdownUtil.shutdown()方法释放资源,启用自动释放资源方法:
jvm命令行参数 -DenableShutdownHook=true 环境变量 enableShutdownHook=true 默认关闭: enableShutdownHook=false
-
文件输出插件文件序号在kafka、mysql cdc、MongoDB cdc等场景下序号滚动机制完善
-
完善持久层报错日志:数据源不存在时给出友好的提示信息
-
优化jackson对localdatetime类型的处理,如果没有引入jackson-datatype-jsr310插件,忽略加载localdatetime处理插件异常
-
优化基于消息流处理事件上下文重置机制
-
去重兼容老版本的maven坐标,兼容版本对应关系:
老版本坐标 | 新版本坐标 |
---|---|
bboss-elasticsearch-rest-file2ftp | bboss-datatran-fileftp |
bboss-elasticsearch-rest-file | bboss-datatran-fileftp |
bboss-elasticsearch-rest-hbase | bboss-datatran-hbase |
bboss-elasticsearch-rest-jdbc | bboss-datatran-jdbc |
bboss-elasticsearch-rest-kafka1x | bboss-datatran-kafka1x |
bboss-elasticsearch-rest-kafka2x | bboss-datatran-kafka2x |
bboss-elasticsearch-rest-mongodb | bboss-datatran-mongodb |
参考上面的对应关系将老版本迁移到新版本的坐标即可
导入和使用 bboss
bboss 版本最新版本号从以下文档章节【1.1 在工程中导入 bboss maven 坐标】获取:
https://esdoc.bbossgroups.com/#/db-es-tool
bboss ETL 插件使用指南
https://esdoc.bbossgroups.com/#/datatran-plugins
bboss 详细介绍文档
https://esdoc.bbossgroups.com/#/README
bboss 实战视频
Elasticsearch Bboss Stream ETL 介绍视频
Elasticsearch 导出 Excel 文件,按记录数切割 Excel 文件,解决单个文件导出数量过大问题
通用数据库管理工具--支持关系数据库、Clickhouse、doris等数据库管理