摘要:华为云作为中国政务云基础设施领域领导者,基于华为公有云技术架构的政务云平台,具备领先的云灾备技术实力,支持IaaS、PaaS等云服务云原生灾备能力。
本文分享自华为云社区《城市云灾备,为业务连续性保驾护航》,作者:仇俊、黄宝起。
“一网通办”“跨省通办”“一件事一次办”……近年来,个人和企业在政府部门办理各项事务时越发便捷,政务服务从网上“可办”向“好办易办”快速转换。这都要归功于“十四五”时期以来,我国不断加强数字政府建设,推动政务信息共享、政务数据分析、创新政务服务模式,以数字化改革助力政府职能优化提升,政务业务迈向集约高效、安全可控、创新发展的新阶段。
尤其在新冠疫情爆发以来,“线上办公”、“精准防控”、“全民核酸检测”、“健康码、行程码”等新需求加速了新型政务应用的暴增。这些新型政务应用具有用户基数大、数据重要性高、社会面用户体验要求更高的特点,大量的业务系统需要7*24小时对外提供服务,一旦数据丢失、业务中断,都将造成极其严重的影响。
城市云平台作为承载政务应用的基础设施平台,需要在保障自身业务稳定运行的基础上,提供IaaS、PaaS等各类云服务的灾备能力,确保各类政务应用信息不泄漏、数据不丢失、业务不故障、故障快速恢复,切实支撑上层政务应用稳定运行,保障业务连续性。但城市云灾备在落地实践中仍存在诸多挑战:
1.灾备建设的意识性不足。《GW0013-2017 国家电子政务外网标准:政务云安全要求》提出政务云计算基础设施应按照网络安全等级保护国家标准中的第三级等级 保护要求建设和保护。三级等保中灾备建设要求本地数据备份+异地实时备份+系统高可用。但实际交付的政务应用,大量存在无数据备份、无高可用能力的情况,各级政务应用建设部门亟需提高灾备建设意识,补足政务应用灾备建设的缺位。
2.缺乏统一的灾备建设规范和灾备建设指导。比如,本地备份无法应对机房断电断网、停水火灾等数据中心级灾难;传统备份方案不能防范勒索病毒等逻辑错误。政务云灾备建设亟需行业专业建设规范和体系化建设指导,通过专业化规范和指导推动政务云灾备建设流程化、规范化。
3.异构政务云平台灾备建设落地难。为避免被单一云服务商锁定,经过多年建设发展国内政务云逐渐发展为异构多云共存的现状,政务云平台中存在不同厂商,不同底层架构。此时进行政务应用灾备建设,需要综合考虑异构多云平台间网络互联、云服务兼容性、底层架构兼容性等多方面因素,极大增加了政务灾备落地难度。
华为云作为中国政务云基础设施领域领导者,基于华为公有云技术架构的政务云平台,具备领先的云灾备技术实力,支持IaaS、PaaS等云服务云原生灾备能力。结合华为云多年政务云灾备建设经验,能够有效强化政务云平台安全管理机制,协助各级政府落实政务系统信息安全等级保护和风险评估制度,建立政务云多层次灾难恢复体系和灾备管理机制,提升政务应用灾备应急响应能力。
华为云城市云基于“1+N+M”的方案架构,统筹推进城市云灾备服务体系建设,助力政府部门实现关键应用同城灾备和关键数据备份。
借助华为云HCSO领先架构、华为云IaaS、PaaS等云服务功能,支持云原生灾备能力。通过与全局负载均衡GSLB、跨数据中心同步技术协作,可为政务应用跨同城数据中心部署场景提供RPO=0、RTO秒级的业务容灾保护。服务化容灾能力可以在生产站点故障时,保障同城容灾站点业务不中断,真正做到7*24小时对外提供服务。而在灾备切换管理方面,相关组件切换完全基于HCSO云原生灾备能力,通过服务化跨数据中心部署的主备实例或集群自动切换,可大幅降低政府部门容灾切换复杂度,简化灾难发生时的管理流程。
华为云应用同城双活解决方案依赖于HCSO平台云服务云原生灾备能力。在主备机房都是HCSO环境的场景下,应用系统同城机房全量部署并处于运行状态,前端应用为无状态服务器,后端应用RDS数据库、DCS缓存、DMS消息队列等云服务跨同城机房机房主备部署。GSLB全局负载均衡设备实时监控部署于两机房的应用健康状态,故障时自动解析切换访问请求到业务系统状态正常的机房。主备云服务实例故障时,内部自动切换,确保生产数据无丢失,业务无影响。
华为云应用同城双活解决方案整体云服务资源使用率较高,能够应对较高的业务访问需求,故障发生时容灾切换过程简单,提供秒级RTO切换能力。
针对客户异构云平台的场景,华为云混合灾备解决方案支持实现跨云或多云容灾架构,支持对可靠性要求较高数据级和应用级容灾场景。通过与DNS、跨数据中心同步技术协作,可为政务应用跨同城数据中心部署场景提供RPO分钟级、RTO分钟级的业务容灾保护。在灾备切换管理方面,主要以全局负载均衡通过DNS接卸实现业务流量跨数据中心切换。
该方案可实现多场景容灾能力覆盖,并支持客户不同需求选择对应复制技术,如应用层支持多云部署架构、多云线路切换;数据库层支持主流关系型数据库数据,如MySQL。同城主备采用数据层同步复制和应用层主备容灾技术,确保生产中心在重大故障或灾难情况下关键数据不丢失、业务快速切换,适用于重要业务场景容灾保护场景。
数据备份方面,华为云城市云自带本地备份功能,支持云服务器、裸金属服务器、云硬盘、文件存储备份功能,针对病毒入侵、人为误删除、软硬件故障等问题,可实现数据快速恢复。异地灾备采用数据层异步复制技术,提供异地灾备服务能力,适用于在生产中心发生空间地理灾难的情况下,由灾备中心接管关键核心业务,保证极端情况下的业务服务连续性。
华为云灾备解决方案已在多地城市云成功落地实践并取得良好灾备效果。例如,某市政府与华为云深度合作进行市级政务云二期项目建设,开展政务云灾备能力建设。高标准建设的某市级政务云灾备平台具备确保该市政务核心业务RPO=0,RTO秒级恢复能力。
建设完成后该市级政务云支持主站点故障后,快速将业务切换到容灾站点,并支持容灾演练用以验证容灾的能力。新建设的政务云灾备将从以下几方面有力支撑该市政务应用7*24小时稳定运营:
政务云在我国的发展已走过了三个阶段。第一个阶段以“资源”为中心,主要进行基本信息集约化建设;第二阶段以“数据”为中心,旨在进行应用迁移升级,实现单业务智慧化,而如今第三阶段,政务云已演进为城市云,其需求已由“量的增长”向“质的提升”进行转变,肩负起数字政府和智慧城市建设的重要使命,业务应用连续性至关重要,灾备系统建设刻不容缓,华为云将持续为城市云灾备领域发展贡献力量,助力灾备系统推动数字政府、智慧城市建设行稳致远。
我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123
我有这样的HTML代码:Label1Value1Label2Value2...我的代码不起作用。doc.css("first").eachdo|item|label=item.css("dt")value=item.css("dd")end显示所有首先标记,然后标记标签,我需要“标签:值” 最佳答案 首先,您的HTML应该有和中的元素:Label1Value1Label2Value2...但这不会改变您解析它的方式。你想找到s并遍历它们,然后在每个你可以使用next_element得到;像这样:doc=Nokogiri::HTML(
当您在Ruby脚本中使用系统调用时,您可以像这样获得该命令的输出:output=`ls`putsoutput这就是thisquestion是关于。但是有没有办法显示系统调用的连续输出?例如,如果您运行此安全复制命令,以通过SSH从服务器获取文件:scpuser@someserver:remoteFile/some/local/folder/...它显示随着下载进度的连续输出。但是这个:output=`scpuser@someserver:remoteFile/some/local/folder/`putsoutput...不捕获该输出。如何从我的Ruby脚本中显示正在进行的下载进度?
下面有没有更优雅的方法来实现这个:输入:array=[1,1,1,0,0,1,1,1,1,0]输出:4我的算法:streak=0max_streak=0arr.eachdo|n|ifn==1streak+=1elsemax_streak=streakifstreak>max_streakstreak=0endendputsmax_streak 最佳答案 类似于w0lf'sanswer,但通过从chunk返回nil来跳过元素:array.chunk{|x|x==1||nil}.map{|_,x|x.size}.max
我有一个整数数组m。我正在寻找一种方法来检查m的元素是否连续。有没有办法测试连续数字?我想出了这段代码,旨在在数组长度为四时工作:m.count==4&&(m.max-m.min)==3对于[1,1,1,4]或[0,0,0,3]错误地返回true。 最佳答案 Enumerable有一个非常方便的方法叫做each_cons是这样工作的:[1,2,3,4].each_cons(2).to_a#=>[[1,2],[2,3],[3,4]]也就是说,它会生成每组连续的n元素。在我们的例子中,n是2。当然,顾名思义,它返回一个Enumerato
我有一个PORO(普通旧Ruby对象)来处理一些业务逻辑。它接收一个ActiveRecord对象并对其进行分类。为了简单起见,以下面为例:classClassificatorSTATES={1=>"Positive",2=>"Neutral",3=>"Negative"}definitializer(item)@item=itemenddefnameSTATES.fetch(state_id)endprivatedefstate_idreturn1if@item.value>0return2if@item.value==0return3if@item.value但是,我还想根据这些st
我有几个当前作为rake任务运行的进程。我能以某种方式使用Sidekiq来连续循环执行进程吗?这是Sidekiq的最佳实践吗?这些进程,尽管它们现在在各自的rake任务中以连续循环的方式在后台运行,但偶尔会失败。然后我必须重新启动rake任务。在SO社区的帮助下,我正在尝试几个选项。一种是弄清楚如何使用monit监控rake任务。但这意味着每个进程都必须有自己的环境,增加了服务器负载。由于我在虚拟化环境中运行,因此我想尽可能消除它。另一个选择就是利用我已有的Sidekiq选项。我现在使用Sidekiq进行后台处理,但它总是一次性的。有什么方法可以让我在Sidekiq中有一个连续的过程?
我有一个ruby应用程序,它使用反引号将ant作为子进程执行。这没有任何问题。当我执行putant时,ruby等待子进程ant完全完成,然后将输出打印到标准输出。如何让ruby连续打印子进程的输出? 最佳答案 你可以使用IO.popen。IO.popen("ant")do|output|whileline=output.getsdo#...maybeputsline?somethingmoreinteresting?endend 关于ruby-如何在ruby中使用反引号开始子
自从2019年OpenApplicationModel诞生以来,KubeVela已经经历了几十个版本的变化,并向现代应用程序交付先进功能的方向不断发展。最近,KubeVela完成了向CNCF孵化项目的晋升,标志着社区的发展来到一个新的里程碑。今天,KubeVela社区内活跃着大量来自全球的开发者,共同推动KubeVela项目的落地和发展。在即将开幕的KubeCon+CloudNatvieConEurope2023上,我们惊喜地发现,连续3天,KubeVela项目的贡献者、企业用户和来自阿里云的核心维护者,将从不同角度展对KubeVela项目的分享。让我们先睹为快!🎙️BuildingaPlat
消除列表元素连续重复的最佳解决方案是什么?list=compress(['a','a','a','a','b','c','c','a','a','d','e','e','e','e']).plist#=>#['a','b','c','a','d','e']我有这个:defcompress(list)list.map.with_indexdo|element,index|elementunlesselement.equal?list[index+1]end.compactendruby1.9.2 最佳答案 使用的好机会Enumerab