首页 > 其他分享 >中电金信:我们为什么需要单元化架构?

中电金信:我们为什么需要单元化架构?

时间:2024-03-11 11:47:00浏览次数:18  
标签:需要 架构 系统 金信 分片 数据 单元

导语:随着数字化时代的不断发展,金融企业计算机系统也经历了多次变革,从辅助类单机单库系统到全分布式的数字化企业架构。经过十几年的高速发展,金融企业的系统架构建设无论是在性能方面还是在复杂度方面都产生了巨大的变化。而在探索建设金融企业系统架构的道路上,很多金融企业都不约而同的选择了单元化架构。

 

为什么需要单元化架构?什么是单元化架构?金融企业又该如何搭建单元化架构呢?本文作者带来了自己的看法与见解,期待与各位同仁共同探讨交流。

 

 

01·为什么需要单元化架构·

 

在金融行业,为了增强系统性能,业界通常会采用同城热备份和异地冷备份两种策略。然而,这两种方案需要大量的硬件资源,但其利用率却不高,会浪费大量成本。因此,同城双活架构被引入,通过在两个同城机房之间分配流量负载,可以充分利用计算资源处理服务请求,以更有效地利用资源。但是,由于存储技术的限制(即数据的双写同步问题),系统的整体性能往往受到存储性能的制约。尽管在分布式系统中,数据存储问题可以通过分库分表或分布式数据库来缓解,但随着数据量的增加,仍然会面临性能瓶颈。因此,单元化架构就应运而生。

 

随着金融行业新业务的不断扩展,集中式架构的弊端逐渐显现出来,比如小型机虽然性能足够强大,但是面对突增的业务,处理能力往往很难快速提升。而在单元化架构下,因为主要业务服务都按照单元分区,系统故障影响效果可以控制到很低。例如同城双活情况下,可以保证一半数据服务完全不中断,相对以往的方案整个系统需要短暂停顿来切换数据库主备,单元本身也可实现多机房互备,在一个机房发生事故后可以实现较短的时间恢复故障服务。

 

 

02·什么是单元化架构·

 

2.1 单元化架构的定义

 

通俗的来讲,单元化架构其实就是把单元作为系统部署的基本单位,在全站所有机房中部署数个单元,每个机房里的单元数目不定,任意一个单元都部署了系统所需的所有的应用,数据则是全量数据按照某种维度划分后的一部分。在单元化架构中,每一个单元都是一个能完成所有业务操作的自包含集合,在这个集合中包含了所有业务所需要的所有服务,以及分配给这个单元的数据。

 

在实际应用中,单元化架构可以将主要的业务数据以固定的业务字段做分片,这种形式与数据分表的方式类似,但是单元化不只是数据层面,应用所用的计算资源也成了分片分区的一部分。每个单元都有自己可以处理的数据和独享的计算资源,所有单元可以同时处理业务,既提升了系统整体的吞吐量,也使资源得到了最大化利用。 

 

 

2.2 单元化架构现在面临的问题

 

虽然单元是个逻辑概念,但是从资源管理角度看,各单元所使用的资源都是隔离的,只有所有单元合在一起的数据才是完整的数据。与单体系统转分布式系统一样,架构的更新迭代虽然能够解决一些现有的问题,但也会带来新的问题。

 

■单元数据聚合:因为单元数据类似数据库数据分片,在不包含分片关键字段的查询时,需要遍历查询所有分库和分表,整体性能受限很大,而且单一动作会占用更多的资源(网络、计算)。

 

■新旧系统切换:如今大多数系统不是由0到1,而是从1开始到2或更高。怎样将旧架构平稳过度到新架构也是一个不小的难题。

 

■运营维护体系支撑:应用发布、资源管理等,都会对单元化架构产生一定的影响。

 

 

03·如何搭建单元化架构·

 

3.1 搭建单元管理平台

 

近年来,中电金信在如何建设单元化架构这条路上做了很多探索,并基于源启金融级数字底座成功构建了企业级单元化架构平台。对于金融企业来说,想要搭建单元化架构,首先需要一个可以支持搭建单元化架构的单元管理平台。这个平台需要能够支持后期所有的单元化架构规划,例如单元定义、单元定位策略、单元与数据关系建立、单元管理等能力。

 

■ 单元定义:单元可分为两大类,一种是可以按照一定规则分区的单元,称之为分片单元;另一种是不可以按照分区单元规则分区的单元,称之为非分片单元。分片单元与数据分片类似,它会定义一个业务标识的字段作为分区标准,目前实践较多的字段有“机构号”“客户号”,这种就是“单元分片标识”。需要特别说明的是,单元一旦定义就不可以轻易变动,因为它会涉及到单元定位、单元数据分区等一些列操作,如果单元定义有变动的话就相当于整体架构都要调整。

 

■ 单元定位策略:通常来说,单元定位都是根据交易请求信息内容、一定的规则和算法得出的当前交易应该去哪个单元执行。但是由于交易的多样性,里面也可能不一定包含能够直接进行定位的单元分片标识信息,所以还需要维护一个与单元分片标识有映射关系的数据,以此来适应更多的业务场景。

 

■ 单元与数据关系:用于划分单元的单元分片标识也可以作为数据存储分片的分片键,为了实现数据弹性架构以及数据备份转移,需要建立数据分片与单元的关系管理。

 

 

3.2 创建出单元实例

 

实际上,单元化架构规划的规程其实就是一种建模的过程,金融企业在完成单元化架构规划以后,还需要再创建出单元实例。当单元实例与数据中心建立关系,企业就可以勾勒出单元化架构的雏形了。

 

那么怎样才能让应用实现单元化呢?我们在进行应用部署的时候,要将那些需要进行单元化部署的应用与单元实例建立关系。这样在应用部署后它们就会包含单元属性,实现应用的单元化,并且完全不用感知单元的存在。为了更高效地管理集群内的应用节点,所有单元内的能力要保持一致,单元间的差异只是处理的数据不同。非分片单元不受此规则限制,因为其本身就是不可拆分的数据,集中的服务集群。

 

 

3.3 获得技术平台关键中间件支持

 

想要构建一个完整的单元化架构体系,只有单元管理的能力是不够的,还需要获得技术平台关键中间件的支持才行。

 

■ 分布式网关:分布式服务系统关键组件,外部交易请求的单元定位都是由它完成的,包括应用发布时的流量控制。所以需要在其控制与执行层面引入单元概念,并与单元实例建立关系,这样才可以保证后期能够执行单元定位策略。

 

■ 服务治理:包含内部服务的注册与发现、服务访问、服务流量等多种服务管理职能。在单元化架构下,服务治理组件需要感知单元,并可以基于单元维度管理服务。服务注册时需要标注单元标签,可以根据服务访问策略定位需要处理的业务所在单元,是单元化架构下服务集群系统的关键组件。

 

■ 消息中间件:在单元化架构下,基于消息系统处理业务的服务也需要考虑单元化的影响,因为消息生产方要处理的任务所在单元并不一定就在本地,也可能在其他单元。所以消息中间件不仅需要可以被所有单元的消费者可以访问到,同时还要配合单元定位标识出单元位置,这样才能保证单元消费者拿到对应的消息在本单元内处理。

 

■ 批量调度平台:在单元化架构下异步处理任务、定时调度服务等业务也需要感知单元,可以通过单元维度管理批量任务,并能够从单元视角查看整个集群批量任务运行情况。

 

■ 运维监控系统:应用在发布时与单元建立关系,这时应用的日志就已经带有单元标签,运维系统可以通过日志采集、接收数据上报等手段获得单元信息。可以从单元视角查看整个系统运行情况。

 

 

04·总结·

 

通过上述内容的阐述,我们可以看到单元化架构可以适应未来大规模分布式服务需求,并在高可用、性能保障等方面具有得天独厚的优势,但相应的是单元化架构所产生的问题往往也需要企业去投入更大的成本来解决。

 

对于金融企业来说,是否要使用单元化架构需要“具体问题具体分析”,企业应当在充分评估当前自身系统现状的基础上,并根据企业的现状与未来的发展规划来决定是否要选择单元化架构。中电金信也会在今后的实践中继续探索,不断寻找更高效的架构解决方案与技术支撑能力,帮助企业达到降本增效的目标,协助金融企业创造出更多的价值。

标签:需要,架构,系统,金信,分片,数据,单元
From: https://www.cnblogs.com/zhongdianjinxin/p/18065749

相关文章

  • 处理器架构
    Intel处理器都有哪些架构?兼容性如何Intel处理器拥有多个架构系列,这些架构在不同的时间段推出,针对不同的市场和应用需求。以下是一些Intel处理器的主要架构系列及其兼容性概览:x86(IA-32):这是Intel最初的32位架构,广泛应用于个人计算机、服务器等领域。随着技术的发展,x86架构已经演......
  • 再聊对架构决策记录的一些思考
    1引言第一次在社区发文聊ADR(架构决策记录)是在2022年8月份,在文章( 轻量级ADR机制 )中,详细介绍了以下几个主题:•团队研发面临的主要问题•ADR的结构剖析•ADR的存储形式•ADR在研发流程中所处的位置•ADR常见的误区与疑问在实践中发现仍然有一些普遍性问题与挑战可以探讨。......
  • 【秒杀架构】
    参考:https://www.bilibili.com/video/BV1jA411k7eG?p=9&vd_source=898d5514be58985430a49b46d5500c13 场景:设计目标:最小改动保证秒杀时间的流量洪流不会冲垮服务器整体思路: 1、流量页面如何将请求拦截在上游?静态请求动态请求:  下单页面......
  • Go语言精进之路读书笔记第44条——正确运用fake、stub和mock等辅助单元测试
    44.1fake:真实组件或服务的简化实现版替身fake测试就是指采用真实组件或服务的简化版实现作为替身,以满足被测代码的外部依赖需求。使用fake替身进行测试的最常见理由是在测试环境无法构造被测代码所依赖的外部组件或服务,或者这些组件/服务有副作用。typefakeOkMailerstruct......
  • Redis 架构深入:主从复制、哨兵到集群
    大家好,我是小康,今天我们来聊下Redis的几种架构模式,包括主从复制、哨兵和集群模式。前言:设想一下,你的咖啡馆在城市中太受欢迎,导致每天都人满为患。为了缓解这种压力,你决定在其他地方开设分店,这样顾客就可以在附近的分店享受咖啡,而不必涌向一个地方,这就好比Redis的主从复制,让......
  • ISA指令集架构简介与蜂鸟E203处理器公开资料整合
    ISA(InstructionSetArchitecture)指令集架构可分为CISC与RISC:CISC(ComplexInstructionSetComputer)计算机复杂指令集,不仅包含了处理器常用的指令,还会含有许多不常用的特殊指令。这会导致其指令集的数目较多,故称为复杂指令集。RISC(ReducedInstructionSetComputer)计算机精简......
  • 基于EXO λ驱动的可编程分子信号传输架构和DNA电路中的反应物再生策略四节点DNA电路与
    为了解决过程中信号衰减的问题,利用独特的环形空间拓扑结构和EXOλ的水解特性,实现了EDRR策略EXOλ的特性如图1a所示,当EXOλ水解底物,锥形通道的宽端,可以从5'的钝端或凹端嵌入DNA链,从而连续和快速水解,在5'端有磷酸修饰的DNA链,而互补链则从锥形中穿出通道。它的环形空间拓扑结......
  • EasyExcel动态单元格合并(跨行或跨列)
    EasyExcel动态单元格合并(跨行或跨列)简单的合并单元格可以参照官网提供的@OnceAbsoluteMerge()和@ContentLoopMerge()两个注解进行@OnceAbsoluteMerge()注解只会合并一次就不再执行了动态相同值合并单元格代码示例(可以直接使用):先看结果:开启合并列行合并单元格,指定1......
  • 用lazarus编写的类RichView显示控件初步支持markdown格式的表格,并增加单元格字体颜色
    用lazarus编写的类RichView显示控件初步支持markdown格式的表格,并增加单元格字体颜色等功能,可在信创电脑使用,功能慢慢添加中。github:https://github.com/szlbz/QFComponent其中图像格式支持:bmp,jpg,png等 除以上格式外,还支持单、双分割线等......
  • 解决easyexcel合并单元格数组求和重复问题
    背景EasyExcel(根据条件动态合并单元格的重复数据))_Violet-CSDN博客_easyexcel动态合并单元格现有的订单导出是使用的easyExcel完成的.对于相同单元格的合并是自定义的策略,问题是对于重复单元格的值会合并,表格求和时值会虚高现需要对合并格做修改,做到值只有一个。思路sheet合并......