AmzTrends x TiDB Serverless:通过云原生改造实现全局成本降低 80%

本文介绍了厦门笛卡尔数据(AmzTrends)在面临数据存储挑战时,选择将其数据分析服务迁移到 TiDB Serverless 的思路和实践。通过全托管的数据库服务,AmzTrends 实现了全局成本降低 80% 的效果,同时也充分展示了 TiDB Serverless 在简化架构、提升性能和降低成本方面的优势。未来,AmzTrends 计划继续利用 TiDB Serverless 的优势,扩展业务并提升竞争力。

厦门笛卡尔数据是一家专注于跨境电商数据分析的 SaaS 公司,AmzTrends 为亚马逊卖家提供品牌分析(ABA)、商机探测以及广告数据的可视化分析。目前,AmzTrends 主要以 SAAS 和 Chrome、紫鸟浏览器的插件形式为客户提供数据服务,以订阅模式为美国、日本、中国数万计的跨境电商卖家提高数据服务,帮助卖家在选品、运营、广告等运营环节提供专业的数据分析决策价值 。

业务挑战

AmzTrends 的数据主要以大单表的形式进行存储,最大的表数据量超过 22 亿,字段较多且某些字段很长的大宽表,单表中存在结构化与非结构化的数据结构,因此需要建立大量的索引,占用大量存储空间,而且过期数据还需要定期清理,经常使用 BATCH 进行批量操作,一旦遇到异常无法无法事务的一致性,因此数据维护压力巨大。

技术痛点

在业务初期,AmzTrends 选择了在百度云上自建 TiDB 集群,资源按月付费。集群规模包含 1 个 TiDB 节点、1 个 PD 节点(此种部署方式会损害 PD 的高可用性,为了节约成本的部署方式,是官方不推荐的高风险方案)、3 个 TiKV 节点,技术人员通过将亚马逊下载的原始 CSV 格式的数据批量写入到 TiDB 中进行数据分析。此外还单独配置了 3 台服务器部署 Spark,进行全量复杂的数据计算分析。但 Spark SQL 与关系型数据库不同,需要专人运维,复杂的业务架构造成了资源冗余,使得运维成本较高。

由于集群配置不够加上专业运维团队的缺失,弃用了 Spark,大量复杂且数据计算量巨大的任务由 Spark 转到 TiDB 直接运行,集群越来越不稳定,数据安全面临严重挑战。在这种情况下,AmzTrends 不得不寻找对技术要求更低且更安全的运维解决方案。在接触到 TiDB Serverless 后,AmzTrends 认为由于都是 TiDB 产品体系,全托管的一栈式数据库服务 TiDB Serverless 不仅可以充分发挥 TiDB 数据库原有的特性和优势,还可以帮助公司简化架构,提升系统的整体性能和健壮性。所以,AmzTrends 决定将整体应用从百度云部署方案迁入 TIDB Serverless,不仅风险更低且兼容性和性能都能得到有效保证,另外通过数据容量与请求量的成本预估,AmzTrends 发现迁移后成本能比现有的云服务器部署更低,因此有了这样一次充满挑战的数据迁移过程。

为什么选择 TiDB Serverless?

TiDB Serverless 是一种全托管的、自动化的数据库服务(DBaaS),能够快速部署集群,并按实际使用资源量计费。结合自身业务架构特性,AmzTrends 在考虑 TiDB Serverless 时重点关注以下特性:

 轻松扩展基础设施,按实际使用量付费 :商家只有在工作日时间才会使用 AmzTrends 的数据分析服务,而传统的云模式需要为预估的最大流量付费,容易造成闲时资源浪费。TiDB Serverless 可以秒级搭建起数据库环境,用户只需为实际的数据处理和存储付费,这让 AmzTrends 开发团队能够更专注于创新和发展。

 轻松上手,无需手动分片 :以前, AmzTrends 的 20 亿数据需要定期进行清理或者分片,应用 TiDB Serverless 可以帮助用户摆脱数据分片等数据库繁琐的操作任务,相当于只维护一张大表即可,既可以满足更长时间维度的查询需求,又无需反复对数据进行整理操作。

 自动伸缩,成本效益显著 :无论是存储、事务处理还是分析工作负载,AmzTrends 都能在几秒内根据应用需求自动伸缩,避免造成资源冗余浪费,既灵活又经济。

 全面托管,无感运维 :为 AmzTrends 提供最优化的 TiDB 部署方案,免去了服务器配置维护的烦恼。以前一旦出现故障就需要人工进行紧急处理,使用全托管的 TiDB Serverless 后运维人员可以安心入眠。

 熟悉的 SQL 接口,灵活应对业务增长 :TiDB Serverless 保持了开发者熟悉的 MySQL SQL 语言,AmzTrends 无需进行额外的学习即可高效地投入开发工作,同时 TiDB Serverless 具有一个高度灵活扩展的分布式架构,可以随需弹性扩缩容,应对业务的快速增长。

解决方案

决定迁移后,AmzTrends 采用 TiDB Serverless 替代了云上自建的 TiDB 集群,将数据全量迁移到 TiDB Serverless 中,简化了架构,大大缓解了运维压力,降低总体 IT 成本。

迁移后,AmzTrends 在 PingCAP 官方服务的帮助下也进行了架构简化、优化建表、索引优化,提高了整体数据处理效率,并使 AmzTrends 业务架构演进至云原生模式:

○ 索引优化:通过发现和删除冗余数据索引,节省了 50% 的数据库成本;

○ SQL 查询性能提升:优化索引后,不仅提高了查询速度,也显著减少了成本;

○ 架构简化:自建配置中心和服务注册要求的最小三台云服务器转变为单台云服务器,降低了成本和复杂性;

○ 业务缓存建立:在了解业务的基础上建立了业务缓存,进一步降低了实际查询量,节约成本。

项目收益

全托管一栈式数据库服务库服务

TiDB Serverless 提供全托管的服务模式,充分发挥了 TiDB 数据库的原有特点和优势,简化了 Amztrends 的整体架构,提升了性能和系统健壮性,同时降低了总体成本。

数据架构成本节省 50%

通过云原生改造,Amztrends 在数据架构方面节省了 50% 的成本。( Serverless 采用全分离架构,Amztrends 只需为使用付费,无需浪费闲置资源)

整体服务资源节约 30%

简化架构后,Amztrends 前端服务资源实现了 30% 的资源节约。

全局成本降低 80%

综合上述优化,Amztrends 实现了整体成本降低 80%。

总结

TiDB Serverless 作为全托管一站式的数据库服务,从根本上解决了 Startup 公司基础架构门槛高的难题,即使缺少专业运维人员,也可以拥有简化、健壮的数据基础架构,获得了更高的系统稳定性和可用性。同时,Serverless 的 “Pay as you go”模式提供了更灵活、更优化的资源利用率,AmzTrends 从百度云迁移至 AWS 之后,总体 IT 成本实现了大幅下降。在此基础上,这种灵活的资源使用模式也可以让 AmzTrends 探索更灵活、更具性价比的商业方案,为商业模式提供更多可能性。

AmzTrends PM Steve 表示:“迁移到 TiDB Serverless 后我们不会再去担心数据库的问题,完全放心交给 TiDB Serverless 就好了。用最简单的话来讲,没有问题就是最好的结果。”

未来

未来,Amztrend 计划继续利用 TiDB Serverless 的优势,进一步扩展其业务并探索更多的数据分析和优化机会。公司还计划通过持续的技术改进和优化,维持并提升其在市场上的竞争力。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

车辆未冲洗监测报警摄像机

车辆未冲洗监测报警摄像机是一种用于监测车辆是否完成冲洗清洁的设备,通常用于洗车场、加油站等场所,以确保每辆车都能够得到适当清洗并提供警报功能。车辆未冲洗监测报警摄像机是一种智能安全设备,专门用于监测车辆是否被清洗冲洗干净的情况…

JavaScript编程艺术:深度解析计算机程序的构造与解释【文末送书-32】

文章目录 JavaScript编程艺术:深度解析计算机程序的构造与解释第一部分:程序的构造第二部分:程序的解释第三部分:实例分析 计算机程序的构造和解释(JavaScript版)【文末送书-32】 JavaScript编程艺术&#…

微信小程序如何跳转页面

1.wx.navigateTo:用于跳转到其他页面,并保留当前页面。通过该 API 跳转后,可以通过返回按钮回到原页面。 wx.navigateTo({url: /pages/otherPage/otherPage })2.wx.redirectTo:用于跳转到其他页面,并关闭当前页面。通…

用python给喜欢的主播自动发弹幕

写在前面 发弹幕只是其中一个小小的功能,还可以自动点赞、收藏、投币、自动播放、私信等等,但是我们只演示这个,其它的不做展示。 实现步骤 先打开一个视频或者直播,F12打开开发者工具,点击network。 然后点这个清空…

STM32学习7 按键扫描

STM32学习7 按键扫描 一、实验电路介绍二、按键GPIO初始化三、扫描原理1. GPIO引脚配置2. 状态轮询3. 按键状态检测4. 循环扫描的优缺点优点:缺点: 四、一次扫描与持续扫描五、代码实现1. 头文件定义2. 函数实现3. 主体函数 一、实验电路介绍 本实验使用…

PythonStudio 控件使用常用方式(八)SpeedButton

PythonStudio是一个极强的开发Python的IDE工具,它使用的是Delphi的控件,常用的内容是与Delphi一致的。但是相关文档并一定完整。现在我试试能否逐步把它的控件常用用法写一点点,也作为PythonStudio的参考。 SpeedButton是一组互斥按钮&#…

企业如何实现跨部门和员工之间的高效沟通协同?

在当今高度竞争和信息化的商业环境中,企业内部各部门和员工之间的沟通协同效率直接影响到企业的整体运营效果。那么,企业如何实现各部门和员工之间的高效沟通协同呢? 一、建立有效沟通机制与明确部门职责 要实现各部门和员工间的高效协同&…

RK3568平台开发系列讲解(基础篇)设备号的分配和释放

🚀返回专栏总目录 文章目录 一、主设备和次设备二、设备号的分配和释放2.1、静态方法2.2、动态方法沉淀、分享、成长,让自己和他人都能有所收获!😄 一、主设备和次设备 字符设备在/dev目录下,不能简单地把它们当作普通文件。字符设备文件的类型是可以识别的,用ls -l命令…

FPGA DDR3简介及时序

一,DDR3基础知识 1、DDR3全称第三代双倍速率同步动态随机存储器。 特点:①掉电无法保存数据,需要周期性的刷新。 ②时钟上升沿和下降沿都会传输数据。 ③突发传输,突发长度Burst Length一般为8 2、DDR3的存储: bank、行地址和列地址 数据怎么存入到D…

怎么在图片上直接编辑文字?3个方法教你轻松编辑

怎么在图片上直接编辑文字?随着技术的飞速发展,图片编辑已经成为我们日常生活和工作中不可或缺的一部分。在图片上直接编辑文字,不仅能够添加说明和标注,提高信息的传达效率,还能够增强图片的美观和设计感,…

Spring Boot与Netty打造TCP服务端(解决粘包问题)

欢迎来到我的博客,代码的世界里,每一行都是一个故事 Spring Boot与Netty打造TCP服务端 前言功能目标项目实现maven坐标构建自定义HandlerChannelInitializer实现server实现 前言 在物联网时代,设备之间的通信变得愈发重要。本文将带你踏上一…

第三百八十五回

文章目录 1.概念介绍2.使用方法3.示例代码 我们在上一章回中介绍了Snackbar Widget相关的内容,本章回中将介绍TimePickerDialog Widget.闲话休提,让我们一起Talk Flutter吧。 1.概念介绍 我们在这里说的TimePickerDialog是一种弹出窗口,只不过窗口的内容…

【LeetCode】升级打怪之路 Day 15:二叉树解题的思维模式 —— 遍历、分解问题

今日题目: 226. 翻转二叉树101. 对称二叉树114. 二叉树展开为链表 目录 LC 226. 翻转二叉树 【easy】LC 101. 对称二叉树 ⭐⭐⭐LC 114. 二叉树展开为链表 ⭐⭐⭐ 今天的题目主要是对二叉树递归遍历的应用,东哥带你刷二叉树(思路篇&#xff0…

设计模式—适配器模式

概念: 适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。 本章代码: 小麻雀icknn/设计模式练习 - Gi…

微服务---Eureka注册中心

目录 一、服务中的提供者与消费者 二、Eureka工作流程 三、搭建Eureka服务 四、服务拉取 五、总结 1.搭建EurekaServer 2.服务注册 3.服务发现 一、服务中的提供者与消费者 服务提供者:一次业务中,被其他微服务调用的服务。即提供接口给其他微服务。…

SpringBoot整合【RocketMQ】

目录 1.POM文件添加依赖及yml配置 2.RocketmqUtil 3.生产者&#xff08;异步发送示例&#xff09; 4.消费者 5.测试 1.POM文件添加依赖及yml配置 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter&l…

Android使用Sensor.TYPE_STEP_COUNTER计步器传感器进行步数统计

1、首先&#xff0c;申请权限 必须声明 ACTIVITY_RECOGNITION 权限&#xff0c;以便您的应用在运行 Android 10 (API 级别 29) 或更高版本的设备上使用此传感器。 Manifest.xml也记得声明 if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) {Log.d(TAG, "[权限]&quo…

Elasticsearch:从 ES|QL 到 Python 数据帧

在我之前的文章 “Elasticsearch&#xff1a;ES|QL 查询展示”&#xff0c;我展示了如何在 Kibana 中使用 ES|QL 对索引来进行查询及统计。在很多的情况下&#xff0c;我们需要在客户端中来对数据进行查询&#xff0c;那么我们该怎么办呢&#xff1f;我们需要使用到 Elasticsea…

挖掘NCDA设计大赛获奖作品的成功之道:探讨表情包设计竞争力的关键因素

第12届大赛简介 - 未来设计师全国高校数字艺术设计大赛&#xff08;NCDA&#xff09;开始啦&#xff01;今天我们就特地来说说它的虚拟IP及表情包设计的命题之一的表情包设计选项&#xff0c;为了使大家更好地参加本次比赛&#xff0c;本文特别整理了往届NCDA的表情包设计获奖作…

(每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(五)

项目建议与立项申请、初步可行性研究、详细可行性研究、评估与决策是项目投资前使其的四个阶段。在实际工作中&#xff0c;初步可行性研究和详细可行性研究可以依据项目的规模和繁简程度合二为一&#xff0c;但详细可行性研究是不可缺少的。升级改造项目制作初步和详细研究&…