草庐IT

分布式软件跨X86/ARM CPU混合架构部署

架构师技术联盟 2023-03-28 原文
近年来,随着 ARM 技术的发展,ARM 在服务器芯片领域的应用范围逐渐推广,在 Intel X86 的技术标准和产品供应链之外,提供了新的选择空间。

现阶段需重点研究分布式数据库同时支持 X86 和 ARM服务器的混合部署架构,在保证分布式数据库满足业务连续性和稳定性的同时,研究两个平台技术差异,实现分布式数据库在不同软硬件平台兼容部署与平滑切换,丰富金融行业对不同软硬件架构的数据库应用经验。

本文参考“分布式数据库跨CPU架构混合部署方案(2022)”,重点介绍分布式数据库在X86架构与ARM架构服务器上的多种混合部署方案。

一、跨集群混合部署

1.单独集群混合部署

单独集群混合部署是指将两个无关的数据库集群分别部署在 X86 架构与 ARM 架构硬件服务器上。

本方案适用于相同业务场景下,测试 ARM 架构数据库与 X86架构数据库在功能与性能间的差异。通过横向对比的方式,验证ARM 芯片数据库的功能、高可用、性能等方面是否符合预期,并根据测试结果进行分析,同时反馈相关芯片厂商,以期提升 ARM芯片对分布式数据库的支撑能力。

2.主备集群混合部署

主备集群混合部署是指利用集群间的主备架构,将主备集群分别部署在 X86 架构与 ARM 架构硬件服务器上。

在本方案中,主、备集群可按需采用不同 CPU 架构的服务器进行部署,不存在主备集群服务器 CPU 类型的关联要求,主备集群也可按需完成切换。

在系统上线运行前期,是 ARM 化的第一阶段。可采用 X86 架构 CPU 的服务器搭建分布式数据库主集群,备集群采用 ARM 架构的服务器。因 X86 架构 CPU 的服务器性能较优,运行经验丰富,可更好的支撑业务系统,保证系统性能和稳定性;利用 ARM 架构服务器作为备集群,可降低硬件投入成本,同时,验证 ARM 服务器的可用性和可靠性,为数据库服务器 ARM 化替换做好评估和准备。

当运行验证完成,确定 ARM 服务器能满足业务需求的条件下,进入 ARM 化替换的第二阶段。通过无损的主备集群切换方案,完成主集群采用 ARM 架构服务器,备集群采用 X86 架构 CPU 服务器的转换,实现应用系统的 ARM 化替代方案。同时,利用 X86 架构 CPU 的服务器构建备集群,最大限度保证当主集群故障的情况下,仍可以利用备集群,保证业务连续性不受大规模影响。

在 ARM 化替换的最终阶段,进一步完成备集群的 ARM 架构服务器的替换,最终实现全 ARM 化 CPU 架构服务器的数据库集群环境。

二、集群内多数据中心混合部署

数据中心的位置可用区域( Region )和可用区(Availability Zone)来描述。区域指物理的数据中心,每个区域可以实现最大程度的容错能力和稳定性。可用区是同一区域内互相隔离的物理区域,一个可用区不受其他可用区故障的影响。每个可用区可承载不同的数据分片的数据副本。在数据副本发生少数派故障的情况下,分布式数据库集群能够做到数据不丢,故障转移自动完成。

1.集群内多区域混合部署

集群内多区域混合部署是指同一集群内将管理节点、计算节点、数据节点等不同组件根据不同的区域部署在 X86 架构与 ARM架构混合硬件服务器上。

本地数据中心保持原有的 X86 架构,同城数据中心将管理节点、计算节点、数据节点等组件迁移至 ARM 架构。通过同城切换等方式对 ARM 架构组件进行测试验证,验证 ARM 架构的分布式数据库功能、性能及业务支撑能力等符合预期后,再逐步替换其他区域的组件为 ARM 架构,最终实现分布式数据库所有数据中心全部模块 ARM 架构的部署。

2.集群内多可用区混合部署

一个机房内可以有多个可用区,不同可用区之间物理隔离,但内网互通,既保障了可用区的独立性,又提供了低价、低时延的网络连接。集群内多可用区之间的混合部署,指分布式数据库集群,可部署于不同可用区内不同 CPU 架构的服务器之上。

与多机房的混合部署的逐步替换的思路相似,集群内多可用区之间的混合部署方案,亦可实现 ARM 架构服务器对 X86 架构CPU 服务器的逐步替换。

三、集群内单数据中心混合部署

1.主从架构混合部署

主从架构混合部署是指将管理节点、数据节点等主从架构的组件部署在 X86 架构与 ARM 架构混合硬件服务器上。

数据节点的混合部署可分为三个阶段:第一阶段数据节点主机为 X86 架构,数据节点备机为 ARM 架构,稳定运行一段时间后,验证 ARM 架构的数据节点功能、性能等是否符合预期。第二阶段将 ARM 架构的数据节点升为主机,稳定运行一段时间后,验证 ARM 架构下的数据节点的业务支撑能力是否符合预期。第三阶段实现数据节点主备机全部 ARM 架构的部署。

2.无状态组件混合部署

无状态组件混合部署是指将计算节点等无状态、容错率高的组件部署在 X86 架构与 ARM 架构混合硬件服务器上。

计算节点分别部署在 ARM 架构和 X86 架构下。待验证 ARM 架构的计算节点功能、性能等符合预期后,再替换全部计算节点为 ARM 架构。

通过对同一分布式数据库集群中X86和ARM服务器混合部署,提出了跨集群混合部署、集群内多数据中心混合部署和集群内单数据中心混合部署三种部署方案,满足了金融行业对服务器在数据库领域应用多元化的实际需求,为国内金融行业构建稳健高效的关键核心技术金融应用供应体系,提供了实践经验和可复制推广的方案。

本文基于实际项目经验,对分布式数据库基于 X86 和ARM 服务器的混合部署方案进行了研究,提出了跨集群混合部署、集群内多数据中心混合部署和集群内单数据中心混合部署三种方案,满足金融行业对服务器在数据库领域应用多元化的实际需求,为国内金融行业构建稳健高效的关键核心技术金融应用供应体系,提供了实践经验和可参考的方案(来源:北京金融科技产业联盟)。

有关分布式软件跨X86/ARM CPU混合架构部署的更多相关文章

  1. ruby-on-rails - 在混合/模块中覆盖模型的属性访问器 - 2

    我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah

  2. ruby-on-rails - 每次我尝试部署时,我都会得到 - (gcloud.preview.app.deploy) 错误响应 : [4] DEADLINE_EXCEEDED - 2

    我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie

  3. ruby - 分布式事务和队列,ruby,erlang,scala - 2

    我有一个涉及多台机器、消息队列和事务的问题。因此,例如用户点击网页,点击将消息发送到另一台机器,该机器将付款添加到用户的帐户。每秒可能有数千次点击。事务的所有方面都应该是容错的。我以前从未遇到过这样的事情,但一些阅读表明这是一个众所周知的问题。所以我的问题。我假设安全的方法是使用两阶段提交,但协议(protocol)是阻塞的,所以我不会获得所需的性能,我是否正确?我通常写Ruby,但似乎Redis之类的数据库和Rescue、RabbitMQ等消息队列系统对我的帮助不大——即使我实现某种两阶段提交,如果Redis崩溃,数据也会丢失,因为它本质上只是内存。所有这些让我开始关注erlang和

  4. ruby-on-rails - Ruby on Rails 可以部署在 Azure 网站上吗? - 2

    我可以在Azure网站上部署RubyonRails吗? 最佳答案 还没有。目前仅支持.NET和PHP。 关于ruby-on-rails-RubyonRails可以部署在Azure网站上吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12964010/

  5. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  6. jenkins部署1--jenkins+gitee持续集成 - 2

    前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon

  7. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  8. Ruby,使用包含 TK GUI 的 ocra 部署一个 exe - 2

    Ocra无法处理需要“tk”的应用程序require'tk'puts'nope'用奥克拉http://github.com/larsch/ocra不起作用(如链接中的一个问题所述)问题:https://github.com/larsch/ocra/issues/29(Ocra是1.9的"new"rubyscript2exe,本质上它用于将rb脚本部署为可执行文件)唯一的问题似乎是缺少tcl的DLL文件我不认为这是一个问题据我所知,问题是缺少tk的DLL文件如果它们是已知的,则可以在执行ocra时将它们包括在内有没有办法知道tk工作所需的DLL依赖项? 最佳答

  9. ruby - Ruby 和 Ruby on Rails 中的三层架构 - 2

    我是一名决定学习Ruby和RubyonRails的ASP.NETMVC开发人员。我已经有所了解并在RoR上创建了一个网站。在ASP.NETMVC上开发,我一直使用三层架构:数据层、业务层和UI(或表示)层。尝试在RubyonRails应用程序中使用这种方法,我发现没有关于它的信息(或者也许我只是找不到它?)。也许有人可以建议我如何在RubyonRails上创建或使用三层架构?附言我使用ruby​​1.9.3和RubyonRails3.2.3。 最佳答案 我建议在制作RoR应用程序时遵循RubyonRails(RoR)风格。Rails

  10. ruby - 如何测试正在使用 RSpec 和 Mocha 调用的混合类方法? - 2

    我有一个模块:moduleMyModuledefdo_something#...endend由类使用如下:classMyCommandextendMyModuledefself.execute#...do_somethingendend如何验证MyCommand.execute调用了do_something?我已经尝试使用mocha进行部分模拟,但是当未调用do_something时它不会失败:it"callsdo_something"doMyCommand.stubs(:do_something)MyCommand.executeend 最佳答案

随机推荐