草庐IT

从双活到多活再到信创 双轨超高可用架构保障应用可持续性

鸢玮 2023-03-28 原文
2022 年,自主创新加速发展。目前,我国已经在基础硬件、基础软件、应用软件等方面不断突破,信创产业生态日趋成熟,加快了关键行业的国产化步伐。

然而,在企业 IT 架构演进过程中,出现过传统的双活数据中心,多云多活的互联网云原生架构,再到如今的信创架构,企业如何在多种应用架构下,实现“稳中有敏,平滑迁移”呢?这还要以可持续性作为首要前提。

据调查显示,中国 52% 的客户都选择可持续性第一的情况下, 能够将传统架构和云原生架构统一, 实现兼容和协同,将会是最佳的可持续性服务。

为此,通过架构的革新,神州云科首次在业界提出了双轨超高可用架构(DTMAA)。神州云科副总裁、通明湖云和信创研究院副院长吴静涛表示,“一方面如何保证信创产品的稳定性,弥合性能与企业应用要求的差距;一方面,面对合规、风险和创新的挑战,云原生如何实现可信开源与跨域协同。双轨超高可用架构(DTMAA)在这样的背景下应运而生。”

从单轨到双轨 保障业务可持续性

业界普遍认为,支持业务可持续性的“高可用架构”分为两个流派,一是以 F5 为代表的应用交付企业提供的双活多活架构,在云、数据中心、设备、门户、应用等各环节实现分布式部署,任何节点出现状况都不会影响整个应用可持续性运行;另一个流派是以云厂商为代表的互联网云原生架构,基于 Design for Failure 的理念,利用弹性和 API 服务实现分布式。

于是,企业有了双活架构,也有了多云多活架构,同时,伴随着自主创新的加速发展,许多企业还构建了信创架构。那么,三种架构如何统一管理呢?他们之间融合难点有哪些呢?

吴静涛表示,三个架构提出者不一样,设计目标完全不一样。双活架构主要是“两地三中心”的同城双活,目的是提升高可用、分区容错性;互联网云原生架构则是更加注重敏捷,以及数据中心算力的实际利用率;而信创的关键是如何保障业务的稳定可靠,让企业将更多核心业务向信创架构进行迁移。因此,三种架构融合的难点就在于策略的统一,如何用创新的方式将历史的传统架构并在一起执行,形成协同统一管理,是当前急需解决的难题。

吴静涛提出假设,如果在同一个数据中心,将业务在信创域和非信创域同时运行,无论发生任何故障,都可以利用灰度发布的原则,将流量快速往回割接,保证应用可持续性,避免业务出现问题。于是,基于这样的思路,神州云科根据银行客户在过去 5-10 年中累积的应用可持续最佳实践,提出了全新理念双轨超高可用架构 DTMAA。

双轨超高可用架构(DTMAA)

双轨超高可用架构(DTMAA)是在双活数据中心的分区调度基础上,添加每个数据中心内信创域和非信创域的分域调度,来实现分区分域协同的多活双轨超高可用,帮助客户在新架构下,提升应用可持续性,解决性能瓶颈,提升稳定性,在服务异常情况下,通过实时灰度调度的方式,切换流量,保留应用故障现场环境,便于后续的排错与根因定位。

吴静涛表示,原来单轨建设要么是信创区要么是非信创区,业务只能在一个区域运行。在双轨建设中,双数据中心可以并行运行,信创区和非信创区可以并行运行,这实际上是双活数据中心延伸的架构,是高可用架构的一个表现形式,把双活的跨中心跨区中间加入了跨域的层次去实现跨中心跨域与跨区的协同能力。

可见,企业在两套制度或应用系统同时运行的典型特征下,双轨超高可用架构可通过多层次、多解决方案的组合,在架构层面实现分布式服务和容错逻辑,在客户数字化进程中提供可持续性业务保障,关键性不言而喻。

五大引擎保障区域间协同调度

那么,企业在多种架构下,如何向双轨超高可用架构迁移呢?神州云科解决方案架构师李晓东介绍道,企业在部署双轨超高可用架构时,数据中心可以分为信创域和非信创域,在能力编排、服务构建都可以按照原有的逻辑来搭建,通过五大引擎来保证信创域与非信创域之间的协同调度,实现多层次的应用可持续性最佳实践。

双轨超高可用架构五大引擎

第一个引擎是高可用的调度引擎,部署在数据中心出口,是一套全局流量管理调度引擎,可以精准识别业务类别,动态调整非信创区域和信创区域的流量配比,保障信创业务真实真用,逐步扩大信创业务承载量。及时发现未知风险,实现业务秒级切换,保留故障现场,进行根因分析,排除隐患。

第二个引擎是安全服务编排引擎,部署在业务区域边界,实现对安全服务能力的动态编排,安全策略灰度发布,从而有效避免误拦截。通过将安全设备池化部署,支持弹性扩展、来提高可用性,同时支持池内安全设备异构部署,实现信创安全架构的创新,提高整体信创区域攻防对抗能力。

第三是信创高可用引擎,部署在信创业务应用前端,是一套硬件国产、软件 100% 自研的信创业务流量调度引擎,支持无缝的业务配置迁移,保证业务高可用和优质的用户体验,实现运行状态指标与高可用调度引擎的整合联动,从而达到智能流量调度。

第四是现代应用高可用引擎,部署在业务应用前端,使用 NGINX 和相关组件支撑现代应用运行,满足现代应用的高可靠、敏捷发布,快速迭代的需求。

第五是大数据引擎,一般部署在运维管理区或监控区,提供无探针的采集能力,实现 T+0的实时数据收集,可以对双轨运行状态进行全景的监控。大数据引擎可以实现网络质量,用户体验,用户行为分析等全路径监控,问题快速定位,快速排除故障。

李晓东表示,五大引擎是双轨建设的一个核心灵魂,双轨超高可用架构的技术优势是神州云科实现了对于信创的高可用引擎和高可用调度引擎的智能协议级互联互通。

此外,为了更好地适配双轨超高可用架构,神州云科发布了全新的云科容翼系列产品,全面升级云科通明湖信创系列产品,通过“组合拳”的方式,为客户数字化进程中提供应用可持续性保障,并为客户夯实信创 IT 基础设施的“底座”增添助力。

三步完成信创替换 双轨架构只是个过渡方案?

双轨超高可用架构的建设也不是一蹴而就的。神州云科建议,在信创建设过程中,企业可以采用分段的建设思路。在第一个阶段,先实现信创业务和非信创业务双轨运行模式;第二阶段是高效推进阶段,分批次逐渐扩大信创建设的业务范围,通过流量不停地灰度迁移,逐步将全部流量迁移到信创环境中;第三阶段则是实现全栈信创,经历两到三年,企业完成整个信创替代的工作。

那么,当企业经历过三个阶段,完全实现全栈信创,形成了信创单轨架构后,那么双轨超高可用架构是否就变成了一个过渡的架构呢?吴静涛表示,双轨可以是传统架构与信创架构,也可以是传统架构和云原生架构,双轨的核心是在不同的架构之间如何协调,进行协同与编排的调度。双轨是一个思想,根源是分布式架构中的灰度发布的调度和编排逻辑,只要在不同架构下或不同逻辑情况下,就存在并轨运行的需求。因此,双轨并不是三五年短期的架构,而是未来企业转型中的新常态。

吴静涛强调,从双活数据中心到多云多活,再到双轨超高可用架构,实际上是一个传承。就好比传统油车和电车的转换过程中,更换的是发动机的动能核心,而驾驶习惯使用界面没有替换。神州云科只是提供了传统油车和电车统一的配置界面,统一的纳管平台,统一大数据平台,以及一致的服务体系,让客户从油车到电车的转换感受完全是一致的,这才是可持续性服务的过渡。

有关从双活到多活再到信创 双轨超高可用架构保障应用可持续性的更多相关文章

  1. 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

  2. ruby - Sinatra session 未按预期持续 - 2

    我正在尝试使用Sinatra中的重定向和session在网站周围传递一些数据。这是一个简化的示例,使用PrettyPrint进行调试:require'pp'require'rubygems'require'sinatra'enable:sessionsget'/'dosession[:foo]='12345'puts'session1'ppsessionredirectto('/redir')endget'/redir'doputs'session2'ppsession'helloworld'end查看Thin的输出,我看到:>>Listeningon0.0.0.0:4567,CTRL

  3. ruby - 在Ruby中计算持续时间与毫秒之间的差异 - 2

    TL;DR:IneedtogetthedifferencebetweenHH:MM:SS.msandHH:MM:SS.msasHH:MM:SS:ms我需要什么:这是一个棘手的问题。我正在尝试计算两个时间戳之间的差异,如下所示:In:00:00:10.520Out:00:00:23.720应该交付:Diff:00:00:13.200我想我应该将时间解析为实际的Time对象并在那里使用差异。这在前一种情况下效果很好,并返回00:0:13.200。什么不起作用:然而,对于某些人来说,这并不能正常工作,因为Ruby使用usec而不是msec:In:00:2:22.760Out:00:2:31.

  4. ruby-on-rails - 如何获得 DateTime 持续时间? - 2

    我很困惑如何做到这一点。我需要获取一个日期时间对象,并获取当前时间的持续时间(以小时、天等为单位)。谢谢。 最佳答案 获取以秒为单位的持续时间很容易:>>foo=Time.new=>MonDec2918:23:51+01002008>>bar=Time.new=>MonDec2918:23:56+01002008>>printbar-foo5.104063=>nil所以,五秒多一点。但要以更人性化的形式呈现它,您需要第三方添加,例如time_period_to_s,或Duration包。

  5. ruby-on-rails - 逐步参与,持续的 guest 用户与 Devise - 2

    我正在尝试在我的实用程序中设置渐进式参与,人们无需注册即可使用,例如notepad.cc和jsfiddle.net以及我计划在用户“写入”应用程序时为用户创建一个guest用户(使用Devise)。我在Devisewiki上找到了这个指南https://github.com/plataformatec/devise/wiki/How-To:-Create-a-guest-user它显示了如何在浏览器session期间创建访客用户。我想要的是用户在后续访问中继续使用相同的访客帐户,直到他注册为止,也许当我推出更多功能的订阅计划时。如何修改指南中的内容以实现此目的?上面链接的指南中的代码:

  6. ruby-on-rails - 在 Github 上 fork Ruby/Rails gem 的正确协议(protocol)/礼仪是什么,可以作为持续的并行 fork 进行维护? - 2

    最近我使用了一个由单个开发人员创建的不错的gem,它托管在Github上。在我的工作中,我不得不对它进行一些实质性的修改,添加一些改进。有些是特定于项目的,有些是特定于gem的,还有一些是独立的改进。对于特定于gem的改进(例如,错误修复),我fork了存储库,应用了修复,并提出了拉取请求。然后,然而,我注意到独立的改进有点属于原始gem的并行、持续的分支类别。更清楚地说,你以前见过它;我重写了原始gem的View以使用TwitterBootstrap框架。因此,我也将它推送到了Github,但是,当然,我没有提出拉取请求——相反,我更新了README以解释不同之处,并感谢gem的原作

  7. ruby-on-rails - rspec-mocks 的 double 被设计为只持续一个例子 - 2

    我有一个关于如何在示例之间共享rspec-mocks的double的问题。我正在使用rspec-mocks3.1.3编写一个新的Rails应用程序。我习惯于使用旧的(我有一个模型方法:defself.from_strava(activity_id,race_id,user)@client||=Strava::Api::V3::Client.new(access_token:'abc123')activity=@client.retrieve_an_activity(activity_id)result_details={race_id:race_id,user:user}result_

  8. ruby-on-rails - Rails 上持续的第三方 API 监控和测试 - 2

    我们想设置自动化作业(通过Jenkins)以在第三方API出现故障或他们部署了不兼容的API时发出警报。我说的是针对真实的HTTPAPI进行测试,而不是模拟,但是因为我们已经使用rspec编写了模拟,所以我不确定我们是否应该通过编写两个独立的睾丸来重复这项工作。有人有这方面的经验吗?(如果其他工具可以提供帮助,我不限于Ruby/Rspec) 最佳答案 你看过VCR了吗??使用它,您可以“记录您的测试套件的HTTP交互并在未来的测试运行期间重播它们以进行快速、确定性、准确的测试”。在测试来自外部API的预期响应时,我将它与RSpec一

  9. github wiki图像跨推送的持续URL - 2

    我在githubwiki上维护页面。该页面在org模式中,使用以下语法嵌入图像:[[images/my-image.png]]我想更新文本和图像,因此我执行了以下步骤:克隆从ssh上的github的维基更改了页面其他地方的一些文字编辑了图像将页面的文件和图像插入了git使用git签署了分阶段的文件,推到SSH上的Github。没有报告错误,并且显示页面的编辑。但是页面仍然具有旧图像。如果我访问图像的URL(https://raw.githubusercontent.com/wiki/myuser/myrepo/images/git-flowchart.png),我看到旧图像,而不是新图像,即使

  10. ruby - Ruby 可以轻松打印出时差(持续时间)吗? - 2

    Ruby可以做这样的事情吗?irb(main):001:0>start=Time.now=>ThuNov0501:02:54-08002009irb(main):002:0>Time.now-start=>25.239irb(main):003:0>(Time.now-start).duration=>"25seconds"(duration方法现在不存在)...同样,报告23minutesand35seconds1hourand33minutes2daysand3hours(要么报告整个持续时间,最多多少秒,要么报告最多2个数字和单位(如果报告天和小时,则无需说明多少分钟))

随机推荐