当前位置: 首页 > article >正文

海量聊天数据处理:基于Spring Boot与SharingJDBC的分库分表策略及ClickHouse冷热数据分离

引言

随着互联网应用的快速发展,每天产生的聊天记录数量级已经达到了惊人的程度。以2000万条/天为例,一年下来就是大约7.3亿条记录。如此庞大的数据量给数据库的设计和管理带来了前所未有的挑战。本文将探讨如何使用SharingJDBC整合Spring Boot技术来实现合理的分库分表策略,并结合大数据同步工具将数据存储至ClickHouse中进行冷热数据分离。

一、背景介绍

在面对大规模并发访问以及海量数据存储需求时,传统的单体数据库往往难以满足性能要求。因此,采用分布式架构成为了解决问题的关键所在。其中,分库分表是一种常见的优化手段,它能够有效分散单一数据库的压力,提高系统整体处理能力。

二、技术选型

  • Spring Boot: 作为构建独立应用程序的好帮手,提供了丰富的自动化配置选项。
  • SharingJDBC: 一个开源的轻量级分布式数据库中间件,支持多种主流数据库。
  • MySQL: 成熟稳定的开源关系型数据库管理系统。
  • ClickHouse: 专为在线分析处理(OLAP)设计的列式数据库管理系统。

三、分库分表策略

对于日均2000万条的数据量而言,我们可以考虑以下几种分库分表方案:

  1. 按时间范围划分: 将不同时间段的数据存放在不同的数据库或表中。例如,每月创建一个新的数据库用于存储当月的数据。

  2. 哈希取模法: 根据用户ID等唯一标识符通过哈希函数计算出固定长度的值后,再对预设的分片数取模得到具体位置。

  3. 一致性哈希算法: 解决了普通哈希算法在节点增减时大量数据迁移的问题。

四、代码示例

// SharingJDBC配置文件
spring:shardingsphere:datasource:names: ds_0,ds_1ds_0:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverjdbc-url: jdbc:mysql://localhost:3306/db_0?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTCusername: rootpassword: 123456ds_1:... // 类似于ds_0rules:sharding:tables:t_order:actual-data-nodes: ds_${0..1}.t_order${0..1}table-strategy:inline:sharding-column: order_idalgorithm-expression: t_order${order_id % 2}key-generator:column: order_idtype: SNOWFLAKE

上述配置定义了两个数据源(ds_0, ds_1),并指定了订单表t_order按照订单ID进行水平切分的具体规则。

五、ClickHouse集成与冷热数据分离

为了进一步提升查询效率,我们还可以利用ClickHouse来进行复杂的数据分析操作。通过ETL工具定期将MySQL中的历史数据同步到ClickHouse中,实现冷热数据的有效隔离。

六、总结

通过对Spring Boot框架下的SharingJDBC组件的应用,结合合理的分库分表策略以及ClickHouse的支持,可以很好地应对海量聊天数据带来的挑战。当然,在实际项目实施过程中还需要根据具体情况灵活调整设计方案。

相关文章:

海量聊天数据处理:基于Spring Boot与SharingJDBC的分库分表策略及ClickHouse冷热数据分离

引言 随着互联网应用的快速发展,每天产生的聊天记录数量级已经达到了惊人的程度。以2000万条/天为例,一年下来就是大约7.3亿条记录。如此庞大的数据量给数据库的设计和管理带来了前所未有的挑战。本文将探讨如何使用SharingJDBC整合Spring Boot技术来实…...

EAL4+与等保2.0:解读中国网络安全双标准

EAL4与等保2.0:解读中国网络安全双标准 在当今数字化时代,网络安全已成为各个行业不可忽视的重要议题。特别是在金融、政府、医疗等领域,保护信息的安全性和隐私性显得尤为关键。在中国,EAL4和等级保护2.0(简称“等保…...

GreatSQL启动崩溃:jemalloc依赖缺失问题排查

GreatSQL启动崩溃:jemalloc依赖缺失问题排查 故障现象: 之前协助用户安装 GreatSQL 测试环境时,遇到一个 case,数据库初始化时没有报错,但是使用mysqld_safe去启动,会直接 crash ,详情报错如下&#xff1…...

大语言模型助力 Support Case 分析,提升云服务效率

1. 背景 技术工单(Support Case)是企业在进行云平台操作的时候通常会用到的一种技术支持类型,提供的技术支持通常包括所有的云服务的使用问题、账单问题、限制额度提升等等。对于云平台的管理者而言,对各个 BU 所提的工单进行统计…...

ubuntu磁盘挂载

1、‌查看磁盘设备及分区‌ 命令‌:列出所有块设备(磁盘及分区) lsblk 0表示此块未挂载 2、格式化分区 sudo mkfs.ext4 /dev/sdb 注意sdb换成自己的块名称 3、创建挂载点目录‌ sudo mkdir -p /mnt/data4、永久挂载 sudo blkid /dev…...

在pycharm中搭建yolo11分类检测系统--PyQt5学习(二)

第二部分 测试本地pycharm通过程序连接远程服务器autodl 模型的推理需要借助远程服务器autodl,但是界面的运行是在pycharm中,我的设想是按钮调用一个py文件就好了。 1. 本地运行PyQt5界面。 2. 当需要载入权重时,通过SSH连接到AutodL服务…...

chili3d调试笔记8 打印零件属性 浏览器元素展开

无效, 返回的是节点不是坐标啥的, 找他的属性 把document和selectednote(空集)传给handleshowproperty方法 怎么获得selectnotes和selectnotes的property值 有selectnotes运行这段就行了 明天再搞 ----------------------------…...

新书速览|DeepSeek移动端AI应用开发:基于Android与iOS

《DeepSeek移动端AI应用开发:基于Android与iOS》 1 本书内容 《DeepSeek移动端AI应用开发:基于Android与iOS》深入剖析了DeepSeek平台的架构原理、API调用及开发实践等核心内容,助力读者在Android与iOS移动端高效集成DeepSeek API,打造出契…...

大模型面经 | DeepSpeed中ZeRO-1、ZeRO-2和ZeRO-3的区别是什么?

大家好,我是皮先生!! 今天给大家分享一些关于大模型面试常见的面试题,希望对大家的面试有所帮助。 往期回顾: 大模型面经 | 春招、秋招算法面试常考八股文附答案(RAG专题一) 大模型面经 | 春招、秋招算法面试常考八股文附答案(RAG专题二) 大模型面经 | 春招、秋招算法…...

Android调用springboot接口上传大字段,偶现接口超时的优化

介绍 最近有个功能,Android通过okhttp上传实体类,实体类包含一个大字段,上传的字符串长度达到300k,偶现接口超时的情况,大概100次有5次,看日志发现数据并没有到达接口,可能在网络传输中就超时了…...

在PyCharm中部署AI模型的完整指南

引言 随着人工智能技术的快速发展,越来越多的开发者开始将AI模型集成到他们的应用程序中。PyCharm作为一款强大的Python IDE,为AI开发提供了出色的支持。本文将详细介绍如何在PyCharm中部署AI模型,从环境配置到最终部署的完整流程。 第一部分:准备工作 1. 安装PyCharm …...

react组件之间如何使用接收到的className(封装一个按钮案例)

带有hover渐变效果 一、父组件 import LineGradientBox from ../line-gradient-box; import styles from ./index.module.scss;<LineGradientBoxfontSize{20}className{styles.btn_height}textSign upwidth"100%"onClick{() > {navigate(/sign-up);}} /> …...

JavaScript 数组常用方法解析

1. concat - 合并数组 语法&#xff1a; const newArray oldArray.concat(value1, value2, ..., arrayN); 作用&#xff1a; 将当前数组与其他数组或值合并&#xff0c;返回一个新数组&#xff0c;原数组不变。 测试案例&#xff1a; const arr1 [1, 2, 3]; const arr2…...

Linux知识--软件管理

1.RPM包 1.1简介 又称为二进制包&#xff0c;无需编译&#xff0c;可以直接使用 1.2工具 1.2.1YUM工具 简介 基于RPM包管理&#xff0c;能够从指定服务器自动下载RPM包并且安装 可以自动处理依赖关系&#xff0c;并且一次性安装所有依赖的软件包&#xff0c;无需一…...

09.传输层协议 ——— TCP协议

文章目录 TCP协议 谈谈可靠性TCP协议格式 序号与确认序号窗口大小六个标志位 确认应答机制&#xff08;ACK&#xff09;超时重传机制连接管理机制 三次握手四次挥手 流量控制滑动窗口拥塞控制延迟应答捎带应答面向字节流粘包问题TCP异常情况TCP小结基于TCP的应用层协议 TCP协…...

chromedp 反反爬设计方案

二、基础防护层实现 1. 浏览器特征伪装 opts : append(chromedp.DefaultExecAllocatorOptions[:],// 禁用自动化特征chromedp.Flag("disable-blink-features", "AutomationControlled"),chromedp.Flag("useAutomationExtension", false),// 随…...

数字化转型“变形记”:中钧科技经营帮如何让企业长出“智慧骨骼”

数字化转型就像给企业安装一个"智慧引擎"&#xff0c;而中钧科技的经营帮平台就是这台引擎的智能控制系统。让我们用"人体"来打个比方——当企业的数据、流程、决策像神经脉络般打通&#xff0c;才能真正实现灵活运转。下面就以经营帮的五大核心板块为例&a…...

【问题解决】centos7已经不维护了,如何继续使用yum源?

背景 CentOS 7 已于2024年6月30日停止维护&#xff0c;在停止维护后我们之前配置的国内镜像源大多都是空目录了&#xff0c;即在线国内镜像源不可用,就像下边这样提示&#xff1a; [rootbogon yum.repos.d]# yum install vim 已加载插件&#xff1a;fastestmirror Loading mi…...

Starrocks 数据均衡DiskAndTabletLoadReBalancer的实现

背景 最近在研究了一下 Starrocks的tablet的Rebalance的能力&#xff0c;这里进行记录一下 本文基于 StarRocks 3.3.5 结论 数据的rebalance 主要以两种模式来进行&#xff1a; 按照磁盘的使用率进行移动&#xff0c;如果每个BE的磁盘使用率不足tablet_sched_balance_load_…...

Redis 接收连接

阅读本文前&#xff0c;建议先看&#xff1a;Redis 事件循环&#xff08;Event Loop&#xff09;。 Redis 6 支持接收 3 种连接&#xff0c;对应的接收处理器如下&#xff1a; TCP&#xff1a;acceptTcpHandler&#xff1b;TLS&#xff1a;acceptTLSHandler&#xff1b;Unix …...

AGI大模型(12):向量检索之关键字搜索

1 检索的方式有那些 列举两种: 关键字搜索:通过用户输入的关键字来查找文本数据。语义搜索:不仅考虑关键词的匹配,还考虑词汇之间的语义关系,以提供更准确的搜索结果。2 关键字搜索 先看一个最基础的实现 安装模块 pip install redis 不会redis的去看我的redis专题 首…...

【计算机视觉】CV实战项目- Face-and-Emotion-Recognition 人脸情绪识别

Face-and-Emotion-Recognition 项目详细介绍 项目概述项目功能项目目录结构项目运行方式1. 环境准备2. 数据准备3. 模型训练4. 模型运行 常见问题及解决方法1. **安装依赖问题**2. **数据集问题**3. **模型训练问题**4. **模型运行问题** 项目实战建议项目参考文献 项目概述 F…...

基于国产 FPGA+ 龙芯2K1000处理器+翼辉国产操作系统继电保护装置测试装备解决方案

0 引言 近年来&#xff0c;我国自主可控芯片在国家政策和政 府的支持下发展迅速&#xff0c;并在电力、军工、机械、 通信、电子、医疗等领域掀起了国产化替代之 风&#xff0c;但在芯片自主可控和国产化替代方面还有明 显的不足之处。 2022年我国集成电路进口量多 达 5 3…...

如何批量为多个 Word 文档添加水印保护

在日常办公中&#xff0c;Word文档添加水印是一项重要的操作&#xff0c;特别是在需要保护文件内容的安全性和版权时。虽然Office自带了添加水印的功能&#xff0c;但当需要一次性给多个Word文档添加水印时&#xff0c;手动操作显得非常繁琐且低效。为了提高效率&#xff0c;可…...

Qt QThread 两种线程管理方法

在 Qt 中,QThread 有两种常见的用法,分别对应不同的线程管理模型。这两种方法各有优缺点,适用于不同的场景: 1. 子类化 QThread(继承 QThread,重写 run() 方法) 这是传统的线程用法,类似于 Java 或 C++ 标准库中的线程模型。通过继承 QThread 并重写 run() 方法,将需…...

长期行为序列建模技术演进:从SIM到TWIN-v2

背景 在推荐系统与广告投放领域&#xff0c;长期行为序列建模旨在从用户数月甚至数年的历史行为中捕捉稳定兴趣模式&#xff0c;是解决冷启动、提升推荐精度的关键。随着工业界需求激增&#xff0c;SIM、ETA、SDIM、TWIN及TWIN-v2等模型相继诞生&#xff0c;推动技术不断革新。…...

Linux下 REEF3D及DIVEMesh 源码编译安装及使用

目录 软件介绍 基本依赖 一、源码下载 1、REEF3D 2、DIVEMesh 二、解压缩 三、编译安装 1、REEF3D 2、DIVEMesh 四、算例测试 软件介绍 REEF3D是一款开源流体动力学框架&#xff0c;提供计算流体力学及波浪模型。软件采用高效并行化设计&#xff0c;可以在大规模处理器…...

极狐GitLab Git LFS 速率限制如何设置?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 Git LFS 速率限制 (BASIC SELF) Git LFS (Large File Storage) 是一个用于处理大文件的Git扩展。如果您在仓库中使用 Git LF…...

缓存,内存,本地缓存等辨析

快速辨析缓存&#xff0c;内存&#xff0c;本地缓存&#xff0c;memcache&#xff0c;redis等 &#xff08;个人临时记录&#xff09; 缓存 泛指所有用于暂存数据以提升访问速度的技术&#xff0c;包括本地缓存、分布式缓存、CPU缓存等。核心目标是减少对慢速存储&#xff08…...

【k8s】PV,PVC的回收策略——return、recycle、delete

PV 和 PVC 的回收策略主要用于管理存储资源的生命周期&#xff0c;特别是当 PVC 被删除时&#xff0c;PV 的处理方式。回收策略决定了 PV 在 PVC 被删除后的行为。 回收策略的类型 Kubernetes 提供了三种主要的回收策略&#xff0c;用于管理 PV 的生命周期&#xff1a; Reta…...