HStreamDB Newsletter 2022-07|分区模型优化、数据集成框架进一步完善

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 本月,HStreamDB团队主要在进行v0.9的最后开发和发布准备工作,对v0.9即将带来的stream分区模型改进、新集群机制、HStream IO等新特性进行了进一步的完善和测试。

本月,HStreamDB 团队主要在进行 v0.9 的最后开发和发布准备工作,对 v0.9 即将带来的 stream 分区模型改进、新集群机制、HStream IO 等新特性进行了进一步的完善和测试,同时也将主要的客户端升级到适配 v0.9。

Stream 分区模型改进

在之前版本中,HStreamDB 采用透明分区模型,每个 stream 内的分区数是根据写入负载的情况动态调整的,且 stream 内部的分区对用户不可见。这种模型的优势在于保持用户概念简单性的同时也保留了实现的灵活性,能够做到随负载动态伸缩分区数量,且在伸缩过程中保持需要的数据顺序性。

当前这一模型的主要缺点在于用户无法直接进行分区级的操作和精细化控制,比如无法直接从任意位置读取某个分区的数据。为此,我们决定将开放分区的操作和控制能力给到用户,使用户可以:

  • 通过 partitionKey 控制数据在分区之间的路由
  • 直接从指定位置读取任意 shard 的数据
  • 手动控制 stream 内分区的动态伸缩

在实现上,HStreamDB 采用的是 key-range-based 分区机制, stream 下的所有 shard 共同划分整个 key space,每个 shard 归属一段连续的子空间(key range),shard 的扩展与收缩对应子空间的分裂与合并。同时分区的伸缩不会造成老数据的复制和迁移,而是引起父分区的封闭,新数据会自动进入子分区,但与此同时父分区的数据依然是可读的。基于这种设计, 分区的动态伸缩将会更加可控、快速, 而且不会带来由于老数据的重分布引起的低效和影响数据顺序等问题,这实际也是透明分区的内部工作机制。

上述的分区模型改进将包含在即将发布的 v0.9 中(暂不包含控制分区分裂和合并的能力)。

HStream IO 更新

HStream IO 是 HStreamDB v0.9 即将发布一个内部数据集成框架,包含 source connectors、sink connectors、IO runtime 等组件,它能够实现 HStreamDB 和多种外部系统的互联互通,从而助力促进数据在整个企业数据栈内的高效流转以及实时价值释放。

继上月我们新增了对多个数据库的 cdc source 支持后, 本月我们新增了对 MySQL 和 PostgreSQL 的 sink connector 支持,另外也对 embbed IO runtime 在 connector 参数检查、 配置文档生成以及任务安全退出等方面进行了改进和增强,同时也提供了 SQL commands 方便用户通过 CLI 创建和管理 IO task,示例如下:

create source connector source01 from mysql with ("host" = "127.0.0.1", "port" = 3306, "user" = "root", "password" = "password", "database" = "d1", "table" = "t1", "stream" = "stream01");

create sink connector sink01 to postgresql with ("host" = "127.0.0.1", "port" = 5432, "user" = "postgres", "password" = "postgres", "database" = "d1", "table" = "t1", "stream" = "stream01");

show connectors;

pause connector source01;

resume connecctor source01;

drop connector source01;

HStream MetaStore

目前 HStreamDB 使用 Zookeeper 存储系统内的元数据,比如 shard 的复制属性和集群节点的任务分配和调度信息等,这给 HStreamDB 的部署和运维带来了一些额外的复杂性,如部署需要依赖 JVM,要单独管理 Zookeeper 集群等。

为此,我们计划移除 HStreamDB 对 Zookeeper 的直接依赖,并引入专门的 HStream MetaStore 组件(简称 HMeta)。HMeta 将提供一组抽象的元数据存储接口,理论上可基于多种存储系统来实现。目前我们正在开发提基于 rqlite [https://github.com/rqlite/rqlite ]的默认实现。rqlite 基于 SQLite 和 raft,采用 Golang 编写,非常轻量,易于部署和管理。

HMeta 的开发工作还在持续进行中,如我们之前 newsletter 中提到的, HServer 的新集群机制已经不再依赖 Zookeeper , 本月我们也已经实现了将 HStore 的 EpochStore 迁移到 HMeta。这项特性将不会纳入即将发布的 v0.9 中,它还需要更多的测试,我们计划在 v0.10 中正式发布它。

客户端更新

本月客户端也在适配 HStreamDB v0.9 方面带来了多项升级,以 hstreamdb-java 为例,主要包含以下改动:

  • createStream 可指定初始分区数
  • 增加 listShards 方法
  • producerbufferedProducer 适配新的分区模型
  • 增加 Reader 类,可用来读取任意分区

其它语言的客户端(Golang、Python)也将包含对 v0.9 的支持。

其它

本月完成的其它一些值得关注的特性包括:

  • HServer 新增 advertised-listeners配置,该配置用于解决 HStreamDB 部署在复杂网络环境下时外部 client 访问 HStreamDB 的问题。
  • 改进了 HServer 集群启动时的 bootstrap 流程。
目录
相关文章
|
2月前
|
机器学习/深度学习 Python
堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能
本文深入探讨了堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能。文章详细介绍了堆叠的实现步骤,包括数据准备、基础模型训练、新训练集构建及元学习器训练,并讨论了其优缺点。
65 3
|
2月前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
43 2
|
3月前
|
存储 Java 开发工具
【三方服务集成】最新版 | 阿里云OSS对象存储服务使用教程(包含OSS工具类优化、自定义阿里云OSS服务starter)
阿里云OSS(Object Storage Service)是一种安全、可靠且成本低廉的云存储服务,支持海量数据存储。用户可通过网络轻松存储和访问各类文件,如文本、图片、音频和视频等。使用OSS后,项目中的文件上传业务无需在服务器本地磁盘存储文件,而是直接上传至OSS,由其管理和保障数据安全。此外,介绍了OSS服务的开通流程、Bucket创建、AccessKey配置及环境变量设置,并提供了Java SDK示例代码,帮助用户快速上手。最后,展示了如何通过自定义starter简化工具类集成,实现便捷的文件上传功能。
【三方服务集成】最新版 | 阿里云OSS对象存储服务使用教程(包含OSS工具类优化、自定义阿里云OSS服务starter)
|
3月前
|
Java 程序员 API
Android|集成 slf4j + logback 作为日志框架
做个简单改造,统一 Android APP 和 Java 后端项目打印日志的体验。
148 1
|
4月前
|
算法 API Apache
Flink CDC:新一代实时数据集成框架
本文源自阿里云实时计算团队 Apache Flink Committer 任庆盛在 Apache Asia CommunityOverCode 2024 的分享,涵盖 Flink CDC 的概念、版本历程、内部实现及社区未来规划。Flink CDC 是一种基于数据库日志的 CDC 技术实现的数据集成框架,能高效完成全量和增量数据的实时同步。自 2020 年以来,Flink CDC 经过多次迭代,已成为功能强大的实时数据集成工具,支持多种数据库和数据湖仓系统。未来将进一步扩展生态并提升稳定性。
704 2
Flink CDC:新一代实时数据集成框架
|
3月前
|
开发框架 监控 搜索推荐
GoFly快速开发框架集成ZincSearch全文搜索引擎 - Elasticsearch轻量级替代为ZincSearch全文搜索引擎
本文介绍了在项目开发中使用ZincSearch作为全文搜索引擎的优势,包括其轻量级、易于安装和使用、资源占用低等特点,以及如何在GoFly快速开发框架中集成和使用ZincSearch,提供了详细的开发文档和实例代码,帮助开发者高效地实现搜索功能。
214 0
|
5月前
|
机器学习/深度学习 存储 前端开发
实战揭秘:如何借助TensorFlow.js的强大力量,轻松将高效能的机器学习模型无缝集成到Web浏览器中,从而打造智能化的前端应用并优化用户体验
【8月更文挑战第31天】将机器学习模型集成到Web应用中,可让用户在浏览器内体验智能化功能。TensorFlow.js作为在客户端浏览器中运行的库,提供了强大支持。本文通过问答形式详细介绍如何使用TensorFlow.js将机器学习模型带入Web浏览器,并通过具体示例代码展示最佳实践。首先,需在HTML文件中引入TensorFlow.js库;接着,可通过加载预训练模型如MobileNet实现图像分类;然后,编写代码处理图像识别并显示结果;此外,还介绍了如何训练自定义模型及优化模型性能的方法,包括模型量化、剪枝和压缩等。
79 1
|
5月前
|
测试技术 Java Spring
Spring 框架中的测试之道:揭秘单元测试与集成测试的双重保障,你的应用真的安全了吗?
【8月更文挑战第31天】本文以问答形式深入探讨了Spring框架中的测试策略,包括单元测试与集成测试的有效编写方法,及其对提升代码质量和可靠性的重要性。通过具体示例,展示了如何使用`@MockBean`、`@SpringBootTest`等注解来进行服务和控制器的测试,同时介绍了Spring Boot提供的测试工具,如`@DataJpaTest`,以简化数据库测试流程。合理运用这些测试策略和工具,将助力开发者构建更为稳健的软件系统。
67 0
|
5月前
|
测试技术 持续交付 开发者
Xamarin 高效移动应用测试最佳实践大揭秘,从框架选择到持续集成,让你的应用质量无敌!
【8月更文挑战第31天】竞争激烈的移动应用市场,Xamarin 作为一款优秀的跨平台开发工具,提供了包括单元测试、集成测试及 UI 测试在内的全面测试方案。借助 Xamarin.UITest 框架,开发者能便捷地用 C# 编写测试案例,如登录功能测试;通过 Xamarin 模拟框架,则可在无需真实设备的情况下模拟各种环境测试应用表现;Xamarin.TestCloud 则支持在真实设备上执行自动化测试,确保应用兼容性。结合持续集成与部署策略,进一步提升测试效率与应用质量。掌握 Xamarin 的测试最佳实践,对确保应用稳定性和优化用户体验至关重要。
72 0
|
5月前
|
数据库 Java 数据库连接
Struts 2 与 Hibernate 的完美邂逅:如何无缝集成两大框架,轻松玩转高效 CRUD 操作?
【8月更文挑战第31天】本文通过具体示例介绍了如何在 Struts 2 中整合 Hibernate,实现基本的 CRUD 操作。首先创建 Maven 项目并添加相关依赖,接着配置 Hibernate 并定义实体类及其映射文件。然后创建 DAO 接口及实现类处理数据库操作,再通过 Struts 2 的 Action 类处理用户请求。最后配置 `struts.xml` 文件并创建 JSP 页面展示用户列表及编辑表单。此示例展示了如何配置和使用这两个框架,使代码更加模块化和可维护。
167 0

热门文章

最新文章