分布式数据库在传统车联网厂商的应用实践 | OceanBase案例

news2024/9/20 15:03:22

本文作者:慧视通科技,梁君

传统车联网厂商运维百亿级数据的痛点与难点

深圳慧视通科技(简称慧视通)作为专业的位置数据综合运营服务提供商,一直深耕智能交通领域,依托车联网、云计算、大数据处理、无线通信和北斗/GPS全球定位技术为核心,为巡游、物流、网约出租车、两客一危、前装新能源、驾驶培训、汽车租赁、试乘试驾等行业,量身打造符合其实际需求的产品和解决方案。

1704188354

慧视通的主要业务是以车联网为主体,比如大家经常乘坐的出租车、网约车等,很多都装载着慧视通的定位设备解决方案。那么,对于数量庞大的定位设备所产生的海量数据,我们后续又是如何进行处理及存储的呢?

当车辆通过终端定位设备产生相关数据时,数据会经过我们的慧视通云平台进行数据清洗、流转和分发,并通过微服务提供给各个子系统,例如慧视通车辆监控系统(SAAS平台),客服中心、大数据中心等,以及乘客、司机的终端和APP等。同时,数据会传输到政府的监管平台、运营中心、行业协会等。因此,对于如此复杂和庞大的业务会涉及数据处理和存储的各种难点和痛点。

  1. 海量数据存取。作为车联网行业,业务数据爆发式增长,每天的增量数据上亿条,数据库处理峰值记录每秒上万次。面对业务数据量庞大、使用部门人员众多、数据分析统计需求多样的需求,数据处理和分析是一大难点。
  2. 存储和运维成本。庞大的增量数据和上千亿的存量数据,使我们不得不重视存储成本与运维成本,因此,我们非常看重数据库解决方案的数据压缩率、存储空间占用等因素。
  3. 数据的挖掘和分析能力。随着数据量的快速增长,挖掘和分析它的数据链路越来越长,有时候可能跑了几个小时甚至跑一天。对于数据挖掘能力及AP能力,我们需要选择一套系统同时支撑海量交易、海量分析,并且一份数据同时支持TP、AP负载的产品。
  4. 国产信创要求。我们服务的客户对象基本以央企、国企或政府单位为主,近几年来国家要求国央企落实信息化系统升级,国产软件务求稳定,降低信息化风险,让升级的系统能够被业主单位真正接纳。面对几乎100%的升级率,我们需要选择一款完全自研、稳定、完全的国产数据库。

传统厂商转型国产分布式数据库的选型考虑

我们是一个传统的技术企业,整套系统都采用了微软的全家桶,其中数据库主要采用SQLServer,部分边缘业务采用其它数据库例如MySQL等。因此,我们替换数据库的成本要比其他企业高得多,而我们需要将迁移和改造成本降到最低,在选型时就会主要考虑以下三个因素。

第一,技术架构的先进性。比如支持云原生、分布式,具备高可扩展性、高稳定性和高性能等,能够满足大规模数据处理以及交易和分析的复杂业务需求。

第二,迁移和改造成本。确保新系统能够与现有系统和未来业务发展相匹配,能够降低迁移改造和未来升级扩展的难度。

第三、社区成熟。由于我们要选择一款具有成熟社区支持和被广泛应用的国产信创产品,确保顺利转型并快速掌握新产品的开发和维护技术,因此社区成熟度与活跃度是选型的重要指标之一。如果社区支持不够,那么在使用过程中遇到问题或知识盲点靠自己摸索解决方案是非常浪费时间的。

基于上述因素,我们考虑自研分布式中间件或替换为蚂蚁自研的原生分布式数据库OceanBase。

对比自研分布式中间件方案与OceanBase原生分布式方案

目前,自研分布式中间件方案的业务处理数据链路是:终端设备的海量数据传输到数据中心,通过一系列操作进行数据清洗、筛选后发送到位于深圳、哈尔滨、淄博的三个数据中心。每个数据中心都有很多实例,每个实例都以分库分表的形式存储数据。这些数据在经过汇聚聚合,形成最终用户使用的数据。

那目前这样的一个架构有什么优点和缺点呢?优点方面,自研分布式中间件方案属于完全自主研发,有一定的研发可控性,比较灵活,能够符合客户对软件著作权的要求。缺点方面,自研的复杂度高,根据慧视通云平台系统的研发经验,需历经多年分多阶段才能开发完善,自研分布式中间件的性能方面也不容忽视,并且如何保证高可用和数据一致性也是需要考虑的问题。

如果采用OceanBase原生分布式方案,就基本能避免以上问题,不存在研发难度和复杂度的问题了。OceanBase支持云原生,具有单机分布式一体化架构和HTAP能力,在产品特性和产品能力方面完全符合我们的选型要求。但我们也不得不考虑学习成本,比如多租户等新概念的引入,以及需要沉淀运维经验,才能确保数据安全、稳定运营、极端场景应急处理等。当然,这是引入新技术栈必然会面临的问题。

实践方案:原有代码以最低成本进行迁移改造

最终,我们选择了OceanBase作为我们数据库方案,经过实践验证后,我们总结了从SQLServer微软全家桶迁移到OceanBase的经验,希望可以帮到有相同业务需求的朋友。

首先,设计整体架构改造方案。需要评估替换底层数据库对业务及整体技术架构的影响,在时间成本、人力成本方面是否可接受。并进行代码梳理和分析,比较代码结构、评估改造代码量。我们原本以为SQLServer替换为OceanBase的改造成本很高,但经过梳理后,找到了低成本改造的解决方案。

其次,选择迁移工具和方案。目前市面上没有SQLServer相关代码、存储过程完美迁移到OceanBase的工具,因此,我们采用ORM将原来的存储过程、业务代码全部改造,进行存储过程代码化,这时业务层面既兼容SQLServer又兼容MySQL,还能兼容OceanBase。从业务持续可控的角度来讲,替换数据库不可能一键全部替换,需要慢慢过渡。我们采用ORM可以稳定实现过渡,同时能够将过去业务中大量的存储过程全部代码化。

最后,保留原有部分系统架构,由于迁移可能需要全面改造原来的系统架构和设计方案,这会导致非常长时间的改造而延误客户需求。因此,我们在设计时并没有将全部业务架构迁移,而是保留原来的部分技术和业务,为整体迁移的过程争取了一定的时间。假如客户两个月后就要上线一套技术可靠的系统,能不能提供出来?完全改造是改造不过来的,所以采用部分技术方案保留,我们只要先替换应用的数据库,后续逐渐改造,最终完成整体迁移过程。

此次迁移历经10个月的时间。彻底将SQLServer替换为OceanBase。我们也总结了从初次接触OceanBase到目前接入线上系统正式使用,我们遇到的问题和解决方案。:

  • 初期接触时,OceanBase作为一款技术先进、架构完善的新型分布式产品,需要我们了解和学习的概念较多、加上生态工具较多、整体让我们感到相对复杂,有一定的学习成本,但后续在使用中还是很便捷的。
  • 业务兼容性大致满足,包括多数据中心、多地域,这是OceanBase原生支持的。我们在测试过程中发现的某些特殊需求,OceanBase社区也会迅速迭代支持。
  • 遇到BLOB数据时性能有影响,OceanBase社区人员直接跟我们一对一地沟通问题,最后在新版本中快速迭代解决了,响应非常快速。
  • 我们在迁移的过程中,发现 SQL Server迁移时遇到自增主键无法迁移,通过第三方工具以及代码脚本解决。

整体来讲,我们的迁移过程有一些困难,但相对顺利,特别是在OceanBase社区的工作人员和技术支持的情况下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2042789.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【STM32+HAL】杆球控制系统

一、前言 2017年电赛出了道板球控制系统题目,现写一个简化版本——杆球控制系统,以此记录电赛集训生活。 二、题目分析 最终采取的方案是:OpenMV读取小球的当前位置,并将坐标值传给STM32端,再由32通过电机改变杆的位置…

Proxmox 8.1.3 系统安装堡塔云 waf 防火墙

堡塔云 waf 工作原理: 堡塔云 waf 是一款Web应用防火墙,区别于传统防火墙,WAF 工作在应用层,对基于 HTTP/HTTPS 协议的 Web 系统有着更好的防护效果,使其免于受到黑客的攻击。 堡塔云 waf 采用半容器化部署&#xff0…

消息中间件相关笔记整理

目录 1. 简述消息队列 2. 常见的的消息队列中间件 2.1 Kafka概念及结构 基本概念名词解释 为什么要设置多个副本? 2.2 Kafka的工作流程 消息生产流程 消息存储流程 消息消费流程 2.3 面试必问题 如何保证消息不丢失? 消费者如何保证消息不重…

JVM垃圾回收算法有哪些

JVM垃圾回收算法有哪些 标记清除算法(mark and sweep) 将垃圾回收分为两个阶段:标记和清除 根据可达性分析算法得出的垃圾进行标记 对标记的内容进行垃圾回收 优点: 标记和清除速度较快 缺点: 碎片化较为严重,内存不连贯 标记整理算法 记录存活的对象,清除需要回收的对…

oracle创建账户

1、查看表空间 SELECT tablespace_name FROM user_tablespaces;2、创建用户 CREATE USER FLINKCDC2 IDENTIFIED BY "123456";也可以使用指定表空间的方式 CREATE USER FLINKCDC2 IDENTIFIED BY "123456" DEFAULT TABLESPACE LOGMINER_TBS QUOTA UNLIMIT…

企业为什么要管理好员工的工作微信?

为什么要管理员工工作微信,可以从以下几个方面进行优化和丰富: 一、优化人力资源配置: 提高工作效率:通过监控和管理员工的工作微信,企业可以确保每位员工的时间被合理分配,专注于与工作相关的沟通和任务…

【区块链+食品安全】基于 FISCO BCOS 联盟链的供应链溯源管理系统 | FISCO BCOS应用案例

冷冻食品企业通常会面临以下痛点: 1. 食品安全问题:无法迅速确定受污染或有质量问题的产品来源,导致召回时效延迟,增加企业的风险和损失。 2. 信息不透明:传统的供应链系统存在记账信息孤岛,数据无法溯源…

opencascade Bnd_Range源码学习区间表示

opencascade Bnd_Range 前言 这个类描述了由两个实数值限定的 1D 空间中的区间。 一个区间可以是无效的,这表示区间中不包含任何点。 方法 1 //! 默认构造函数。创建一个无效区间。 Bnd_Range() : myFirst(0.0), myLast(-1.0) {} 2 //! 构造函数。不会创建无效…

Java后端面试题(redis相关1)(day7)

目录 为什么要用Redis?Redis到底是多线程还是单线程?Redis数据持久化机制RDB方式AOF方式 Redis是单线程,但为什么快?Redis 过期删除策略Redis 内存淘汰策略 为什么要用Redis? 基于内存操作,内存读写速度快k…

XSS漏洞分析

原理:利用网页开发时web应用程序对用户输入过滤不足导致将恶意代码注入到网页中,使用户浏览器加载并执行恶意代码,通常是JavaScript类型,也包括java、vbs、flash、html等。 解码的顺序是HTML,URL和JavaScript。 常用…

【运维】macos使用微软官方远程桌面工具mstsc控制windows10教程(含失败的解决方法)

【环境】macos使用微软官方远程桌面工具mstsc控制windows10教程(含失败的解决方法) 文章目录 1、如何获取本地账号密码并连接2、失败:检查被控权限是否有打开3、失败:登录过微软账号的情况 1、如何获取本地账号密码并连接 打开cm…

mysql 物理备份 MySQL 全量备份 增量备份 差异备份 日志备份万字长文 1.3万字

版权声明:本文为博主原创文章,遵循版权协议,转载请附上原文出处链接和本声明 注意,通常 完备增备,日志(binlog)备,结合使用 差异则根据具体情况选用。 此备份过程 属于公司 常用的单个数据…

OpenVLA: An Open-Source Vision-Language-Action Model

发表时间:13 Jun 2024 作者单位:Stanford University Motivation: the potential to change how we teach robots new skills。然而,VLA 对机器人技术的广泛采用具有挑战性,因为 1)现有的 VLA 在很大程度上是封闭的并…

Linux: 进程概念详解

目录 1. 冯诺依曼体系结构 2. 操作系统(Operator System) 1. 概念 2. 设计OS的目的 3. 任务 (定位) 4. 理解管理 3. 进程 1. 基本概念 2. 描述进程-PCB 3. 进程状态 4. 创建进程 fork 5. (Zombie)-僵尸进程 6. 孤儿进程 7. 进程优先…

[卷积神经网络]YOLOv10论文解读

原文地址: YOLOv10: Real-Time End-to-End Object Detectionhttps://arxiv.org/pdf/2405.14458 项目地址: yolov10https://github.com/THU-MIG/yolov10 一、概述 YOLOv10的改进点主要由两点:①提出一种基于无NMS的一致的双重训练策略&…

构建高效外贸电商系统的技术探索与源码开发

在当今全球化的经济浪潮中,外贸电商作为连接国内外市场的桥梁,其重要性日益凸显。一个高效、稳定、功能全面的外贸电商系统,不仅能够助力企业突破地域限制,拓宽销售渠道,还能提升客户体验,增强品牌竞争力。…

Web网站的授权oAuth2.0 单点登录

1.Web网站的授权(oAuth2.0) Client 第三方应用(需要做鉴权的业务网站、业务系统)UserAgent 用户代理(浏览器)Resource Owner 用户授权(用户手动点击【同意】按钮,授权使用第三方登录渠道)&#…

CPU飙升 怎么定位问题

传统的方法 【top】 查看所有进程占系统CPU的排序,定位是哪个进程搞的鬼。PID那一列就是进程号。 【top -Hp pid】 定位进程中使用 CPU 最高的线程tid 【printf ‘0x%x’ tid】 线程 tid 转化 16 进制,例如printf ‘0x%x’ 11882 得到16进制的 0x2e6a 【jstack…

Spring——IOC/DI思想

1、IOC(Inversion of Control)控制反转 何为控制反转? 在业务层中我们如果要调用数据层的方法那么必然牵扯到对象的创建,如果我想要改变上述数据层的方法中的内容,那么我就要改变业务层的代码,重新创建对…

R语言的矩阵运算

下面内容摘录自《R 语言与数据科学的终极指南》专栏文章的部分内容,每篇文章都在 5000 字以上,质量平均分高达 94 分,看全文请点击下面链接: 3章4节:R的逻辑运算和矩阵运算-CSDN博客文章浏览阅读165次。在 R 语言的丰…