数据异构就该这样设计,yyds

联邦学习中的数据异构性问题综述 摘要 联邦学习中的数据异构性问题主要是由参与训练的各客户端的数据虽独立分布但不服从同一采样方法(Non-IID)所导致的,这一问题也导致模型精度的严重下降。如何缓解Non-IID带来的不利影响目前仍是一个开放性的问题。 目前已经有很多算法可以应用于这一问题的处理上,但由于这些算法的实验都是基于不同的数据划分策略,我们没办法系统地、直观地理解这些算法的优缺点。 为了能对各算法的性能进行一个比较,《Federated Learning on Non-IID Data Silos: An Experimental 阅读详情

何谓数据异构,上周交易部门商品的同事过来做分享,又看到这个词,他的PPT里面是 数据库异构。其实我们以前做的事情,也是可以称之为数据异构。比如我们将DB里面的数据持久化到Redis里面去,就是一种数据异构的方式。

如果要下个定义的话:把数据按需(数据结构、存取方式、存取形式)异地构建存储。

常见应用场景

分库分表中有一个最为常见的场景,为了提升数据库的查询能力,我们都会对数据库做分库分表操作。比如订单库,开始的时候我们是按照订单ID维度去分库分表,那么后来的业务需求想按照商家维度去查询,比如我想查询某一个商家下的所有订单,就非常麻烦。

这个时候通过数据异构就能很好的解决此问题,如下图:

数据异构总结起来大概有以下几种场景

  1. 数据库镜像
  2. 数据库实时备份
  3. 多级索引
  4. search build(比如分库分表后的多维度数据查询)
  5. 业务cache刷新
  6. 价格、库存变化等重要业务消息

数据异构方向

在日常业务开发中大致可以分为以上几种数据去向,DB-DB这种方式,一般常见于分库分表后,聚合查询的时候,比如我们按照订单ID去分库分表,那么这个时候我们要按照用户ID去查询,查询这个用户下面的订单就非常不方便了,当然可以使用统一加到内存中去,但这样不太好。

所以我们就可以用数据库异构的方式,重新按照用户ID的维度来分一个表,像在上面常见应用场景中介绍的那样。把数据异构到redis、elasticserach、slor中去要解决的问题跟按照多维度来查询的需求差不多。这些存储天生都有聚合的功能。当然同时也可以提高查询性能,应对大访问量,比如redis这种抗量银弹。

数据异构的常用方法

1. 完整克隆

这个很简单就是将数据库A,全部拷贝一份到数据库B,这样的使用场景是离线统计跑任务脚本的时候可以。缺点也很突出,不适用于持续增长的数据。

2. 标记同步

这个是业务场景比较简单的时候,理想情况下数据不会发生改变,比如日志数据,这个时候可以去标记,比如时间戳,这样当发生故障的时候还可以回溯到上一次同步点,开始重新同步数据。

3. binlog方式

通过实时的订阅MySQL的binlog日志,消费到这些日志后,重新构建数据结构插入一个新的数据库或者是其他存储比如es、slor等等。订阅binlog日志可以比较好的能保证数据的一致性。

4. MQ方式

业务数据写入DB的同时,也发送MQ一份,也就是业务里面实现双写。这种方式比较简单,但也很难保证数据一致性,对简单的业务场景可以采用这种方式。

binlog方式

binglog是数据的日志记录方式,每次对数据的操作都会有binlog日志。现在开源的订阅binlog日志的组件,比如使用比较广泛的canal,它是阿里开源的基于mysql数据库binlog的增量订阅和消费组件。

由于cannal服务器目前读取的binlog事件只保存在内存中,并且只有一个canal客户端可以进行消费。所以如果需要多个消费客户端,可以引入activemq或者kafka。如上图绿色虚线框部分。

我们还需要确保全量对比来保证数据的一致性(canal+mq的重试机制基本可以保证写入异构库之后的数据一致性),这个时候可以有一个全量同步WORKER程序来保证,如上图深绿色部分。

canal的工作原理

​ 先来看下mysql主备(主从)复制原理如下图,在此原理基础之上我们再来理解canal的实现原理就一眼能明白了。

mysql主备(主从)复制原理,从上层来看,复制分成三步:

  1. master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events,可以通过show binlog events进行查看);

  2. slave将master的binary log events拷贝到它的中继日志(relay log);

  3. slave重做中继日志中的事件,将改变反映它自己的数据。

再来看下canal的原理,如下图:

cannal实现原理相对比较简单(参照上面的mysql主备复制实现原理):

  1. canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议

  2. mysql master收到dump请求,开始推送binary log给slave(也就是canal)

  3. canal解析binary log对象(原始为byte流)

我们在部署canal server的时候要部署多台,来保证高可用。但是canal的原理,是只有一台服务器在跑处理,其它的服务器作为热备。canal server的高可用是通过zookeeper来维护的。

注意点

  • 确认MySQL开启binlog,使用show variables like 'log_bin'; 查看ON为已开启
  • 确认目标库可以产生binlog,show master status 注意Binlog_Do_DB,Binlog_Ignore_DB参数
  • 确认binlog格式为ROW,使用show variables like 'binlog_format'; 非ROW模式登录MySQL执行 set global binlog_format=ROW; flush logs; 或者通过更改MySQL配置文件并重启MySQL生效。
  • 为保证binlake服务可以获取Binlog,需添加授权,执行 GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'admin'@'%' identified by 'admin'; FLUSH PRIVILEGES;

MQ方式

mq的方式,就相对简单,实际上是在业务逻辑中写DB的同时去写一次MQ,但是这种方式不能够保证数据一致性,就是不能保证跨资源的事务。注:调用第三方远程RPC的操作一定不要放到事务中。

总结

本文主要叙述了数据异构的使用场景,方法。这里面涉及到的activemq以及canal并没有深入分析,关于这块的内容可以直接参考相关具体文档,文中已给了链接地址。

根据数据异构的定义,将数据异地构建存储,我们可以应用的地方就非常多,文中说的分库分表之后按照其它维度来查询的时候,我们想脱离DB直接用缓存比如redis来抗量的时候。数据异构这种方式都能够很好的帮助我们来解决诸如此类的问题。

超详细的Canal入门,看这篇就够了! Canal入门看这篇就够了! 阅读详情

相关推荐

十五、寻龙队列术——数据队列:基于Canal实现数据异构

Canal是阿里开源的一款基于MySQL数据库binlog的增量订阅和消费组件,通过 它可以订阅数据库的binlog 0志,然后进行一些数据消费,如数据镜像、数据异构、数 据索引、缓存更新等。相对于消息队列,通过这种机制可以实现数据的有序性和一致性。Canal架构如下图所示。MySQL数据库首先需要部署canal server,可以同时部署多台,但是只有一台是活跃的,其他的作 为备机。canal server会通过slave机制订阅数据库的binlog H志。

流楚丶格念的博客 2万+

什么是异构数据?

异构数据顾名思义就是不同结构的数据,异构数据体现在五个层次上: 1.计算机体系结构的异构;数据的物理存储来源于不同体系结构的计算机中,如:大型机、小型机、工作站、PC或嵌入式系统中。 2.操作系统的异构;数据的存储来源于不同的操作系统,如:Unix、Windows、Linux、OS/400等。 3.数据格式的异构;数据的存储管理机制不同,可以是关系型数据库系统,如:Oracle、SQL Serve...

3万+

第十七届全国大学生智能汽车竞赛完全模型组实战项目——湖北工业大学蓝电YYDS Car队全栈技术方案包

简介:本项目完整复现湖北工业大学蓝电YYDS Car队在第十七届全国大学生智能汽车竞赛完全模型组中的获奖方案,涵盖自主导航智能车的端到端开发全流程。项目深度融合计算机视觉(车道线识别、目标检测)、多源传感器融合(IMU+编码器+摄像头)、实时决策规划(路径规划与行为决策)、轻量化机器学习模型部署(边缘端YOLOx-Tiny推理)及嵌入式控制系统(基于STM32H7+ROS2 Micro-ROS架构)。

weixin_35728286的博客 275

数据异构的武器-BINLOG+MQ

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34101229的博客 607

Geant4学习一:写一个简单程序

1、 基本介绍

ccwwNUAA的博客 7697

白炽灯寿命工程解析:从钨丝蒸发到电压控制的可靠性设计

白炽灯作为一种经典的电光源,其工作原理基于电流通过钨丝产生热辐射发光。在高温下,钨丝会持续蒸发导致灯丝逐渐变细、电阻增大,这是影响其寿命的核心物理机制。从工程角度看,白炽灯的可靠性设计涉及材料科学、热力学和电路设计的交叉,技术价值在于通过理解其失效原理,可以在成本与性能间取得最佳平衡。在实际应用中,电压波动、开关浪涌电流和机械振动是主要寿命杀手,尤其在工业控制、仪器仪表和特定照明场景中,合理的设计能大幅提升系统稳定性。本文深入探讨了钨蒸发、热应力等关键因素,并结合浪涌抑制和降压设计等实战技巧,为工程师提供了

weixin_28684655的博客 570

8 种主流数据迁移工具技术选型,yyds!

往期热门文章:1、用了Stream后,代码反而越写越丑? 2、代码精简10倍,责任链模式yyds 3、聊聊大厂都怎么防止重复下单? 4、上班期间在 IDEA 里面斗地主。。强悍! 5、如何画出一张优秀的架构图(老鸟必备)前言最近有些小伙伴问我,ETL数据迁移工具该用哪些。ETL(是Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业应用来说,我们经常会遇到各...

Java后端技术 305

企业微信微盘API权限避坑指南:为什么你的Python脚本无法获取文件列表?

本文深入解析了企业微信微盘API的权限模型,解释了为何即使使用超级管理员账号,Python脚本也可能因权限不足而无法获取文件列表。核心在于微盘API基于“应用身份”而非“用户身份”进行校验,应用只能访问自身创建的空间。文章提供了构建文件上传代理、利用事件回调等合规的替代方案,帮助企业实现高效数据同步。

weixin_29322553的博客 533

数据湖YYDS! Flink+IceBerg实时数据湖实践

点击上方蓝色字体,选择“设为星标”回复”面试“获取更多惊喜数据湖的前世今生互联网技术发展的当下,数据是各大公司最宝贵的资源之一已经是不争的事实。收据的收集、存储和分析已经成为科技公司最重要...

微信搜:import_bigdata,大数据领域硬核原创作者 1727

SAP Fiori单点登录避坑指南:从SAML原理到实战,解决‘第一次登录跳转主页失败’和‘偶发进不了单点’

本文深入解析SAP Fiori单点登录(SSO)的SAML实战与疑难排查,涵盖SAML协议核心机制、SICF登录优先级控制及安全诊断工具的高级用法。针对‘首次登录跳转主页失败’和‘偶发单点登录失效’问题,提供从配置优化到生产环境稳定运行的全面解决方案,助力企业高效实现数字化转型。

weixin_29327977的博客 405

实战STM32G0驱动DRV8870/AT8870:PWM+DMA精准调速与H桥衰减模式详解

本文详细介绍了如何使用STM32G0单片机结合DRV8870/AT8870电机驱动芯片实现直流有刷电机的精准控制。重点讲解了PWM与DMA结合实现高效调速的硬件配置与软件驱动方法,并深入剖析了H桥快衰减与慢衰减模式的工作原理及应用场景,为嵌入式电机控制项目提供了完整的实战解决方案。

c7d8e9的博客 595

新一代数据湖,真yyds!

数仓技术应对关系型结构化数据游刃有余,但对于多元异构数据,却爱莫能助。最近行业大佬都在聊怎么部署数据湖,这波操作未来走向如何?数据湖技术能够实现全量数据的单一存储,通常存储原始格式的对象块...

欢迎关注公众号:【码农突围】,回复9999,可以获取一份LeetCode刷题笔记 250

图解电动汽车:电动汽车电控系统

电动汽车的电控系统通常包含三个子控制系统 —— 整车控制器、电池管理系统、驱动电机控制器。 整车控制器 VCU 整车控制器 VCU(Vehicle Control Unit)作为电动汽车的中央控制单元,是整个控制系统的核心,也是各个子系统的调控中心。VCU 的主要功能就是协调管理整车的运行状态,包括采集电机及电池状态,采集加速踏板信号、制动踏板信号、执行器及传感器信号,根据驾驶员的意图综合分析做出相应判定后,监控下层的各部件控制器的动作,它负责汽车的正常行驶、制动能量回馈、整车发动机及动力电池的能量管理、.

程序员「阿基米东」的编程之旅 1万+

性能测试—yyds

性能测试是通过自动化的测试工具模拟各种正常、峰值以及异常负载条件来对系统的各项性能指标的测试。

huace3740的博客 170

大疆视觉算法面试,手推极线几何这关刷掉了一半人

摘要:大疆机器视觉算法工程师面试重点考察目标检测工程优化、深度估计几何原理和视觉SLAM全流程。目标检测侧重模型压缩和部署优化,需掌握知识蒸馏、量化及算子融合;深度估计要求推导双目几何并理解单目深度恢复方法;视觉SLAM需熟悉前后端流程及ORB-SLAM3/VINS-Mono区别。面试常要求手推PnP等公式,注重实践能力。准备需重点练习公式推导和代码实现,掌握工程落地细节。

郑伟强dev的专栏 193

【系统架构设计师-2023年真题】综合知识-答案及详解

要实现多任务间的协同工作,操作系统必须提供任务间的通信手段。嵌入式操作系统一般都会提供多任务间通信的方法,其中()是任务间最直接、最明显的通信方法,也是访问共享的数据结构,即不同的任务都可以访问同一地址空间。()作为一种更高级的通信方式,能够在同一处理器的各个任务间传递任意长度(理论上只受物理内存和机器字长限制)的信息。(1)A. 共享内存 B. Socket C. 消息传递 D. 信号量(2)A. 共享内存 B. Socket C. 消息传递 D. 信号量【答案】A、C关于星型拓扑结构,下列说法正确的是(

数据知道的博客 1万+

介绍几种主流数据迁移工具技术选型,yyds

ETL数据迁移工具该用哪些。ETL(是Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业应用来说,我们经常会遇到各种数据的处理、转换、迁移的场景。今天特地给大家汇总了一些目前市面上比较常用的ETL数据迁移工具,希望对你会有所帮助。

在计算机领域混战了5年的java开发工程师,正在向全栈奋斗的路上。目前在学习和分享:Java,springboot,spring,vue,系统开发,服务器运维(可做毕业设计)等相关知识。 1099

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

本周 13 个 YYDS 的 GitHub 项目,哪个你用过?

使用 SSHJ 库实现安全的 SSH 连接,Apache POI处理 Excel 文件,JFreeChart 生成图表,JTS 处理空间数据等。containerd 以守护进程形式运行,负责管理容器的整个生命周期,包括镜像的拉取和存储、容器的创建与监控、以及低层次的存储和网络附件管理。而设计的开源工具,有 8000 的星星。与传统的虚拟机不同,Lima 在设计上更加轻量级,专注于为开发人员提供接近原生体验的 Linux 环境。例如,可以设置当某个关键警报触发时,自动抑制相关的低级警报,避免不必要的干扰。

IT_1024的博客 884

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

YYDS!多模态特征融合!小白也能轻松搞定高区论文!

MulFS-CAP框架:提出了一种名为MulFS-CAP的单阶段融合框架,将非配准红外-可见光图像的配准和融合任务相结合。该框架利用共享浅层特征编码器,在单阶段中合并非配准的红外-可见光图像,避免了传统两阶段方法中配准和融合任务独立训练导致的性能欠佳问题。可学习模态词典:为解决特征提取在配准和融合中的冲突,引入可学习模态词典来增强单模态特征。模态词典为单一模态图像的特征提供补偿信息,使其包含其他模态的相关信息,从而减少红外和可见光图像特征间的模态差异,增强特征的表达能力,实现跨模态特征的一致性。

2501_91057708的博客 1241

5 种主流API网关技术选型,yyds!

点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天 10:33更新文章,每天掉亿点点头发...源码精品专栏原创 | Java 2021超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数据库中间件 Sharding-JDBC 和 MyCAT 源码解析作业调度中间件 E...

芋艿V 532

比Python快6.8万倍的新语言开放下载了yyds

什么编程语言,敢号称是高性能版的“Python++”?新语言,来自LLVM之父和Swift之父Chris Lattner,性能可达到目前版本Python的倍。你没看错,几个月前团队还宣称是35000倍,换了台机器测评就成了68000倍。现在,Mojo终于开放编译器和完整本地开发环境的下载,首日就在开发社区引发轰动。它语法像Python一样简单,跑起来像C++一样快,更重要的是可以与任何Python库无缝交互。

Trb701012的博客 963

推荐 10 个本周 yyds 的 GitHub 项目。

无论你是寻找一个不臃肿的任务管理工具来逃离配置地狱,还是想研究世界顶级 Rails 团队的最新代码实践,Fizzy 都是一个极具价值的开源项目。它不仅仅是一个简单的 RAG 工具,而是一个企业级的、模块化的全流程解决方案,解决复杂异构文档的知识提取与精确问答难题。、截图或现有的图表图片,AI 利用多模态视觉能力会识别图片中的元素与结构,并将其复刻为可编辑的 draw.io 图表。,它不仅能提取文本,还能通过 OCR 和版面分析技术理解表格、图片中的语义信息,从而构建统一的结构化知识中心。

公众号:逛逛GitHub 927

推荐 2 个 YYDS AI 开源项目!

最近已有不少大厂都在秋招宣讲,也有一些已在 Offer 发放阶段了。节前,我们邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。针对新手如何入门算法岗、该如何准备面试攻略、面试常考点、大模型技术趋势、算法项目落地经验分享等热门话题进行了深入的讨论。大家好,今天继续跟大家分享两个有趣的AI开源项目。

2201_75499313的博客 1094

5 种主流API网关技术选型,yyds

API网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供一个定制的API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、协议转换、限流熔断、静态响应处理。**API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。**通常,网关也是提供REST/HTTP的访问API。

CXikun的博客 1486
上一篇: 一次服务器被入侵的处理过程分享
下一篇: 说说 Spring 定时任务如何大规模企业级运用
java小姜在线冲
博客等级 码龄4年 53粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值