CN113254050A - 一种微前端系统 - Google Patents
一种微前端系统 Download PDFInfo
- Publication number
- CN113254050A CN113254050A CN202110699350.1A CN202110699350A CN113254050A CN 113254050 A CN113254050 A CN 113254050A CN 202110699350 A CN202110699350 A CN 202110699350A CN 113254050 A CN113254050 A CN 113254050A
- Authority
- CN
- China
- Prior art keywords
- sub
- application
- application module
- module
- base
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012795 verification Methods 0.000 claims abstract description 19
- 238000013507 mapping Methods 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 7
- 238000004891 communication Methods 0.000 description 6
- 230000003993 interaction Effects 0.000 description 5
- 238000000034 method Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请适用于前端应用技术领域,公开了一种微前端系统,包括子应用模块、配置中心及基座应用集群,子应用模块将子应用配置文件上传至配置中心;配置中心根据子应用配置文件从基座应用模块集群中确定出目标基座应用模块,并将子应用配置文件中的子应用数据发送至目标基座应用模块,且在接收到目标基座应用模块返回的基座应用数据时,将子应用数据与基座应用数据进行关联注册;目标基座应用模块对子应用数据携带的密钥进行校验,且当在校验成功时存储子应用数据,并将基座应用数据发送至配置中心。本申请中的微前端系统实现了子应用模块的发现与注册,提高了子应用模块注册的自动化程度。
Description
技术领域
本申请涉及前端应用技术领域,尤其涉及一种微前端系统。
背景技术
微前端系统是指将一个前端应用分解成一些更小、更简单的能够独立开发、测试、部署的子应用模块,通过基座应用模块对子应用模块的全局控制调度,实现系统行为的整体控制,具有应用自治、单一职责、技术栈无关等优势。微前端系统需要对新发布的子应用模块的子应用配置文件进行查找和注册,以及在子应用配置文件发生变更时,更新订阅了该子应用模块的基座应用模块的注册信息。现有技术中微前端系统的基座应用模块作为主要服务注册管理端,通过预先构建的基座作为主控端来控制整个系统的行为,具体实现方式是先在基座里创建一个文件夹作为应用注册表,初始化微前端系统相关的配置文件,该配置文件用于存放子应用信息,主要包括每个应用的信息及对应的应用入口,起全局注册中心的作用,子应用模块在构建完成或者部署到服务器后,在该应用注册表中注册,才可以接受基座应用模块的调用。
现有的微前端系统中,通过固定的配置文件实现子应用模块的注册,每次更新子应用模块都需要修改配置文件,再重新启动基座应用进行数据同步,不方便子应用模块的添加、删除。并且当子应用模块发生变更时,比如新发布了子应用模块的子应用配置文件或已有子应用模块的子应用配置文件更新时,基座应用模块不能自动注册发现子应用模块,需要开发人员通知基座应用模块注册子应用模块,可见现有的微前端子应用模块注册方案存在自动化程度较低的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种微前端系统,以解决现有的微前端子应用模块注册方案自动化程度较低的问题。
本申请实施例提供了一种微前端系统,包括子应用模块、配置中心和基座应用模块集群。
所述子应用模块,用于将子应用配置文件上传至配置中心。
所述配置中心,用于根据所述子应用配置文件从所述基座应用模块集群中确定出目标基座应用模块,并将所述子应用配置文件中的子应用数据发送至所述目标基座应用模块,且在接收到所述目标基座应用模块返回的基座应用数据时,将所述子应用数据与所述基座应用数据进行关联注册。
所述目标基座应用模块,用于对所述子应用数据携带的密钥进行校验,且当在校验成功时,存储所述子应用数据,并将所述基座应用数据发送至所述配置中心。
上述方案中,所述子应用配置文件包括配置中心地址和所述子应用数据。
所述配置中心还用于,在监测到所述子应用配置文件发生变化时,向所述子应用模块发送上传通知。
所述子应用模块具体用于,在接收到所述上传通知时,根据所述配置中心地址将所述子应用配置文件发送至所述配置中心。
上述方案中,所述根据所述子应用配置文件从所述基座应用模块集群中确定出目标基座应用模块,包括:
通过配置中心的配置处理模块解析所述子应用配置文件,得到所述子应用数据。
基于预设的主题关系映射列表,根据所述子应用数据中携带的主题,从所述基座应用模块集群中确定出目标基座应用模块。
上述方案中,所述预设的主题关系映射列表中的信息用于描述所述主题与所述目标基座应用模块之间的一一对应关系。
上述方案中,所述将所述子应用配置文件中的子应用数据发送至所述目标基座应用模块,具体包括:
通过Websocket将所述子应用数据发送至所述目标基座应用模块。
上述方案中,所述在接收所述目标基座应用模块返回的基座应用数据时,将所述子应用数据与所述基座应用数据进行关联注册,包括:
基于所述预设的主题关系映射列表,判断所述主题是否在所述配置中心数据库中的订阅关系表中存在。
若所述主题在所述订阅关系表存在,则将所述子应用数据的子应用ID存储至所述订阅关系表中。
若所述主题在所述订阅关系表不存在,则基于所述预设的主题关系映射列表,将所述子应用数据的子应用ID、所述主题以及所述基座应用数据的基座应用ID关联存储至所述订阅关系表中。
上述方案中,所述子应用数据携带有子应用私钥,所述基座应用数据携带有基座应用公钥。
所述目标基座应用模块具体用于,校验所述子应用私钥与所述基座应用公钥是否配对。
若所述子应用私钥与所述基座应用公钥配对,则接收并存储所述配置中心发送的所述子应用数据,并将所述基座应用数据发送至所述配置中心。
上述方案中,所述配置中心还用于,将存储有所述子应用模块和所述目标基座应用模块订阅关系的订阅关系表同步保存到Redis缓存中。
上述方案中,所述配置中心还用于搭建Websocket服务,且将所述基座应用模块作为所述Websocket服务的客户端。
上述方案中,所述子应用私钥和所述基座应用公钥均是基于非对称加密算法得到,其中,所述子应用私钥与所述基座应用公钥基于所述目标基座应用模块与所述子应用模块之间的订阅关系分别配置到所述子应用模块中与所述目标基座应用模块中。
本申请提供的一种微前端系统,包括子应用模块、配置中心及基座应用集群,子应用模块将子应用配置文件上传至配置中心,配置中心在接收到子应用配置文件后进行解析处理,得到子应用数据,并基于该子应用数据从基座应用模块集群中确定出目标基座应用模块,并将子应用数据发送至目标基座应用模块,目标基座模块对子应用数据携带的密钥进行校验,且当在校验成功时,存储子应用数据,并将基座应用数据发送至配置中心,配置中心在接收到目标基座应用模块返回的基座应用数据时,将子应用数据与基座应用数据进行关联注册。本申请提供的微前端系统通过配置中心主导子应用模块、配置中心和基座应用模块进行数据交互,实现了基座应用模块对子应用模块的发现与注册,提高了子应用模块注册的自动化程度。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种微前端系统的结构框架示意图;
图2是本申请实施例提供的一种微前端系统的具体结构框架示意图;
图3是本申请实施例中基于发布-订阅模式的子应用模块和基座应用模块订阅关系示意图。
其中,10-子应用模块,20-配置中心,30-基座应用模块集群,31-基座应用模块。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请所有实施例提供的微前端系统应用于电子设备中,电子设备可以是终端类或服务器类,如手机或计算机等。
图1示出了微前端系统的结构框架示意图。如图1所示,微前端系统中包括若干子应用模块10,配置中心20,以及若干基座应用模块31组成的基座应用模块集群30。
子应用模块10,用于将子应用配置文件上传至配置中心20。
配置中心20,用于根据子应用配置文件从基座应用模块集群30中确定出目标基座应用模块,并将子应用配置文件中的子应用数据发送至目标基座应用模块,且在接收到目标基座应用模块返回的基座应用数据时,将子应用数据与基座应用数据进行关联注册。
目标基座应用模块,用于对子应用数据携带的密钥进行校验,且当在校验成功时,存储子应用数据,并将基座应用数据发送至配置中心20。
在本实施例中,子应用配置文件用于描述子应用模块的执行环境和执行内容。其中,执行环境用于描述该子应用模块的具体注册过程,执行内容可以由子应用数据描述。子应用模块10将子应用配置文件上传至配置中心20,可以是在子应用模块10中配置上传策略,例如,设定将子应用配置文件上传至配置中心20的周期,当到达该周期的指定上传时间时,将子应用配置文件上传至配置中心20。或者,由配置中心20对子应用模块10进行内容更新检测,当检测到子应用模块10中的子应用配置文件被更新时,令子应用模块10上传更新后的子应用配置文件。
基座应用模块集群30包括若干基座应用模块31,根据子应用配置文件中的相关信息从基座应用模块集群30中的若干基座应用模块31确定出与子应用模块存在订阅关系的一个或多个基座应用模块31,其中,所确定的一个或多个基座应用模块31即为目标基座应用模块,这里订阅关系指的是基座应用模块31关联若干子应用模块10,进而通过调用已关联子应用模块10的数据,实现前端应用系统的具体功能,本申请中所提及的注册子应用模块10,具体地是通过存储或更改基座应用模块31和子应用模块10的订阅关系,来注册子应用模块10,例如新增一子应用模块10,其子应用配置文件中已经预先配置了订阅该子应用模块10的基座应用模块31的相关信息,但此时因为微前端系统并未注册该子应用模块10,也即并未存储该子应用模块10与基座应用模块31的订阅关系,则基座应用模块31就无法通过调用新增的子应用模块10的数据来实现相应的系统功能,再例如一子应用模块10的子应用配置文件改变,此时需要更新该子应用模块10的注册信息,再例如,删除一子应用模块10,只需要将该子应用模块10和对应的基座应用模块31的关联注册数据删除即可。
子应用模块10的子应用配置文件中携带有子应用数据,子应用配置文件经过数据解析和处理后得到子应用数据,在从基座应用模块集群30中确定出目标基座应用模块后,配置中心20将子应用数据发送到各个目标基座应用模块,配置中心20与目标基座应用模块的数据交互,可以采用C-S方式,即客户(client)和服务器(server)方式,其中,配置中心20作为服务端,目标基座应用模块作为客户端,反之亦可,或者采用P2P方式,即对等连接(peer-to-peer)方式,配置中心20和目标基座应用进行完全对等通信,二者本身即是客户端又是服务端。
目标基座应用模块在成功接收到配置中心20发送给的子应用数据后,会将基座应用数据发送到配置中心20,配置中心20接收该基座应用数据,然后将该基座应用数据与对应的子应用数据进行关联,从而实现子应用模块10的自动注册,具体地,可以将基座应用数据和子应用数据存储在一张数据表中,在需要访问基座应用模块31和子应用模块10的订阅关系时,直接访问该数据表就能得到访问基座应用模块31和子应用模块10的订阅关系信息,以及基座应用数据和子应用数据,或者将基座数据和子应用数据分别进行存储,将基座应用模块31和子应用模块10的订阅关系单独存储到一张订阅关系表中,在需要访问基座应用模块31和子应用模块10的订阅关系时,先访问该订阅关系表,得到订阅关系信息后,再获取基座应用数据和子应用数据。
配置中心20向目标基座应用模块发送子应用数据,但目标基座应用模块并不直接接收该子应用数据,而是先对子应用数据中携带的密钥进行校验,只有在密钥校验通过时,才接收并存储该子应用数据,之后才会向配置中心20反馈该目标基座应用模块的基座应用数据。如果目标基座应用模块31进行密钥校验不成功,则不接收该子应用数据,也不会向配置中心20发送基座应用数据,终止该子应用模块10的注册过程。本实施例中,密钥校验可以基于数据加密算法来实现,预先生成可以相互配对的公钥和私钥,再分别配置到子应用数据和基座应用数据中,具体在进行密钥校验时,判断公钥和私钥是否配对即可,若配对则密钥校验成功,反之则密钥校验不成功。
需要进一步明确的是,本实施例中,一个子应用模块10可以被多个基座应用模块31同时订阅,也即对于每一个订阅了该子应用模块10的基座应用模块31,都需要对该子应用模块10进行注册。另一方面,一个基座应用模块31也可以同时订阅多个子应用模块10,通过调用多个子应用模块10的数据,来共同实现微前端系统的功能。
本申请实施例提供的微前端系统,通过配置中心20控制子应用模块10和基座应用模块31的进行数据交互,实现了基座应用模块31对子应用模块10的发现与注册,提高了子应用模块10注册的自动化程度。另一方面,基于加密算法,在目标基座应用模块接收子应用数据之前,对子应用数据进行密钥校验,保证了子应用数据的安全性。
作为一个实施例,子应用配置文件包括配置中心地址和所述子应用数据。配置中心20还用于在监测到子应用配置文件发生变化时,向子应用模块10发送上传通知;子应用模块10具体用于,在接收到上传通知时,根据配置中心地址将子应用配置文件发送至所述配置中心20。
本申请的微前端系统中包括若干子应用模块10,每一子应用模块10都通过子应用配置文件注册到对应的目标基座应用模块上。子应用配置文件包括配置中心地址以及子应用数据,其中,配置中心地址用于子应用模块10寻址配置中心20,以便于将子应用配置文件上传至配置中心20进行进一步地处理。配置中心20监测子应用配置文件,在子应用配置文件发生变化时,通知子应用模块10上传子应用配置文件,子应用配置文件的变化包括新增子应用配置文件,删除原有子应用配置文件,以及原有配置文件中子应用数据的改变,当子应用配置文件发生变化时,需要在基座应用模块31中重新注册或删除该子应用配置文件所属的子应用模块10。
图2示出了本申请实施例提供的一种微前端系统的具体结构框架示意图。
作为一个实施例,根据子应用配置文件从所述基座应用模块集群30中确定出目标基座应用模块,包括:
通过配置中心的配置处理模块解析所述子应用配置文件,得到所述子应用数据。
具体地,通过配置中心20的配置处理模块解析子应用配置文件,得到子应用数据,配置中心20的配置处理模块存储有配置处理程序,用于解析子应用配置文件得到子应用数据,进而根据子应用数据携带的主题从基座应用模块集群30中的若干基座应用模块31中,确定出目标基座应用模块。
基于预设的主题关系映射列表,根据子应用数据中携带的主题,从基座应用模块集群30中确定出目标基座应用模块。预设的主题关系映射列表中的信息用于描述主题与目标基座应用模块之间的一一对应关系。
子应用数据中携带的主题,基于数据通信领域中的发布-订阅模式得到,预设的主题关系映射列表保存有主题和目标基座应用模块的一一对应关系。子应用模块10和基座应用模块31间的信息传递采用发布-订阅模式,子应用数据中携带主题指的是子应用模块10需要进行发布的主题,该主题可以有一个或多个,基座应用模块31通过订阅其对应的主题来间接实现对多个子应用模块10的订阅,基座应用模块31和主题的对应关系保存在预设的主题关系映射列表中。以下对本实施例中的发布-订阅模式作进一步地解释说明。
在发布-订阅模式里,发布者并不会直接和订阅者进行信息传递,发布者和订阅者之间的交流通过第三者,也就是Broker(经纪人)来实现。发布者如果需要发布新的消息,发布者只需告诉Broker,我要发的消息,主题是AAA,订阅者只需告诉Broker,我要订阅主题是AAA的消息,于是,当Broker收到发布者发过来消息,并且主题是AAA时,就会把消息推送给订阅了主题是AAA的订阅者,也可以是订阅者主动拉取其订阅的主题消息。具体地,在本实施例中,基座应用模块31是订阅者,子应用模块10是发布者,每个子应用模块10都会发布到相应的主题,且其发布的主题不唯一。
在常见的发布-订阅模式里,发布者可以发布多个主题,订阅者也可以同时订阅多个主题,但是,在本实施例中,对于发布-订阅模式进行了限定,图3示出了本申请实施例中子应用模块10和基座应用模块31基于发布-订阅模式的订阅关系示意图,具体地,图3示出了子应用模块的子应用数据与基座应用模块的基座应用数据以及主题间的订阅关系,子应用模块10是发布者,基座应用模块31是订阅者,一个子应用模块10可以发布到多个主题中,即一个子应用模块10可以同时属于多个主题,但对于基座应用模块31来讲,其订阅的主题有且只有一个,即基座应用模块31和主题的订阅关系是一一对应的。基于此,在具体的开发过程中,可以直接用基座应用名来命名其订阅的唯一主题,从而减少数据量,逻辑上也更加直观清楚。需要明确的是,图3仅示出了单个子应用模块10与多个基座应用模块31的订阅关系,若同时存在多个子应用模块10,这些子应用模块10发布的主题可以重复,即不同子应用模块发布的多个主题中可以有相同的主题,进而通过主题实现一个基座应用模块31对多个子应用模块10的订阅。
另一方面,配置中心20还将该子应用数据保存到配置中心数据库中的子应用表中。配置中心数据库用于保存子应用模块10和基座应用模块31的相关信息,具体地,在一实施例中,配置中心数据库中创建有三张表格,分别为子应用表、基座应用表及订阅关系表,子应用表用于存储子应用模块10相关信息,基座应用表用于存储基座应用模块31相关信息,订阅关系表用于存储子应用模块10和基座应用模块31的订阅关系信息。在一实施例中,所述子应用数据包括子应用名、子应用地址、子应用私钥及一个或多个主题。如表1所示的子应用表示例:
表1子应用表示例
子应用ID | 子应用名 | 子应用地址 | 子应用私钥 | 主题 |
其中,子应用表中还包括子应用ID,子应用ID为子应用在配置中心数据库中的唯一ID,子应用ID可由预先设定或配置数据库自动生成。
作为一个实施例,将子应用配置文件中的子应用数据发送至目标基座应用模块,具体包括:通过Websocket将子应用数据发送至目标基座应用模块。
Websocket是一种在单个TCP连接上进行全双工通信的协议,Websocket允许服务端主动向客户端推送数据,在Websocket API中,客户端和服务端只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。在本申请中,配置中心20作为Websocket的服务端与基座应用模块31进行通信,基座应用模块31是客户端,基座应用模块31也可以通过Websocket向配置中心传输数据,基于Websocket实现了配置中心20和基座应用模块31的双向数据传输。
作为一个实施例,子应用数据携带有子应用私钥,基座应用数据携带有基座应用公钥。目标基座应用模块具体用于,校验子应用私钥与基座应用公钥是否配对;若子应用私钥与所述基座应用公钥配对,则接收并存储所述配置中心发送的子应用数据,并将基座应用数据发送至所述配置中心。
配置中心20在接收到子应用配置文件后,解析得到子应用数据,一方面将存储该子应用数据,一方面在查找到目标基座应用模块后,通过Websocket将子应用数据发送至一个或多个目标基座应用模块,由目标基座应用模块进行密钥校验操作。具体地,目标基座应用校验子应用私钥与基座应用公钥是否配对,子应用私钥包括于子应用数据中,基座应用公钥包括于基座应用数据中。进一步地,若子应用私钥与基座应用公钥配对,则接收并存储配置中心20发送的子应用数据,并通过Websocket将基座应用数据发送至配置中心20。相反地,若子应用私钥与基座应用公钥不配对,目标基座应用模块就不接收子应用数据,本实施例中,密钥校验用于确保基座应用模块31接收的子应用数据是其订阅的子应用模块10的子应用数据,只有在密钥校验配对后,基座应用模块31才接收子应用数据,保证了子应用数据的安全。如果不进行密钥校验,子应用数据可能被其他基座应用模块31接收,进而进行子应用模块注册,导致子应用数据不安全。例如子应用模块A要求只能注册到基座应用模块B上,如果不进行密钥校验,子应用模块A的子应用数据被基座应用模块C接收到,则可以直接注册到基座应用模块C上,导致子应用模块A注册出现错误。
作为一个实施例,在接收所述目标基座应用模块返回的基座应用数据时,将子应用数据与基座应用数据进行关联注册,包括:
基于预设的主题关系映射列表,判断主题是否在配置中心数据库中的订阅关系表中存在。如表2所示的订阅关系表示例:
表2订阅关系表示例
关系表ID | 主题 | 子应用ID | 基座应用ID |
1 | AAA | P001 | S001 |
2 | BBB | P002 | S002 |
3 | CCC | P003 | S003 |
例如基座应用ID为S001的基座应用模块31,订阅关系表中已经保存的订阅的主题为AAA,若此时发布了一个新的子应用模块10,子应用ID为P004,发布的主题同样AAA,则经判断可知,主题AAA在订阅关系表中已经存在,若其发布的主题为DDD,则该主题在订阅关系表中不存在。其中,子应用ID和基座应用ID可以是预先设定,也可以由配置中心数据库自动生成。
若该主题在所述订阅关系表存在,则将所述子应用数据的子应用ID存储至订阅关系表中。
例如新的子应用模块10发布的主题为AAA,基于预设的主题关系映射列表可知,该主题对应的基座应用模块31的基座应用ID为S001,该子应用模块10的子应用ID为P004,由于主题AAA在订阅关系表中已经存在,只需要将该子应用模块10的子应用ID添加到订阅关系表中即可,新的订阅关系表如表3所示:
表3新的订阅关系表示例
关系表ID | 主题 | 子应用ID | 基座应用ID |
1 | AAA | P001 P004 | S001 |
2 | BBB | P002 | S002 |
3 | CCC | P003 | S003 |
若该主题在所述订阅关系表不存在,则基于预设的主题关系映射列表,将子应用数据的子应用ID、主题以及基座应用数据的基座应用ID关联存储至所述订阅关系表中。
例如新的子应用模块10发布的主题为DDD,基于预设的主题关系映射列表可知,该主题对应的基座应用模块31的基座应用ID为S004,若子应用ID为P004,由于主题DDD在订阅关系表中并不存在,则需要在订阅关系表中新增该主题的记录,将子应用数据的子应用ID、主题以及基座应用数据的基座应用ID关联存储至所述订阅关系表中。新的订阅关系表如表4所示:
表4新的订阅关系表示例
关系表ID | 主题 | 子应用ID | 基座应用ID |
1 | AAA | P001 | S001 |
2 | BBB | P002 | S002 |
3 | CCC | P003 | S003 |
4 | DDD | P004 | S004 |
另一方面,配置中心在接收到基座应用数据后,还将基座应用数据保存到配置中心数据库中的基座应用表。如表5所示的基座应用表示例:
表5基座应用表示例
基座应用ID | 基座应用名 | 基座应用公钥 |
其中,基座应用名为基座应用模块的名称,基座应用ID为标识该基座应用模块的代码,基座应用公钥用于与子应用私钥配对进行密钥校验操作。
作为一个实施例,配置中心20还用于,将存储有子应用模块10和目标基座应用模块订阅关系的订阅关系表同步保存到Redis缓存中。
配置中心20管理了多个基座应用模块31和子应用模块10的订阅关系,每个基座应用模块31可能订阅了多个子应用模块10,基座应用模块31和子应用模块10的订阅关系会因为基座应用模块31或者子应用模块10的变更而产生变化,这种关系的变化是非常频繁的,如果所有的数据访问请求直接访问配置中心数据库,配置中心数据库可能会出现连接异常,使用Redis缓存做一个缓冲操作,让数据访问请求先访问到Redis缓存,而不是直接访问配置中心数据库,具体地,可以直接在Redis缓存中新建一个订阅关系表,在配置中心数据库中的订阅关系表信息发生变化时,保持Redis缓存中的订阅关系表和配置中心数据库中的订阅关系表的同步更新,或者定时将配置中心数据库中的订阅关系表复制拷贝到Redis缓存中,当系统需要访问子应用模块10和基座应用模块31的订阅关系时,直接访问Redis缓存即可,提高了访问速度。
作为一个实施例,配置中心还用于搭建Websocket服务,且将基座应用模块作31为Websocket服务的客户端。
现有的服务端-客户端的通信通常采用HTTP协议,但通信只能由客户端发起,客户端向服务端发出请求,服务端返回查询结果。在本申请中配置中心和基座应用模块通信,如果采用HTTP协议,当子应用配置文件发生变化时,需要将子应用数据发送到目标基座应用模块,但由于HTTP协议单向请求的特点,配置中心20无法主动向基座应用模块31推送信息,只能由基座应用模块31定时向配置中心20发出询问请求,占用网络带宽,浪费资源,工作效率低。配置中心20创建Websocket服务,则配置中心20作为Websocket服务的服务端,基座应用模块31作为Websocket服务的客户端,配置中心20可以主动向基座应用31推送信息,基座应用模块31也可以主动向配置中心20发送信息,从而提高了信息交互的效率,节约了网络带宽。
作为一个实施例,子应用私钥和基座应用公钥均是基于非对称加密算法得到,其中,子应用私钥与基座应用公钥基于目标基座应用模块与子应用模块10之间的订阅关系分别配置到子应用模块10中与目标基座应用模块中。
在将子应用配置文件上传至配置中心20之前,基于非对称加密算法,生成子应用私钥和基座应用公钥,基于子应用模块10和目标基座应用模块的订阅关系,将子应用私钥添加到子应用模块10的子应用数据中,将基座应用公钥添加到目标基座应用模块的基座应用数据中。
非对称加密算法需要两个密钥:公钥和私钥,公钥与私钥是一对。非对称加密算法有两种实现功能,一是加密,甲方用公钥对数据进行加密,乙方只有用对应的私钥才能解密。二是验证,甲方使用私钥对数据进行签名后再发送给乙方,乙方再使用公钥对甲方发送回来的数据进行验签,来确保数据由甲方发出。本申请中密钥校验用于确保基座应用模块31接收的子应用数据是其订阅的子应用10的子应用数据,也即使用的是非对称加密算法的验证功能。在本实施例中,具体地,基于RSA非对称加密算法来加密数据,采用JAVA开源的java.security工具包生成公钥和私钥,并使用Base64进行编码。这里私钥指的是子应用私钥,公钥指的是基座应用公钥,两者成对生成,可以进行完全配对。此外,还需要将子应用私钥添加到子应用模块10的子应用数据中,将基座应用公钥添加到目标基座应用模块的基座应用数据中,用于目标基座应用模块后续的密钥校验操作。
本申请提供的一种微前端系统,包括子应用模块、配置中心及基座应用集群,子应用模块将子应用配置文件上传至配置中心,配置中心在接收到子应用配置文件后进行解析处理,得到子应用数据,并基于该子应用数据从基座应用模块集群中确定出目标基座应用模块,并将子应用数据发送至目标基座应用模块,目标基座模块对子应用数据携带的密钥进行校验,且当在校验成功时,存储子应用数据,并将基座应用数据发送至配置中心,配置中心在接收到目标基座应用模块返回的基座应用数据时,将子应用数据与基座应用数据进行关联注册。本申请提供的微前端系统通过配置中心主导子应用模块、配置中心和基座应用模块进行数据交互,实现了基座应用模块对子应用模块的发现与注册,提高了子应用模块注册的自动化程度。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种微前端系统,其特征在于,包括子应用模块、配置中心和基座应用模块集群;
所述子应用模块,用于将子应用配置文件上传至配置中心;
所述配置中心,用于根据所述子应用配置文件从所述基座应用模块集群中确定出目标基座应用模块,并将所述子应用配置文件中的子应用数据发送至所述目标基座应用模块,且在接收到所述目标基座应用模块返回的基座应用数据时,将所述子应用数据与所述基座应用数据进行关联注册;
所述目标基座应用模块,用于对所述子应用数据携带的密钥进行校验,且当在校验成功时,存储所述子应用数据,并将所述基座应用数据发送至所述配置中心。
2.如权利要求1所述的微前端系统,其特征在于,所述子应用配置文件包括配置中心地址和所述子应用数据;
所述配置中心还用于,在监测到所述子应用配置文件发生变化时,向所述子应用模块发送上传通知;
所述子应用模块具体用于,在接收到所述上传通知时,根据所述配置中心地址将所述子应用配置文件发送至所述配置中心。
3.如权利要求1所述的微前端系统,其特征在于,所述根据所述子应用配置文件从所述基座应用模块集群中确定出目标基座应用模块,包括:
通过配置中心的配置处理模块解析所述子应用配置文件,得到所述子应用数据;
基于预设的主题关系映射列表,根据所述子应用数据中携带的主题,从所述基座应用模块集群中确定出目标基座应用模块。
4.如权利要求3所述的微前端系统,其特征在于,所述预设的主题关系映射列表中的信息用于描述所述主题与所述目标基座应用模块之间的一一对应关系。
5.如权利要求1所述的微前端系统,其特征在于,所述将所述子应用配置文件中的子应用数据发送至所述目标基座应用模块,具体包括:
通过Websocket将所述子应用数据发送至所述目标基座应用模块。
6.如权利要求3所述的微前端系统,其特征在于,
所述在接收所述目标基座应用模块返回的基座应用数据时,将所述子应用数据与所述基座应用数据进行关联注册,包括:
基于所述预设的主题关系映射列表,判断所述主题是否在所述配置中心数据库中的订阅关系表中存在;
若所述主题在所述订阅关系表存在,则将所述子应用数据的子应用ID存储至所述订阅关系表中;
若所述主题在所述订阅关系表不存在,则基于所述预设的主题关系映射列表,将所述子应用数据的子应用ID、所述主题以及所述基座应用数据的基座应用ID关联存储至所述订阅关系表中。
7.如权利要求1所述的微前端系统,其特征在于,所述子应用数据携带有子应用私钥,所述基座应用数据携带有基座应用公钥;
所述目标基座应用模块具体用于,校验所述子应用私钥与所述基座应用公钥是否配对;
若所述子应用私钥与所述基座应用公钥配对,则接收并存储所述配置中心发送的所述子应用数据,并将所述基座应用数据发送至所述配置中心。
8.如权利要求1所述的微前端系统,其特征在于,所述配置中心还用于,将存储有所述子应用模块和所述目标基座应用模块订阅关系的订阅关系表同步保存到Redis缓存中。
9.如权利要求1所述的微前端系统,其特征在于,所述配置中心还用于搭建Websocket服务,且将所述基座应用模块作为所述Websocket服务的客户端。
10.如权利要求7所述的微前端系统,其特征在于,所述子应用私钥和所述基座应用公钥均是基于非对称加密算法得到,其中,所述子应用私钥与所述基座应用公钥基于所述目标基座应用模块与所述子应用模块之间的订阅关系分别配置到所述子应用模块中与所述目标基座应用模块中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110699350.1A CN113254050A (zh) | 2021-06-23 | 2021-06-23 | 一种微前端系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110699350.1A CN113254050A (zh) | 2021-06-23 | 2021-06-23 | 一种微前端系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113254050A true CN113254050A (zh) | 2021-08-13 |
Family
ID=77189365
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110699350.1A Pending CN113254050A (zh) | 2021-06-23 | 2021-06-23 | 一种微前端系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113254050A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114546436A (zh) * | 2021-12-20 | 2022-05-27 | 北京达佳互联信息技术有限公司 | 一种微前端服务更新方法、装置、电子设备及存储介质 |
CN115857891A (zh) * | 2022-11-17 | 2023-03-28 | 北京百度网讯科技有限公司 | 前端应用程序的生成方法、装置、电子设备和存储介质 |
US11778045B2 (en) | 2021-07-12 | 2023-10-03 | Red Hat, Inc. | Communication system for micro-frontends of a web application |
US12067429B2 (en) | 2022-03-18 | 2024-08-20 | Red Hat, Inc. | Synchronizing variable values between an application shell and micro-frontends of a web application |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111078204A (zh) * | 2019-12-25 | 2020-04-28 | 江苏共融科技有限公司 | 基于微前端架构的业务中台前端系统 |
CN111813434A (zh) * | 2020-07-01 | 2020-10-23 | 北京同创永益科技发展有限公司 | 一种基于微服务的前端开发系统及方法 |
CN112311869A (zh) * | 2020-10-28 | 2021-02-02 | 苏州万店掌网络科技有限公司 | 多类型微服务注册中心管理系统及方法 |
CN112416415A (zh) * | 2020-09-18 | 2021-02-26 | 山东英信计算机技术有限公司 | 一种前端微服务实现方法及相关组件 |
CN112988153A (zh) * | 2021-03-17 | 2021-06-18 | 薪得付信息技术(上海)有限公司 | 基于微前端的数据处理方法及框架 |
-
2021
- 2021-06-23 CN CN202110699350.1A patent/CN113254050A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111078204A (zh) * | 2019-12-25 | 2020-04-28 | 江苏共融科技有限公司 | 基于微前端架构的业务中台前端系统 |
CN111813434A (zh) * | 2020-07-01 | 2020-10-23 | 北京同创永益科技发展有限公司 | 一种基于微服务的前端开发系统及方法 |
CN112416415A (zh) * | 2020-09-18 | 2021-02-26 | 山东英信计算机技术有限公司 | 一种前端微服务实现方法及相关组件 |
CN112311869A (zh) * | 2020-10-28 | 2021-02-02 | 苏州万店掌网络科技有限公司 | 多类型微服务注册中心管理系统及方法 |
CN112988153A (zh) * | 2021-03-17 | 2021-06-18 | 薪得付信息技术(上海)有限公司 | 基于微前端的数据处理方法及框架 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11778045B2 (en) | 2021-07-12 | 2023-10-03 | Red Hat, Inc. | Communication system for micro-frontends of a web application |
CN114546436A (zh) * | 2021-12-20 | 2022-05-27 | 北京达佳互联信息技术有限公司 | 一种微前端服务更新方法、装置、电子设备及存储介质 |
US12067429B2 (en) | 2022-03-18 | 2024-08-20 | Red Hat, Inc. | Synchronizing variable values between an application shell and micro-frontends of a web application |
CN115857891A (zh) * | 2022-11-17 | 2023-03-28 | 北京百度网讯科技有限公司 | 前端应用程序的生成方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11258654B1 (en) | Parallel distributed network management | |
US11411897B2 (en) | Communication method and communication apparatus for message queue telemetry transport | |
CN109587228B (zh) | 一种公有协议物联网平台系统的设备接入方法 | |
CN113254050A (zh) | 一种微前端系统 | |
US10681127B2 (en) | File upload method and system | |
US8713177B2 (en) | Remote management of networked systems using secure modular platform | |
EP2835938B1 (en) | Message publishing and subscribing method and apparatus | |
WO2013046352A1 (ja) | 計算機システム、データ管理方法及びデータ管理プログラム | |
GB2588002A (en) | Security management for networked client devices using a distributed ledger service | |
CN108390950A (zh) | 一种消息推送方法、装置及设备 | |
EP4340333A1 (en) | Communication protocol conversion method, and device, system, and gateway device | |
EP2635980A1 (en) | Distributed database | |
CA2605366C (en) | Wireless gateway server | |
WO2015117362A1 (zh) | 终端上个人信息的共享方法及装置 | |
WO2024103943A1 (zh) | 一种业务处理方法、装置、存储介质及设备 | |
US20200382364A1 (en) | Systems and methods for peer-to-peer communications | |
CN112787906A (zh) | 一种基于云桌面平台的消息推送系统 | |
CN116095081A (zh) | 基于区块链系统的事件处理方法及装置、设备、介质 | |
CN115314512B (zh) | 一种海量终端数据同步方法及系统 | |
US20240054109A1 (en) | Dynamic file based publish-subscribe method and system | |
CN107147589B (zh) | 基于医院信息系统的节点服务器数据高速虚拟交换方法 | |
CN116367272A (zh) | 一种5g网元开放事件处理方法及装置 | |
JP3019774B2 (ja) | ネットワークシステムのリモート運用管理システム、リモート運用管理方法、およびリモート運用管理プログラムを記憶する媒体 | |
WO2024155365A1 (en) | Building automation system for smart edge management | |
US9860128B2 (en) | Automated command and discovery process for network communications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |