作者: 代城
万全网络高档工程师,担任万全网络数据渠道全体架构研发作业,具有超越 7 年的大数据相关技能研发经验,一直关注着开源和云技能的开展。
万全网络科技有限公司是一家专注于 B 端电商物流供应链的公司。致力于为客户供给全面的供应链处理方案,涵盖从产品采购到最终配送的全程服务。
公司的服务包含但不限于:供应链办理,仓储与配送,信息技能支撑。
搬迁背景
在不断开展的科技环境中,企业往往需要不断调整和优化其技能基础设施以习惯变化的事务需求。
万全数据中台架构从 2020 年开始构建,历经 3 年多的时间打磨,已经完结了数仓开发的大部分基础功用,包含数据源办理、数据离线同步、数据实时同步、数据资源目录、数据开发、使命依靠办理以及数据服务接口。
此渠道不只支撑数据的采集、清洗、加工,还涵盖了数据对外供给服务的完好链路。数据计算同步和计算引擎都是依据 Spark 构建的,保证了渠道的安稳性和高效性。
在曩昔的几年中,它首要运用 Greenplum 作为大数据应用层数据库,该数据库首要用于支撑万全的事务线报表、大屏展现、帆软报表、SFA 运营报表等应用。但是,随着事务的不断开展和渠道的逐渐完善,咱们发现 Greenplum 在一些方面已经不能满意咱们的需求,因此决议进行数据库搬迁,寻找更适合咱们事务的处理方案。
Greenplum 运用中的应战:
- 响应时间 延长:用户反馈顶峰时期报表响应时间过长。
- 存储与功用约束:CRUD 操作约束咱们挑选行存储堆表,尽管其事务吞吐才能可与 MySQL 比美,但在存储功率低、不适合 OLAP 场景、高 IO 开支等方面存在缺点。
- 物化视图 导致的 IO 压力: 物化视图 1-5 分钟一次的高频刷新导致很多磁盘 IO 操作,使得服务器的 iowait 指标终年高达 60%,导致查询延迟。
- 资源分配应战: 尽管经过资源队列削减了用户间资源竞赛,但存算混部的特性约束了对磁盘资源的精确操控,导致全体功用进步有限。
- MVCC 机制的存储本钱: 频频更新的行由于 MVCC 机制而存储多个副本,增加存储空间需求,进步存储本钱,影响查询功用。
为了坚持数据库的查询功用安稳,需要定时运行保护使命,通常是依据更新频率间隔几个小时执行一次 VACUUM 操作,但是通常 VACUUM 只会对增量部分数据进行快照合并,无法完全开释表空间胀大,还需要在每个月挑选一天进行分批对表执行 full VACUUM 操作,以坚持表查询功用安稳。
在当时硬件资源有限的条件下,即便是进行节点扩容,也并不会带来更多的收益,并且还需要对数据进行重新分布,从收益和本钱上都不是最佳挑选。
咱们希望一个既有数据湖特性、又可以高效查询的数据库,而 Databend 刚好契合咱们的需求。在这次搬迁中,咱们挑选了 Databend 数据库,经过一系列的规划、准备、兼容性评价等作业,成功将咱们的事务从 Greenplum 搬迁到 Databend。这次搬迁不只削减了资源占用,进步了功用,也为咱们未来的事务开展供给了更强壮的支撑。
规划和准备
准则
在搬迁的开始阶段,咱们制定了一系列中心准则,它们为咱们的作业指明了方向。
首要,咱们坚持“复用现有资源”的准则。经过最大化运用现有基础设施和资源,不只下降了本钱,还完结了现有数据与服务的有用整合。这种战略极大地进步了搬迁进程中资源的功率运用。
其次,咱们要点关注优化现有数据架构中的问题。深化分析了曩昔架构中的功用瓶颈和灵敏性不足的问题,并针对性地进行优化。咱们希望可以在新架构中完结更高的功用和更优的效果。
一起,下降保护本钱成为咱们的另一要害方针,这涵盖了服务保护和数据保护两个方面。经过优化架构规划并选用更高效的保护战略,咱们旨在减轻运维担负,进步体系的安稳性和可保护性。
最终,咱们特别强调架构的伸缩性,保证新体系可以轻松习惯未来事务增长和数据规模的扩展。这意味着咱们的体系规划具备优异的扩展才能,可以灵敏习惯事务和技能需求的演化。
准备作业
一开始,咱们对选用 Databend 持有慎重的期待,抱着“试一试”的态度。但在经过实践测验和应用后,Databend 的表现远超预期,其功用并不逊色于传统的存算混合架构。这不只证明了咱们的挑选的正确性,并且凸显了 Databend 在大数据存储范畴的超卓功用。
特别值得一提的是,Databend 的读写别离机制,这一机制与云原生概念严密相连,一起契合当时数据湖开展的趋势。经过完结读写别离,咱们成功进步了读取功用的一起下降了写入的压力。
在运用 Greenplum 时,尽管咱们施行了资源分组和队列约束战略,但这些办法并未能有用处理资源争抢问题。为了更有用地应对此应战,咱们决议充分发挥 Databend 的多租户特性,将不同事务线的流量进行分割,保证每个事务线都能享有更优越的功用体会。此外,多租户机制还为咱们供给了更为灵敏的权限办理方法。
增效
将 Databend 数据库布置在 Kubernetes(k8s)上,选用云原生的布置方法。这一战略挑选为咱们的体系带来了明显优势,特别是在动态扩缩容方面。运用 Kubernetes 的高档特性,咱们有用缓解了流量顶峰期的压力,一起下降了体系保护本钱。
在数据仓库开发方面,咱们经过下降表间依靠,明显进步了数据保护的功率。此外,咱们还完结了数据载入层的平滑搬迁,优化了离线 T 1 数据的导入流程。值得注意的是,在实时数据处理上,咱们从实时数据导入切换为微批次导入,尽管献身了部分时效性,但导入功用却得到了数倍的进步,极大地增强了开发团队的作业功率。
优化
在数据库搬迁进程中,咱们不只搬迁了数据库,还对原有数据架构进行了深化优化。一个要害的优化是处理了之前在Greenplum 中运用很多视图和物化视图构建准实时报表所带来的问题。
在 Greenplum 体系中,咱们依靠视图和物化视图来构建准实时报表,这在表结构变化时导致了保护的杂乱性和服务中断。而在 Databend 搬迁后,咱们运用其作为数据湖的才能,保存多个数据版别,选用 insert overwrite 方法配合调度渠道,完结了数据的高可用性和安稳拜访。这一战略不只打破了物化视图间的依靠关系,还使咱们可以灵敏应对表结构改变,最小化对用户的影响。
这种优化战略极大进步了咱们对外服务的安稳性和连续性,一起下降了保护的杂乱性。新架构的灵敏性使咱们可以更有用地应对数据改变,进一步增强了体系的可保护性和可扩展性。
搬迁进程
在当时快速开展的数据办理范畴,有用的数据库搬迁战略对坚持技能先进性和事务竞赛力至关重要。
在搬迁的初期,咱们明确了四项中心准则:复用现有资源、优化现有数据架构、下降保护本钱,以及进步架构伸缩性。这些准则保证咱们的搬迁战略既高效又可控。
经过具体的需求分析和方针设定,咱们对 Databend 进行了深化评价,包含功用测验和压力测验,以保证其习惯性和安稳性。这一阶段的成功为咱们后续的搬迁供给了坚实的基础。
数据库架构优化
新一代云原生数仓 Databend 选用了存算别离的规划理念,进步了体系的灵敏性、扩展性,并优化了多租户环境下的读写别离战略,大大进步了功用、安全性和安稳性。
搬迁进程的集成与优化
在数据同步方面,咱们选用了 Flink 和 Spark 处理引擎,以应对实时与离线数据同步的需求。咱们优化了数据同步的流程和安稳性,并调整了使命调度战略,进步了数据同步的功率和安稳性。
查询优化和功用进步
咱们要点优化了查询条件,选用了计算落地战略和 query cache 功用,以应对很多数据查询和数据倾斜问题。这些办法明显进步了查询功用和响应时间。
测验与回退战略
在测验阶段,咱们选用了分流战略,要点关注功用回归排查和优化,保证体系的安稳性和可靠性。咱们还制定了灵敏的回退战略,以应对可能出现的体系功用问题。
搬迁中的应战与处理方案
在搬迁进程中,咱们面临并克服了多个技能应战,包含体系表查询优化、查询节点内存问题、存储过错和 nginx 署理问题等。
搬迁效果与指标
搬迁完结后,咱们在多个方面取得了明显效果:
- 查询功用: 进步明显,用户可以更快速地获取数据。
- 数据导入/导出速度: 明显进步,支撑更高效的数据更新。
- 存储功率: 优化后的体系在存储资源运用上更加高效。
- 用户体会: 由于功用的进步,用户体会得到了明显改进。
- 本钱效益: 保护时间本钱下降,体系资源运用率进步。
总结和展望
在曩昔的 4 个月中,咱们团队成功完结了整个事务体系的搬迁作业,涵盖了 4 个事务线,合计近 500 张表和 600 个使命的搬迁使命。
这次搬迁不只进步了技能,也加强了团队协作。咱们方案持续优化体系,并坚持对 Databend 新进展的关注,活跃回馈社区。Databend 的杰出功用和安稳性在整个搬迁进程中发挥了要害作用,为咱们的事务开展供给了强有力的支撑。
在成功完结事务体系的搬迁之后,咱们并没有止步于此,而是立志持续向前迈进,展望着更为光辉的未来。
首要,咱们方案逐渐搬迁数仓的 ODS 层,选用多集群方法进行布置。经过逐渐搬迁的方法,咱们可以更好地掌握整个搬迁进程,保证在搬迁进程中体系的安稳性和可靠性。一起,运用多集群方法进行布置可以更好地涣散资源,进步体系的全体功用和吞吐量。
其次,咱们方案将 HDFS 存储进行独立布置,以削减资源竞赛,进一步进步功用。经过独立布置存储,咱们可以更灵敏地调整存储资源的配置,以满意不同事务需求。这一举措有望进一步优化体系架构,进步数据存储和读取的功率。
咱们还将持续跟进 Databend 版别的发布,以获取最新的功用和功用优化。经过不断学习和应用新的技能,咱们可以更好地解锁 Databend 的更多运用技巧,然后更好地助力公司事务的开展。
称谢
感谢团队的辛勤作业和 Databend 社区的支撑。数据库搬迁是一项杂乱而又重要的使命,咱们经过逐渐的规划、精心的准备和团队的共同努力,成功地将事务体系搬迁到了新的数据库渠道,完结了功用的进步、本钱的操控以及更好的用户体会。
Databend 数据库不只处理了咱们许多的技能难题,并且在运用进程中展现出杰出的功用和安稳性。正是在 Databend的协助下,咱们成功地克服了诸多应战,为事务供给了可靠的数据支撑。
一起,我想借此机会表达对 Databend 社区的敬意。社区的力量是不行忽视的,正是有了这样一个充满活力和热情的社区,Databend 得以不断优化和晋级。感谢每一位社区成员的支付。