CN112597244B - 一种数据同步方法、装置及电子设备 - Google Patents
一种数据同步方法、装置及电子设备 Download PDFInfo
- Publication number
- CN112597244B CN112597244B CN202011539078.2A CN202011539078A CN112597244B CN 112597244 B CN112597244 B CN 112597244B CN 202011539078 A CN202011539078 A CN 202011539078A CN 112597244 B CN112597244 B CN 112597244B
- Authority
- CN
- China
- Prior art keywords
- data
- internationalized
- micro
- micro service
- client
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供了一种数据同步方法、装置及电子设备,运行有多个微服务的客户端预先设置的每一所述微服务对应的本地仓库中,至少存储有每一所述微服务使用的国际化资源,进而在微服务运行过程中,若微服务需要使用国际化资源,直接从本地仓库中获取所需的国际化资源即可。进一步的,客户端能够基于从所述微服务的配置文件中获取到的第一数据,以及从服务器获取到的第二数据,进行本地仓库存储的国际化资源的更新操作,保证客户端和服务器端存储的国际化资源的同步,且在客户端进行国际化资源的更新时,客户端比对的是国际化资源的版本信息,相比于直接比对国际化资源的内容的方式,简化了比对数据且操作简单。
Description
技术领域
本发明涉及分布式领域,更具体的说,涉及一种数据同步方法、装置及电子设备。
背景技术
国际化资源指的是软件系统内提示语、标签、按钮等面对不同语言的用户,提供的不同语言资源包。
对于单体部署软件,其使用的国际化资源是直接存储在单体部署软件的软件包中,在单体部署软件运行时,直接从软件包中获取国际化资源,并进行使用。
但是随着科学技术的发展,技术人员发现单体部署软件只要有修改,就得重新部署整个应用。为了解决这个问题,将一个单体部署软件构造为一组松散耦合的服务,每一服务称为微服务,多个微服务之间可以存在调用关系,那么如何为微服务提供国际化资源,这是本领域技术人员亟需解决的技术问题。
发明内容
有鉴于此,本发明提供一种数据同步方法、装置及电子设备,以解决亟需为微服务提供国际化资源的问题。
为解决上述技术问题,本发明采用了如下技术方案:
一种数据同步方法,应用于客户端,所述客户端运行有多个微服务,所述客户端预先设置的每一所述微服务对应的本地仓库中,至少存储有所述微服务使用的国际化资源;
所述微服务的数据同步方法,包括:
在当前时间为预设通信时间的情况下,从所述微服务的配置文件中获取到第一数据,以及从服务器获取到第二数据;所述第一数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的版本信息,所述第二数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的最新版本信息;所述服务器预先设置的中央仓库中,至少存储有各个微服务使用的国际化资源的最新版本信息;
比对所述第一数据以及所述第二数据,得到需进行更新的国际化资源;
从所述服务器获取到所述需进行更新的国际化资源的最新数据,并基于所述最新数据,对所述本地仓库中保存的所述需进行更新的国际化资源进行更新。
可选地,所述中央仓库中存储的数据的生成过程包括:
在所述微服务对应的应用实例启动的情况下,发送上载请求至所述服务器;
接收所述服务器在判断出所述上载请求满足预设上载条件的情况下发送的允许上载指令;
将所述微服务使用的国际化资源上传至所述服务器,以使所述服务器将所述微服务使用的国际化资源存储到所述中央仓库。
可选地,将所述微服务使用的国际化资源上传至所述服务器,包括:
对所述微服务使用的国际化资源的命名进行有效性校验,并在校验通过后,将所述微服务使用的国际化资源上传至所述服务器。
可选地,从服务器获取到第二数据,包括:
将所述第一数据发送至所述服务器;
接收所述服务器基于所述第一数据,查询所述中央仓库得到并发送的第二数据。
可选地,从所述服务器获取到所述需进行更新的国际化资源的最新数据,包括:
发送资源获取请求至所述服务器,所述资源获取请求包括所述需进行更新的国际化资源的版本信息;
接收所述服务器从所述中央仓库中查询并发送的所述需进行更新的国际化资源的最新数据。
一种数据同步方法,应用于服务器,所述服务器预先设置的中央仓库中,至少存储有各个微服务使用的国际化资源数据的最新版本信息;
所述数据同步方法包括:
在接收到客户端在当前时间为预设通信时间的情况下发送的第一数据的情况下,将所述中央仓库中的第二数据反馈给客户端,以使所述客户端对所述第一数据以及所述第二数据进行比对,得到需进行更新的国际化资源;所述第一数据包括从所述微服务的配置文件中获取到的,所述微服务和能够被所述微服务调用的微服务的国际化资源的版本信息,所述第二数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的最新版本信息;
在接收到客户端发送的资源获取请求的情况下,从所述中央仓库中查询并发送所述需进行更新的国际化资源的最新数据至所述客户端,以使所述客户端基于所述最新数据,对所述本地仓库中保存的所述需进行更新的国际化资源进行更新;所述资源获取请求包括所述需进行更新的国际化资源的版本信息。
可选地,所述中央仓库中存储的数据的生成过程包括:
接收所述客户端在所述客户端上的微服务对应的应用实例启动的情况下发送的上载请求;
判断所述上载请求是否满足预设上载条件,并在满足预设上载条件的情况下发送允许上载指令至所述客户端;
接收所述客户端上传的所述微服务使用的国际化资源,并将所述微服务使用的国际化资源存储到所述中央仓库。
可选地,还包括:
接收用户对所述中央仓库的操作指令;
响应所述操作指令,并执行与所述操作指令对应的操作。
一种数据同步装置,应用于客户端,所述客户端运行有多个微服务,所述客户端预先设置的每一所述微服务对应的本地仓库中,至少存储有所述微服务使用的国际化资源;
所述微服务的数据同步装置,包括:
数据获取模块,用于在当前时间为预设通信时间的情况下,从所述微服务的配置文件中获取到第一数据,以及从服务器获取到第二数据;所述第一数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的版本信息,所述第二数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的最新版本信息;所述服务器预先设置的中央仓库中,至少存储有各个微服务使用的国际化资源的最新版本信息;
比对模块,用于比对所述第一数据以及所述第二数据,得到需进行更新的国际化资源;
更新模块,用于从所述服务器获取到所述需进行更新的国际化资源的最新数据,并基于所述最新数据,对所述本地仓库中保存的所述需进行更新的国际化资源进行更新。
一种数据同步装置,应用于服务器,所述服务器预先设置的中央仓库中,至少存储有各个微服务使用的国际化资源数据的最新版本信息;
所述数据同步装置包括:
第一数据发送模块,用于在接收到客户端在当前时间为预设通信时间的情况下发送的第一数据的情况下,将所述中央仓库中的第二数据反馈给客户端,以使所述客户端对所述第一数据以及所述第二数据进行比对,得到需进行更新的国际化资源;所述第一数据包括从所述微服务的配置文件中获取到的,所述微服务和能够被所述微服务调用的微服务的国际化资源的版本信息,所述第二数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的最新版本信息;
第二数据发送模块,用于在接收到客户端发送的资源获取请求的情况下,从所述中央仓库中查询并发送所述需进行更新的国际化资源的最新数据至所述客户端,以使所述客户端基于所述最新数据,对所述本地仓库中保存的所述需进行更新的国际化资源进行更新;所述资源获取请求包括所述需进行更新的国际化资源的版本信息。
一种电子设备,所述电子设备运行有多个微服务,所述客户端预先设置的每一所述微服务对应的本地仓库中,至少存储有所述微服务使用的国际化资源,所述电子设备包括:存储器和处理器;
其中,所述存储器用于存储程序;
处理器调用程序并用于:
在当前时间为预设通信时间的情况下,从所述微服务的配置文件中获取到第一数据,以及从服务器获取到第二数据;所述第一数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的版本信息,所述第二数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的最新版本信息;所述服务器预先设置的中央仓库中,至少存储有各个微服务使用的国际化资源的最新版本信息;
比对所述第一数据以及所述第二数据,得到需进行更新的国际化资源;
从所述服务器获取到所述需进行更新的国际化资源的最新数据,并基于所述最新数据,对所述本地仓库中保存的所述需进行更新的国际化资源进行更新。
一种电子设备,所述电子设备预先设置的中央仓库中,至少存储有各个微服务使用的国际化资源数据的最新版本信息,所述电子设备包括:存储器和处理器;
其中,所述存储器用于存储程序;
处理器调用程序并用于:
在接收到客户端在当前时间为预设通信时间的情况下发送的第一数据的情况下,将所述中央仓库中的第二数据反馈给客户端,以使所述客户端对所述第一数据以及所述第二数据进行比对,得到需进行更新的国际化资源;所述第一数据包括从所述微服务的配置文件中获取到的,所述微服务和能够被所述微服务调用的微服务的国际化资源的版本信息,所述第二数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的最新版本信息;
在接收到客户端发送的资源获取请求的情况下,从所述中央仓库中查询并发送所述需进行更新的国际化资源的最新数据至所述客户端,以使所述客户端基于所述最新数据,对所述本地仓库中保存的所述需进行更新的国际化资源进行更新;所述资源获取请求包括所述需进行更新的国际化资源的版本信息。
相较于现有技术,本发明具有以下有益效果:
本发明提供了一种数据同步方法、装置及电子设备,运行有多个微服务的客户端预先设置的每一所述微服务对应的本地仓库中,至少存储有每一所述微服务使用的国际化资源,进而在微服务运行过程中,若微服务需要使用国际化资源,直接从本地仓库中获取所需的国际化资源即可。进一步的,客户端能够基于从所述微服务的配置文件中获取到的第一数据,以及从服务器获取到的第二数据,进行本地仓库存储的国际化资源的更新操作,保证客户端和服务器端存储的国际化资源的同步,且在客户端进行国际化资源的更新时,客户端比对的是国际化资源的版本信息,相比于直接比对国际化资源的内容的方式,简化了比对数据且操作简单。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例中提供的客户端和服务器通信的场景示意图;
图2为本发明实施例中提供的一种数据文件的目录结构的场景示意图;
图3为本发明实施例中提供的一种关系型数据库的目录结构的场景示意图;
图4为本发明实施例中提供的一种数据同步方法的方法流程图;
图5为本发明实施例中提供的另一种数据同步方法的方法流程图;
图6为本发明实施例中提供的一种应用于客户端的数据同步装置的结构示意图;
图7为本发明实施例中提供的一种应用于服务器的数据同步装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
将一个单体部署软件构造为一组松散耦合的服务,每一服务称为微服务,多个微服务之间可以存在调用关系,那么如何为微服务提供国际化资源,微服务在执行业务的过程中,如何获取到国际化资源,这是本领域技术人员亟需解决的技术问题。
发明人经过研究发现,在微服务架构下,为了实现国际化资源的调用,各个微服务将自己使用的国际化资源存储到一个共享的分布式缓存中,后续有微服务的调用时,如微服务A调用微服务B,则从分布式缓存中获取到微服务B使用的国际化资源。
但是上述这种方式,分布式缓存中的数据更新不及时,导致微服务在使用分布式缓存中的国际化资源时,使用到的国际化资源不是最新的,降低了国际化资源的准确度。另外,将分布式资源放在分布式缓存里,交互是有网络开销的,占用网络资源较多,尤其是交互频繁的时候。
为了解决上述的分布式缓存中的国际化资源更新不及时,以及使用国际化资源时,网络开销较大的问题,发明人经过研究发现,可以在微服务所在的本地设备上为每一微服务设置本地仓库,该本地仓库中,至少存储有所述微服务使用的国际化资源。微服务在使用国际化资源时,直接本地调用就行。此外,还在服务器上设置有中央仓库中,中央仓库中至少存储有各个微服务使用的国际化资源的最新版本信息。进而通过服务器与设置微服务的客户端交互,实现客户端上的国际化资源的及时更新。
更具体的,本发明实施例中,运行有多个微服务的客户端预先设置的每一所述微服务对应的本地仓库中,至少存储有每一所述微服务使用的国际化资源,进而在微服务运行过程中,若微服务需要使用国际化资源,直接从本地仓库中获取所需的国际化资源即可。进一步的,客户端能够基于从所述微服务的配置文件中获取到的第一数据,以及从服务器获取到的第二数据,进行本地仓库存储的国际化资源的更新操作,保证客户端和服务器端存储的国际化资源的同步,且在客户端进行国际化资源的更新时,客户端比对的是国际化资源的版本信息,相比于直接比对国际化资源的内容的方式,简化了比对数据且操作简单。
为了本领域技术人员能够更加清楚的了解客户端、本地仓库、服务端和中央仓库,现结合图1进行详细说明。
图1展示了一个基于容器化部署的微服务架构生态;服务器,如国际化服务的服务中心(i18n-server)和客户端(app-server)均以镜像的形式安装在容器组合pod中;服务间的注册与发现可以基于kubernates的域名解析也可以基于zookeeper或nacos等注册中心,这部分内容基于开源技术,本例中不做具体的描述;服务间的通信接口大致分为心跳(heartbeat)、数据通信(data)、索引查询(index)三种业务;客户端和服务端分别维护了国际化资源的本地仓库和中央仓库,本地仓库是二级缓存机制实现(缓存器cache1和cache2),中央仓库(i18n-senter storage)则采用了三级存储方案(数据文件file、数据仓库database和缓存器cache)。
分布式架构特别是微服务架构下,提供各服务维护本地国际化资源仓库的能力和上载国际化资源的能力;各服务在多实例的集群环境下同步国际化资源的能力;服务中心维护国际化资源的中央仓库。本地仓库通过心跳机制,具备了向中央仓库同步资源的能力,从而保证了数据一致性;本地仓库支持离线功能;心跳机制通过索引判断资源的更新,减少了远程通信的网络开销,保证响应速度;本地仓库和中央仓库分别支持多级存储方案。
本发明中的包含国际化服务中心软件包和对应开发语言的客户端SDK包,的具体内容如下:
微服务架构下的独立后台服务,前后端分离模式下的前端工程、以及原生开发模式下的手机APP工程,等有国际化需求的系统均可以被认为是国际化业务的客户端,在后续说明中均以国际化客户端代指。国际化服务向国际化客户端提供对应语言的SDK包;
SDK包向国际化客户端提供统一的规范约束、标准接口、解析国际化资源的能力,和国际化服务远程通信的能力,维护本地国际化资源仓库的能力。
SDK包通过和中心的心跳机制,实现版本实时更新的目的。
SDK包提供操作本地国际化资源的API。
SDK中设置有多个语言包,如中文语音包、英文语言包等等,语言包的版本在配置文件中定义,为强制必填项。
语言包可以定义模块名,在配置文件中设置,上载内容时,模块名会同时上载。
语言包的资源路径在配置文件中定义,资源目录下可以包含多个语言包文件。
语言包的命名有明确的定义,不符合命名规范的文件SDK不做解析。
语言包的命名规范为模块名-分隔符-语言-分隔符-国家(地区)-文件后缀;本例中SDK默认支持属性文件,后缀为.properties,分隔符为_,所以完整的文件名样例是module_zh_CN.properties、module_zh_HK.properties、module_en_US.properties等。
语言包文件里包含的内容是国际化资源的键值对,Code是国际化语言编码,Value是对应的本地化语言的内容;Code必须保证全局唯一,且需要满足强制命名规范;Value的内容默认转换成Unicode编码存储。
本发明中国际化资源的编码规范为三级字符串,语义分别是模块名.功能分类.业务码;例如系统异常的国际化编码,定义为系统模块、异常分类、通用系统异常:system.exception.system_internal_exception;又例如全局提交按钮的国际化编码,定义为系统模块、按钮分类、提交:system.button.submit。
SDK包在客户端本地维护了一个二级缓存机制的国际化资源仓库,其内容包含了基线文件+一级基线缓存+二级实时缓存+索引。
一级基线缓存的内容是基线文件的内容,一般不会修改;二级实时缓存的内容是服务中心的最新版本,会实时更新;每个模块维护一个唯一的索引,代表该模块的最新版本号。
两级缓存均为本地内存存储,保证读取和刷新的效率;缓存的数据结构是多维哈希表,原理是顺序存储+链表结构,并且通过锁的机制保证了高并发场景下的资源线程安全。
国际化业务发生后,SDK先通过Code从二级实时缓存查找Value,如果不存在,则从一级本地缓存查询,如果仍然不存在,则抛出特定的异常类型,由SDK做后续的异常处理。
二级缓存负责本地仓库的实时更新,而一级缓存则相对简单,它只负责维护本地国际化资源包的基线版本内容。
在服务进程启动的时候,SDK会启动一个独立的线程,去加载本地国际化资源包的基线文件。
加载完成内容后,将基线文件里的国际化资源键值对,组装成多维哈希表的数据结构,作为本地仓库的一级缓存。
一级缓存加载后不会再做变更,除非基线文件的版本变化。
国际化服务的服务中心的功能如下:
国际化服务中心维护一套国际化资源的中央仓库,用于存储国际化语言包;
中心仓库的服务器采用集群方案,数据存储采用数据文件file+数据仓库database+本地缓存器cache的机制。数据文件的目录结构如图2表示,数据文件可以保存在共享存储设备中。
其中,第一级目录为国际化资源根目录(I18N);
第二级固定分为两个目录,baseline为基线文件,custom为自定义目录;其中,基线目录保存SDK上载的基线数据文件,而自定义目录保存的是在服务中心后台集中维护的自定义数据内容,它可以是基于基线数据的修改,也可以是新增的国际化键值对。
第三级目录是保存各个时期的版本号;基线或自定义内容,每新增一个版本,即新建一个目录;这样的目录结构可以支持资源版本的更新和回退。
各个目录是各个服务的模块名,每个模块独立存放。对于每一模块,该模块中存储有模块内所有语言文件,按照不同语言和地区分文件保存,文件命名规则在上述中已有描述。
数据文件中存放的是国际化资源的键值对,具体内容在上述内容中已有描述。
数据文件保存的是完整版本的国际化资源数据;而数据仓库保存的则是每个模块最新版本数据,他是baseline+custom的完整集合。
数据仓库支持oracle、mysql等关系型数据库的存储,也支持MongoDB等文档型数据库存储,ORM层的交互和数据结构的解析由服务中心负责处理;
关系型数据库的存储的国际化资源,每一条记录为一个国际化键值对,具体结构如图3所示。
此外,服务中心还具有以下功能:
1、服务中心提供一套API,支持SDK客户端的基线数据上载。
2、国际化服务中心提供管理界面,支持基于excel文件的自定义数据批量上载,或者基于单个键值对的自定义修改。
3、国际化服务中心同时提供查询界面,实现国际化资源的搜索功能,支持国际化键、值的精确查询和模糊查询。
在上述内容的基础上,本发明实施例提供了一种数据同步方法,应用于客户端,所述客户端运行有多个微服务,所述客户端预先设置的每一所述微服务对应的本地仓库中,至少存储有所述微服务使用的国际化资源,此外,本地仓库中还可以设置有能够该微服务调用的微服务的国际化资源,各个国际化资源按照上述设定的方式进行存储。
参照图4,数据同步方法可以包括:
S11、客户端在当前时间为预设通信时间的情况下发送第一数据至服务器。
具体的,在客户端上设置有一个规定格式和内容的客户端配置文件,可以配置开启或关闭国际化功能;配置国际化资源包路径;配置本地国际化资源模块名;配置依赖的外部国际化资源模块列表;配置和服务中心通信的心跳时间等。
国际化客户端在进程启动时,微服务的SDK包会扫描国际化配置文件,确定功能开启后,才会启动资源同步任务线程和资源上载任务线程。
客户端主进程启动后,同时也会启动独立的线程,开始资源同步任务,资源同步任务负责本地仓库实时同步中央仓库的数据更新。
资源同步任务开启后,会先扫描本地的国际化配置信息,主要是获取国际化资源的版本信息(即上述的模块名)和心跳时间;心跳时间决定了资源同步的频率,在达到同步频率时,即认为当前时间为预设通信时间,在客户端发起资源同步请求时,模块名会作为参数传递给服务中心。本实施例中的心跳时间可以是客户端根据微服务集群的数量、服务器和网络的负载情况,业务场景需求,自行定义的。
具体的,客户端在同步数据之前,会先向服务中心发送资源同步请求,参数是模块名,如果依赖多个模块的国际化资源,则参数是模块名的集合;服务器收到请求后,将各个模块的最新模块名,即国际化资源的最新版本信息,返回给客户端。
在实际需求中,微服务的SDK包可能会更新,所以会导致配置文件中的国际化资源的版本信息发生改变。本实施例中,获取的国际化资源的版本信息包括两种,具体为微服务和能够被所述微服务调用的微服务的国际化资源的版本信息,本实施例中,将微服务和能够被所述微服务调用的微服务的国际化资源的版本信息,称为第一数据。
需要说明的是,客户端和服务器通信是采用心跳机制的,每隔固定时间客户端与服务器进行通信,客户端通过心跳机制保证二级缓存的实时更新,SDK会定时向服务中心发出心跳请求,请求参数包含第一数据。
S12、服务器发送中央仓库中的第二数据至客户端。
在实际应用中,服务器和客户端进行国际化资源的同步时,会分析需要同步的数据,本实施例中,并不直接对服务器和客户端保存的数据进行比对,而是比对的服务器和客户端包括的数据的版本信息,具体是指国际化资源的版本信息。
所以,在服务器接收到客户端发送的第一数据的情况下,会查询中央仓库,在实际应用中,所述服务器预先设置的中央仓库中,至少存储有各个微服务使用的国际化资源的最新版本信息,可以将微服务和能够被所述微服务调用的微服务的国际化资源的最新版本信息反馈至客户端,本实施例中将微服务和能够被所述微服务调用的微服务的国际化资源的最新版本信息称为第二数据。
此外,为了能够保证了解各个国际化资源的版本更新情况,中央仓库中可以各个微服务使用的国际化资源的各个版本信息,具体是从第一个版本开始的所有版本信息。
需要说明的是,服务器返回的微服务和能够被所述微服务调用的微服务的国际化资源的最新版本信息,可以称为国际化资源的索引值,索引值的内容基于哈希算法确定,每一国际化资源的最新版本信息为一串唯一的32位UUID(通用唯一识别码,UniversallyUnique Identifier),服务器返回的第二数据的格式为json格式。
另外,服务器中,国际化资源在某一模块发生变更后,会首先生成该模块新的版本号;基线版本号由SDK包上传,自定义版本号由系统自动生成,规则参考上一段落;同时生成对应的目录和文件;文件操作完成后,将变量值更新到数据仓库。
S13、比对所述第一数据以及所述第二数据,得到需进行更新的国际化资源。
具体的,直接比对第一数据中的微服务和能够被所述微服务调用的微服务的国际化资源的版本信息、与第二数据中的微服务和能够被所述微服务调用的微服务的国际化资源的最新版本信息是否一致,若不一致,则说明当前心跳周期内,国际化资源发生了变动,并确定出哪一国际化资源需要更新。若第二数据中的国际化资源的版本数据量多余第一数据中的国际化资源的版本信息的数据量,则代表该微服务使用了新的国际化资源,若一致,则代表中央仓库在心跳周期内没发生资源更新,等待下一次心跳。
S14、客户端发送资源获取请求至服务器。
所述资源获取请求包括所述需进行更新的国际化资源的版本信息。
客户端完成索引比对后,筛选出全新和发生更新的模块名,将这些模块名作为请求参数,向服务中心发起资源获取请求。索引的机制避免了直接将国际化资源的内容做比对来判断是否存在更新,保证了资源同步的处理速度和效率。
S15、服务器从所述中央仓库中查询所述需进行更新的国际化资源的最新数据。
S16、服务器发送所述需进行更新的国际化资源的最新数据至客户端。
具体的,服务器收到资源获取请求后,从中央仓库的缓存中,查到对应国际化资源的国际化资源哈希表,将数据结构转换成json格式的文本,再通过序列化的过程将数据流返回给客户端。本实施例中使用json格式的文本,相对于xml、csv等格式,json格式更轻量级,数据量更小,解析效率更高。
S17、客户端基于所述最新数据,对所述本地仓库中保存的所述需进行更新的国际化资源进行更新。
具体的,客户端拿到服务器返回的数据流后,将流数据反序列化成json格式的文本,再转换成本地仓库支持的多维哈希表结构,将本地仓库的二级缓存更新,更新内容按照模块名为单位,执行指针的重定向,将原有模块的哈希表从内存中擦除,完成本地仓库二级缓存的更新。
资源同步完成后,客户端将最新的模块名,也即索引值,更新到本地仓库中去,作为下一次心跳是否更新数据的判断条件。
本实施例中,资源同步任务的目的是,将本地依赖的国际化资源按照模块名列表从服务中心下载到本地仓库;依赖的模块名列表可以是本地模块,也可以是其他服务模块;同步的资源是最新版本的语言包,可能包含了各个模块的基线版本和国际化服务中心的自定义的增量包。
本实施例中,运行有多个微服务的客户端预先设置的每一所述微服务对应的本地仓库中,至少存储有每一所述微服务使用的国际化资源,进而在微服务运行过程中,若微服务需要使用国际化资源,直接从本地仓库中获取所需的国际化资源即可。进一步的,客户端能够基于从所述微服务的配置文件中获取到的第一数据,以及从服务器获取到的第二数据,进行本地仓库存储的国际化资源的更新操作,保证客户端和服务器端存储的国际化资源的同步,且在客户端进行国际化资源的更新时,客户端比对的是国际化资源的版本信息,相比于直接比对国际化资源的内容的方式,简化了比对数据且操作简单。
客户端除了能够实现与服务器的资源同步之后,还可以实现资源上载,资源上载任务的目的是将本地资源包作为语言包的基线版本,在向服务器申请并得到许可令牌后,向服务中心提交国际化语言包。
具体的,参照图2,可以包括:
S21、客户端检测微服务对应的应用实例启动;若是,则执行步骤S22。
在实际应用中,客户端运行有微服务的SDK包,且在配置文件中开启了国际化开关后,在服务进程启动时,即进入国际化资源上载的流程。
需要说明的是,资源上载任务线程仅在客户端上的SDK包第一次启动时执行,SDK包持续执行的过程中,仅执行资源同步任务线程。此时,客户端启动新的工作线程,即上述的资源上载任务线程,开始扫描本地的国际化配置文件,获取国际化资源目录和资源基线版本号两个必须的配置信息。完成配置加载工作后,客户端会对国际化资源目录做一次扫描,判断资源文件是否存在,如存在,则执行后续步骤,若不存在,则流程结束,退出当前线程;
需要说明的是,在分布式环境下,微服务通常是集群部署的,一个服务通常有多个应用实例,每一应用实例对应一客户端,为了不让每个实例的进程拉起时都去做上载操作,服务器在客户端开启资源上载任务线程时,会依据同一微服务是否已经启动了应用实例且已经进行或正在进行上载操作的判断结果,来确定是否让该应用实例进行上载操作。
S22、客户端发送上载请求至所述服务器。
该上载请求携带有微服务的服务名称。
S23、服务器判断所述上载请求是否满足预设上载条件;若满足,执行步骤S24。
具体的,服务器会判断该应用实例对应的微服务是否有其他应用实例已经向服务器申请了上载请求。其中,服务器若是允许客户端的上载请求,则会给客户端发送令牌,得到令牌的设备具有了资源上载权限。
需要说明的是,服务端对令牌的颁发,有条件控制,目的是为了避免服务集群部署的场景,多个实例重复上载的情况。具体的规则是已颁发令牌的模块不允许同时颁发第二块令牌;资源上载完成后,服务器得到客户端成功回执,会收回令牌;当前客户端申请上载的资源,版本低于中央仓库的版本,则不会颁发令牌;服务器对超时未归还的令牌会做强制回收。
本实施例中,预设上载条件是指:服务器未分配令牌给该微服务的任一应用实例、且还没有任一该微服务的应用实例执行过上载任务。
若是服务器判断出未分配令牌给该微服务的任一应用实例、且还没有任一该微服务的应用实例执行过上载任务,则确定出该上载请求满足预设上载条件。
本实施例中,增加一个令牌的机制,先拿到令牌的应用实例执行上载操作,其他应用实例跳过上载过程。
S24、服务器发送允许上载指令至客户端。
S25、客户端将所述微服务使用的国际化资源上传至所述服务器。
具体的,客户端得到令牌后,即代表获得了对所申请的模块的国际化资源版本更新的权限,可以将本地国际化资源的基线版本和内容,提交到服务器,服务器保存到中央仓库。
本发明的另一实现方式中,客户端会对所述微服务使用的国际化资源的命名进行有效性校验,并在校验通过后,将所述微服务使用的国际化资源上传至所述服务器。
具体的,客户端得到令牌后,首先对配置文件中指定的国际化资源目录做一次扫描,校验文件名的有效性,即确认文件名是否是模块名-分隔符-语言-分隔符-国家(地区)-文件后缀,若是,则有效,若不是,则无效。
校验完成后,客户端会对符合命名规范的文件,进行打包和压缩,打包格式为.zip,打包完成后的国际化资源,即语言包,客户端会请求服务中心的上载接口,连同版本号作为参数,一并向服务中心提交。
S26、服务器将所述微服务使用的国际化资源存储到所述中央仓库。
具体的,服务器收到语言包数据后,首先会根据提交的版本号,在中央仓库的文件存储目录下,新建目录;目录结构参考图2,创建过程如下,在baseline目录下,以提交的版本号为名称,创建目录;然后在版本目录下一级,以提交的模块名为名称,创建目录;两级目录创建完成后,将上载的语言包里的文件解压到模块目录下;中央仓库对国际化文件再做一次校验,对不符合命名规范的文件做删除操作。
以上步骤完成后,可视为文件存储处理完成。接着中央仓库会对新上传的文件做一次遍历,将国际化资源的内容,做一次结构转换,然后批量导入到数据仓库中;数据仓库支持不同的存储以满足数据量和复杂检索的不同需求,例如关系型数据库oracle、mysql、sqlserver或者文档型数据库MongoDB等。
关系型数据库的主表结构参考图3。ID是唯一主键,不具备业务含义;i18n-key是国际化编码,全局唯一;i18n-value和i18n-key1:1对应,是翻译后的业务文本;langu-code是语言编码,关联语言表的一条语言数据;module-code是模块编码,也即模块名,关联模块表的一条模块数据;module-version-code是模块版本号。
数据仓库导入完成后,中央仓库会执行缓存刷新操作;缓存的数据结构,与客户端完全一致,是一个多维的哈希表;中央仓库在数据库层之上再建一层缓存,目的比较明确,即为了大量服务在同步最新国际化数据的时候,能够直接从缓存中得到并返回数据,避免大量数据库io,避免不必要的数据结构转换,减少大量的服务器运算开销。
缓存刷新完成后,中央仓库即完成了国际化数据的更新流程,接下来中央仓库会生成一串索引值,索引的一次更新在业务上代表国际化资源的一次更新,索引算法在上述已说明,索引值保证全局唯一。
中央仓库将数据文件-数据仓库-缓存-索引的更新作为一个完整的事物,如果其中某一步发生了异常,事物会做整体的回滚,即索引回退至上个版本-缓存回退至上个版本-数据仓库基于数据库事物的回滚-数据文件删除。
上述步骤结束后,无论结果成功或者失败,中央仓库会返回对应的结果。如果数据上载成功,中央仓库会返回成功结果和最新的索引值;如果出现异常情况,中央仓库会返回异常响应码;如果版本已存在,中央仓库会返回已存在的响应码,告诉客户端无需再做上载操作;调用返回后,中央仓库会回收对应模块的令牌。
调用结束后,客户端会根据服务中心的响应码,做对应的处理;结果是成功或版本已存在或其他非异常类的失败通知,客户端判断流程结束,终止当前线程;如返回异常情况,客户端会重新发起令牌申请的操作,重复后续流程。
本实施例中,客户端会使用国际化资源上载的流程上传国际化资源,使得服务器能够及时存储客户的数据。
本发明的另一实现方式中,服务器还能够接收用户对所述中央仓库的操作指令,响应所述操作指令,并执行与所述操作指令对应的操作。
具体的,服务器,即国际化服务中心,提供了集中管理和维护所有模块国际化资源的能力;除了客户端上载的基线版本之外,服务中心提供了UI界面,支持管理员手动对中央仓库的国际化资源做定制化的修改,这种修改被视为基线版本之外的自定义功能;中心提供了逐条键值对修改的功能,或excel文件批量修改数据的功能。
在实际应用中,管理员用户登录服务器,即国际化服务中心后,进入查询界面,界面支持展示、搜索、新增、编辑和导入功能;选择编辑或新增,可以修改或创建国际化编码和翻译的文本,系统对编码规则会做合法性校验;选择导入功能,可以将excel文件内的国际化资源上传到中央仓库,具体格式不做详细描述。
中央仓库对涉及新增、编辑、批量导入的国际化资源,首先会在文件存储的custom目录下,创建一个新的版本目录,版本号为索引值;接着在目录以资源变更的模块名创建目录;最后创建对应的语言文件,如新增了一条中文简体数据,则创建名为module_zh_CN.properties的文件;将有更新的内容写入到对应的文件中,以上步骤,完成了数据文件的创建。
数据文件创建完成后,对数据库中的相关数据做同步修改,保证数据库中的内容是基线数据和自定义数据的最新合集。
数据库更新完成后,将中央仓库的缓存中的数据结构做同步刷新,具体操作方法参考上述相应部分。
资源更新完成后,刷新中央仓库的索引值,保证索引值和数据文件三级目录的版本号一致,作为客户端是否更新资源的判断条件。
最后对客户端的国际化业务处理做简单的介绍。客户端在集成了国际化SDK后,即具备了和国际化服务中心同步资源的能力,并且具备了在客户端维护国际化资源本地仓库的能力;客户端在发生请求时,首先确定当前请求的语言环境,如果是http请求,可以从header拿到当前请求的Locale信息,里面包含了语言和国家(地区)信息;拿到语言环境后,客户端会根据业务数据中的国际化编码和语言环境,从本地仓库中找到对应的翻译后的文本,并返回给业务线程;国际化方法调用,可以是SDK内置的拦截器触发,比如异常拦截器、校验拦截器,也可以是客户端的业务代码,通过函数调用的方式手动触发。
本实施例中,服务器支持展示、搜索、新增、编辑和导入功能,满足不同用户需求。
可选地,在上述数据同步方法的实施例的基础上,本发明的另一实施例提供了一种数据同步方法,应用于客户端,所述客户端运行有多个微服务,所述客户端预先设置的每一所述微服务对应的本地仓库中,至少存储有所述微服务使用的国际化资源;
所述微服务的数据同步方法,包括:
在当前时间为预设通信时间的情况下,从所述微服务的配置文件中获取到第一数据,以及从服务器获取到第二数据;所述第一数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的版本信息,所述第二数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的最新版本信息;所述服务器预先设置的中央仓库中,至少存储有各个微服务使用的国际化资源的最新版本信息;
比对所述第一数据以及所述第二数据,得到需进行更新的国际化资源;
从所述服务器获取到所述需进行更新的国际化资源的最新数据,并基于所述最新数据,对所述本地仓库中保存的所述需进行更新的国际化资源进行更新。
进一步,所述中央仓库中存储的数据的生成过程包括:
在所述微服务对应的应用实例启动的情况下,发送上载请求至所述服务器;
接收所述服务器在判断出所述上载请求满足预设上载条件的情况下发送的允许上载指令;
将所述微服务使用的国际化资源上传至所述服务器,以使所述服务器将所述微服务使用的国际化资源存储到所述中央仓库。
进一步,将所述微服务使用的国际化资源上传至所述服务器,包括:
对所述微服务使用的国际化资源的命名进行有效性校验,并在校验通过后,将所述微服务使用的国际化资源上传至所述服务器。
进一步,从服务器获取到第二数据,包括:
将所述第一数据发送至所述服务器;
接收所述服务器基于所述第一数据,查询所述中央仓库得到并发送的第二数据。
进一步,从所述服务器获取到所述需进行更新的国际化资源的最新数据,包括:
发送资源获取请求至所述服务器,所述资源获取请求包括所述需进行更新的国际化资源的版本信息;
接收所述服务器从所述中央仓库中查询并发送的所述需进行更新的国际化资源的最新数据。
可选地,在上述数据同步方法的实施例的基础上,本发明的另一实施例提供了一种数据同步方法,应用于服务器,所述服务器预先设置的中央仓库中,至少存储有各个微服务使用的国际化资源数据的最新版本信息;
所述数据同步方法包括:
在接收到客户端在当前时间为预设通信时间的情况下发送的第一数据的情况下,将所述中央仓库中的第二数据反馈给客户端,以使所述客户端对所述第一数据以及所述第二数据进行比对,得到需进行更新的国际化资源;所述第一数据包括从所述微服务的配置文件中获取到的,所述微服务和能够被所述微服务调用的微服务的国际化资源的版本信息,所述第二数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的最新版本信息;
在接收到客户端发送的资源获取请求的情况下,从所述中央仓库中查询并发送所述需进行更新的国际化资源的最新数据至所述客户端,以使所述客户端基于所述最新数据,对所述本地仓库中保存的所述需进行更新的国际化资源进行更新;所述资源获取请求包括所述需进行更新的国际化资源的版本信息。
进一步,所述中央仓库中存储的数据的生成过程包括:
接收所述客户端在所述客户端上的微服务对应的应用实例启动的情况下发送的上载请求;
判断所述上载请求是否满足预设上载条件,并在满足预设上载条件的情况下发送允许上载指令至所述客户端;
接收所述客户端上传的所述微服务使用的国际化资源,并将所述微服务使用的国际化资源存储到所述中央仓库。
进一步,还包括:
接收用户对所述中央仓库的操作指令;
响应所述操作指令,并执行与所述操作指令对应的操作。
本实施例中,运行有多个微服务的客户端预先设置的每一所述微服务对应的本地仓库中,至少存储有每一所述微服务使用的国际化资源,进而在微服务运行过程中,若微服务需要使用国际化资源,直接从本地仓库中获取所需的国际化资源即可。进一步的,客户端能够基于从所述微服务的配置文件中获取到的第一数据,以及从服务器获取到的第二数据,进行本地仓库存储的国际化资源的更新操作,保证客户端和服务器端存储的国际化资源的同步,且在客户端进行国际化资源的更新时,客户端比对的是国际化资源的版本信息,相比于直接比对国际化资源的内容的方式,简化了比对数据且操作简单。
可选地,在上述应用于客户端的数据同步方法的实施例的基础上,本发明的另一实施例提供了一种数据同步装置,应用于客户端,所述客户端运行有多个微服务,所述客户端预先设置的每一所述微服务对应的本地仓库中,至少存储有所述微服务使用的国际化资源;
参照图6,所述微服务的数据同步装置,包括:
数据获取模块11,用于在当前时间为预设通信时间的情况下,从所述微服务的配置文件中获取到第一数据,以及从服务器获取到第二数据;所述第一数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的版本信息,所述第二数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的最新版本信息;所述服务器预先设置的中央仓库中,至少存储有各个微服务使用的国际化资源的最新版本信息;
比对模块12,用于比对所述第一数据以及所述第二数据,得到需进行更新的国际化资源;
更新模块13,用于从所述服务器获取到所述需进行更新的国际化资源的最新数据,并基于所述最新数据,对所述本地仓库中保存的所述需进行更新的国际化资源进行更新。
进一步,还包括:
请求发送模块,用于在所述微服务对应的应用实例启动的情况下,发送上载请求至所述服务器;
指令接收模块,用于接收所述服务器在判断出所述上载请求满足预设上载条件的情况下发送的允许上载指令;
资源上传模块,用于将所述微服务使用的国际化资源上传至所述服务器,以使所述服务器将所述微服务使用的国际化资源存储到所述中央仓库。
进一步,资源上传模块具体用于:
对所述微服务使用的国际化资源的命名进行有效性校验,并在校验通过后,将所述微服务使用的国际化资源上传至所述服务器。
进一步,数据获取模块11用于从服务器获取到第二数据时,具体用于:
将所述第一数据发送至所述服务器,接收所述服务器基于所述第一数据,查询所述中央仓库得到并发送的第二数据。
进一步,更新模块13用于从所述服务器获取到所述需进行更新的国际化资源的最新数据时,具体用于:
发送资源获取请求至所述服务器,所述资源获取请求包括所述需进行更新的国际化资源的版本信息,接收所述服务器从所述中央仓库中查询并发送的所述需进行更新的国际化资源的最新数据。
本实施例中,本地仓库中,至少存储有每一所述微服务使用的国际化资源,进而在微服务运行过程中,若微服务需要使用国际化资源,直接从本地仓库中获取所需的国际化资源即可。进一步的,客户端能够基于从所述微服务的配置文件中获取到的第一数据,以及从服务器获取到的第二数据,进行本地仓库存储的国际化资源的更新操作,保证客户端和服务器端存储的国际化资源的同步,且在客户端进行国际化资源的更新时,客户端比对的是国际化资源的版本信息,相比于直接比对国际化资源的内容的方式,简化了比对数据且操作简单。
需要说明的是,本实施例中的各个模块的工作过程,请参照上述实施例中的相应说明,在此不再赘述。
可选地,在上述应用于服务器的数据同步方法的实施例的基础上,本发明的另一实施例提供了一种数据同步装置,应用于服务器,所述服务器预先设置的中央仓库中,至少存储有各个微服务使用的国际化资源数据的最新版本信息;
参照图7,所述数据同步装置包括:
第一数据发送模块21,用于在接收到客户端在当前时间为预设通信时间的情况下发送的第一数据的情况下,将所述中央仓库中的第二数据反馈给客户端,以使所述客户端对所述第一数据以及所述第二数据进行比对,得到需进行更新的国际化资源;所述第一数据包括从所述微服务的配置文件中获取到的,所述微服务和能够被所述微服务调用的微服务的国际化资源的版本信息,所述第二数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的最新版本信息;
第二数据发送模块22,用于在接收到客户端发送的资源获取请求的情况下,从所述中央仓库中查询并发送所述需进行更新的国际化资源的最新数据至所述客户端,以使所述客户端基于所述最新数据,对所述本地仓库中保存的所述需进行更新的国际化资源进行更新;所述资源获取请求包括所述需进行更新的国际化资源的版本信息。
进一步,还包括:
请求接收模块,用于接收所述客户端在所述客户端上的微服务对应的应用实例启动的情况下发送的上载请求;
判断模块,用于判断所述上载请求是否满足预设上载条件,并在满足预设上载条件的情况下发送允许上载指令至所述客户端;
数据接收模块,用于接收所述客户端上传的所述微服务使用的国际化资源,并将所述微服务使用的国际化资源存储到所述中央仓库。
进一步,还包括:
指令响应模块,用于接收用户对所述中央仓库的操作指令,响应所述操作指令,并执行与所述操作指令对应的操作。
本实施例中,本地仓库中,至少存储有每一所述微服务使用的国际化资源,进而在微服务运行过程中,若微服务需要使用国际化资源,直接从本地仓库中获取所需的国际化资源即可。进一步的,客户端能够基于从所述微服务的配置文件中获取到的第一数据,以及从服务器获取到的第二数据,进行本地仓库存储的国际化资源的更新操作,保证客户端和服务器端存储的国际化资源的同步,且在客户端进行国际化资源的更新时,客户端比对的是国际化资源的版本信息,相比于直接比对国际化资源的内容的方式,简化了比对数据且操作简单。
需要说明的是,本实施例中的各个模块的工作过程,请参照上述实施例中的相应说明,在此不再赘述。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (11)
1.一种数据同步方法,其特征在于,应用于客户端,所述客户端运行有多个微服务,所述客户端预先设置的每一所述微服务对应的本地仓库中,存储有所述微服务使用的国际化资源以及所述微服务调用的微服务的国际化资源;所述本地仓库采用二级缓存机制实现;
所述微服务的数据同步方法,包括:
在当前时间为预设通信时间的情况下,从所述微服务的配置文件中获取到第一数据,以及从服务器获取到第二数据;所述第一数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的版本信息,所述第二数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的最新版本信息;所述服务器预先设置的中央仓库中,至少存储有各个微服务使用的国际化资源的最新版本信息;
比对所述第一数据以及所述第二数据,得到需进行更新的国际化资源;
从所述服务器获取到所述需进行更新的国际化资源的最新数据,并基于所述最新数据,对所述本地仓库中保存的所述需进行更新的国际化资源进行更新;
其中,从所述服务器获取到所述需进行更新的国际化资源的最新数据,包括:
发送资源获取请求至所述服务器,所述资源获取请求包括所述需进行更新的国际化资源的版本信息;
接收所述服务器从所述中央仓库中查询并发送的所述需进行更新的国际化资源的最新数据。
2.根据权利要求1所述的数据同步方法,其特征在于,所述中央仓库中存储的数据的生成过程包括:
在所述微服务对应的应用实例启动的情况下,发送上载请求至所述服务器;
接收所述服务器在判断出所述上载请求满足预设上载条件的情况下发送的允许上载指令;
将所述微服务使用的国际化资源上传至所述服务器,以使所述服务器将所述微服务使用的国际化资源存储到所述中央仓库。
3.根据权利要求2所述的数据同步方法,其特征在于,将所述微服务使用的国际化资源上传至所述服务器,包括:
对所述微服务使用的国际化资源的命名进行有效性校验,并在校验通过后,将所述微服务使用的国际化资源上传至所述服务器。
4.根据权利要求1所述的数据同步方法,其特征在于,从服务器获取到第二数据,包括:
将所述第一数据发送至所述服务器;
接收所述服务器基于所述第一数据,查询所述中央仓库得到并发送的第二数据。
5.一种数据同步方法,其特征在于,应用于服务器,所述服务器预先设置的中央仓库中,至少存储有各个微服务使用的国际化资源数据的最新版本信息;
所述数据同步方法包括:
在接收到客户端在当前时间为预设通信时间的情况下发送的第一数据的情况下,将所述中央仓库中的第二数据反馈给客户端,以使所述客户端对所述第一数据以及所述第二数据进行比对,得到需进行更新的国际化资源;所述第一数据包括从所述微服务的配置文件中获取到的,所述微服务和能够被所述微服务调用的微服务的国际化资源的版本信息,所述第二数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的最新版本信息;
在接收到客户端发送的资源获取请求的情况下,从所述中央仓库中查询并发送所述需进行更新的国际化资源的最新数据至所述客户端,以使所述客户端基于所述最新数据,对本地仓库中保存的所述需进行更新的国际化资源进行更新;所述资源获取请求包括所述需进行更新的国际化资源的版本信息;其中,所述本地仓库采用二级缓存机制实现,所述本地仓库中存储有所述微服务使用的国际化资源以及所述微服务调用的微服务的国际化资源。
6.根据权利要求5所述的数据同步方法,其特征在于,所述中央仓库中存储的数据的生成过程包括:
接收所述客户端在所述客户端上的微服务对应的应用实例启动的情况下发送的上载请求;
判断所述上载请求是否满足预设上载条件,并在满足预设上载条件的情况下发送允许上载指令至所述客户端;
接收所述客户端上传的所述微服务使用的国际化资源,并将所述微服务使用的国际化资源存储到所述中央仓库。
7.根据权利要求5所述的数据同步方法,其特征在于,还包括:
接收用户对所述中央仓库的操作指令;
响应所述操作指令,并执行与所述操作指令对应的操作。
8.一种数据同步装置,其特征在于,应用于客户端,所述客户端运行有多个微服务,所述客户端预先设置的每一所述微服务对应的本地仓库中,存储有所述微服务使用的国际化资源以及所述微服务调用的微服务的国际化资源;所述本地仓库采用二级缓存机制实现;
所述微服务的数据同步装置,包括:
数据获取模块,用于在当前时间为预设通信时间的情况下,从所述微服务的配置文件中获取到第一数据,以及从服务器获取到第二数据;所述第一数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的版本信息,所述第二数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的最新版本信息;所述服务器预先设置的中央仓库中,至少存储有各个微服务使用的国际化资源的最新版本信息;
比对模块,用于比对所述第一数据以及所述第二数据,得到需进行更新的国际化资源;
更新模块,用于从所述服务器获取到所述需进行更新的国际化资源的最新数据,并基于所述最新数据,对所述本地仓库中保存的所述需进行更新的国际化资源进行更新;
其中,从所述服务器获取到所述需进行更新的国际化资源的最新数据,包括:
发送资源获取请求至所述服务器,所述资源获取请求包括所述需进行更新的国际化资源的版本信息;
接收所述服务器从所述中央仓库中查询并发送的所述需进行更新的国际化资源的最新数据。
9.一种数据同步装置,其特征在于,应用于服务器,所述服务器预先设置的中央仓库中,至少存储有各个微服务使用的国际化资源数据的最新版本信息;
所述数据同步装置包括:
第一数据发送模块,用于在接收到客户端在当前时间为预设通信时间的情况下发送的第一数据的情况下,将所述中央仓库中的第二数据反馈给客户端,以使所述客户端对所述第一数据以及所述第二数据进行比对,得到需进行更新的国际化资源;所述第一数据包括从所述微服务的配置文件中获取到的,所述微服务和能够被所述微服务调用的微服务的国际化资源的版本信息,所述第二数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的最新版本信息;
第二数据发送模块,用于在接收到客户端发送的资源获取请求的情况下,从所述中央仓库中查询并发送所述需进行更新的国际化资源的最新数据至所述客户端,以使所述客户端基于所述最新数据,对本地仓库中保存的所述需进行更新的国际化资源进行更新;所述资源获取请求包括所述需进行更新的国际化资源的版本信息;其中,所述本地仓库采用二级缓存机制实现,所述本地仓库中存储有所述微服务使用的国际化资源以及所述微服务调用的微服务的国际化资源。
10.一种电子设备,其特征在于,所述电子设备运行有多个微服务,所述电子设备预先设置的每一所述微服务对应的本地仓库中,存储有所述微服务使用的国际化资源以及所述微服务调用的微服务的国际化资源;所述本地仓库采用二级缓存机制实现;所述电子设备包括:存储器和处理器;
其中,所述存储器用于存储程序;
处理器调用程序并用于:
在当前时间为预设通信时间的情况下,从所述微服务的配置文件中获取到第一数据,以及从服务器获取到第二数据;所述第一数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的版本信息,所述第二数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的最新版本信息;所述服务器预先设置的中央仓库中,至少存储有各个微服务使用的国际化资源的最新版本信息;
比对所述第一数据以及所述第二数据,得到需进行更新的国际化资源;
从所述服务器获取到所述需进行更新的国际化资源的最新数据,并基于所述最新数据,对所述本地仓库中保存的所述需进行更新的国际化资源进行更新;
其中,从所述服务器获取到所述需进行更新的国际化资源的最新数据,包括:
发送资源获取请求至所述服务器,所述资源获取请求包括所述需进行更新的国际化资源的版本信息;
接收所述服务器从所述中央仓库中查询并发送的所述需进行更新的国际化资源的最新数据。
11.一种电子设备,其特征在于,所述电子设备预先设置的中央仓库中,至少存储有各个微服务使用的国际化资源数据的最新版本信息,所述电子设备包括:存储器和处理器;
其中,所述存储器用于存储程序;
处理器调用程序并用于:
在接收到客户端在当前时间为预设通信时间的情况下发送的第一数据的情况下,将所述中央仓库中的第二数据反馈给客户端,以使所述客户端对所述第一数据以及所述第二数据进行比对,得到需进行更新的国际化资源;所述第一数据包括从所述微服务的配置文件中获取到的,所述微服务和能够被所述微服务调用的微服务的国际化资源的版本信息,所述第二数据包括所述微服务和能够被所述微服务调用的微服务的国际化资源的最新版本信息;
在接收到客户端发送的资源获取请求的情况下,从所述中央仓库中查询并发送所述需进行更新的国际化资源的最新数据至所述客户端,以使所述客户端基于所述最新数据,对本地仓库中保存的所述需进行更新的国际化资源进行更新;所述资源获取请求包括所述需进行更新的国际化资源的版本信息;其中,所述本地仓库采用二级缓存机制实现,所述本地仓库中存储有所述微服务使用的国际化资源以及所述微服务调用的微服务的国际化资源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011539078.2A CN112597244B (zh) | 2020-12-23 | 2020-12-23 | 一种数据同步方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011539078.2A CN112597244B (zh) | 2020-12-23 | 2020-12-23 | 一种数据同步方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112597244A CN112597244A (zh) | 2021-04-02 |
CN112597244B true CN112597244B (zh) | 2023-05-16 |
Family
ID=75200492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011539078.2A Active CN112597244B (zh) | 2020-12-23 | 2020-12-23 | 一种数据同步方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112597244B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113656366B (zh) * | 2021-08-03 | 2024-05-03 | 北京数码大方科技股份有限公司 | 电子仓库的数据处理方法和装置 |
CN114020321B (zh) * | 2021-11-09 | 2023-08-18 | 江苏点石乐投科技有限公司 | 一种基于用户行为数据的智能应用界面制定系统和方法 |
CN116302210B (zh) * | 2023-05-17 | 2023-08-04 | 阿里云计算有限公司 | 一种镜像文件的导入方法、装置、电子设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003096669A2 (en) * | 2002-05-10 | 2003-11-20 | Reisman Richard R | Method and apparatus for browsing using multiple coordinated device |
CN100561384C (zh) * | 2008-01-03 | 2009-11-18 | 浙江中控技术股份有限公司 | 控制系统组态的增量式在线下载方法 |
CN101944117B (zh) * | 2010-09-20 | 2013-04-24 | 宇龙计算机通信科技(深圳)有限公司 | 基于数据库的排序和检索方法和系统 |
CN106648582B (zh) * | 2016-09-19 | 2020-01-31 | 浪潮通用软件有限公司 | 一种国际化同名资源文件部署更新的实现方法 |
CN108304207A (zh) * | 2018-03-01 | 2018-07-20 | 上海找钢网信息科技股份有限公司 | 混合app应用程序的资源更新方法及系统 |
-
2020
- 2020-12-23 CN CN202011539078.2A patent/CN112597244B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112597244A (zh) | 2021-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112597244B (zh) | 一种数据同步方法、装置及电子设备 | |
US7720931B2 (en) | System and method of remotely managing and loading artifacts | |
US8290908B2 (en) | Synchronization server process | |
US7565381B2 (en) | Smart synchronization using created manifest | |
US7269664B2 (en) | Network portal system and methods | |
US8316293B2 (en) | System and method for rendering presentation pages based on locality | |
US7177865B2 (en) | Data synchronization method and system | |
US7761559B2 (en) | System and method of remotely managing and loading artifacts | |
CN112083951B (zh) | 一种支持多操作系统平台的软件包统一管理方法及系统 | |
CN112434059B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
US8326913B2 (en) | Method and system for service contract discovery | |
US10102212B2 (en) | Remote artifact repository | |
CN1818902A (zh) | 使用设备数据模式同步服务器和设备数据 | |
Wu et al. | Tango: a flexible mobility-enabled architecture for online and offline mobile enterprise applications | |
US20070174697A1 (en) | Generic, WSRF-compliant checkpointing for WS-Resources | |
US8001216B2 (en) | System and method for a web service portlet registry | |
US20030115243A1 (en) | Distributed process execution system and method | |
US20070006016A1 (en) | System and method for publishing to a web service portlet registry | |
CN111124542A (zh) | 一种配置信息管理系统 | |
US9058622B2 (en) | Wireless email communications system providing resource update tracking features and related methods | |
US11522943B1 (en) | System and method for deferring data retrieval | |
CN117956036A (zh) | 业务访问方法、装置、电子设备及存储介质 | |
CN114553891A (zh) | 同步请求转异步处理的方法、系统、终端设备及存储介质 | |
CN115237388A (zh) | 接口转译方法、同步方法、装置、系统、介质和设备 | |
CN115794083A (zh) | 一种工业互联网web应用开发方法、系统及装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |