CN113691616A - 一种基于长轮询的微服务同步方法、装置及存储介质 - Google Patents
一种基于长轮询的微服务同步方法、装置及存储介质 Download PDFInfo
- Publication number
- CN113691616A CN113691616A CN202110968366.8A CN202110968366A CN113691616A CN 113691616 A CN113691616 A CN 113691616A CN 202110968366 A CN202110968366 A CN 202110968366A CN 113691616 A CN113691616 A CN 113691616A
- Authority
- CN
- China
- Prior art keywords
- service
- micro
- query
- polling
- version number
- 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
- 238000000034 method Methods 0.000 title claims abstract description 42
- 230000004044 response Effects 0.000 claims abstract description 24
- 230000001360 synchronised effect Effects 0.000 claims abstract description 17
- 230000000977 initiatory effect Effects 0.000 claims abstract description 5
- 238000004590 computer program Methods 0.000 claims description 11
- 230000008859 change Effects 0.000 claims description 10
- 238000012544 monitoring process Methods 0.000 claims description 5
- 230000002596 correlated effect Effects 0.000 claims 1
- 238000004891 communication Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 239000003999 initiator Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 239000008280 blood Substances 0.000 description 1
- 210000004369 blood Anatomy 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/143—Termination or inactivation of sessions, e.g. event-controlled end of session
- H04L67/145—Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
Abstract
本发明涉及一种基于长轮询的微服务同步方法、装置及存储介质,该方法包括:查询端发起同步请求;业务端发现同步请求后判断是否返回应答报文,若是则返回应答报文,否则保留连接,直到查询端主动断开;查询端获取到应答报文后,更新本地微服务,发起下一次的同步请求。与现有技术相比,本发明具有时效性好、可用性强等优点。
Description
技术领域
本发明涉及一种数据同步方法,尤其是涉及一种基于长轮询的微服务同步方法、装置及存储介质。
背景技术
目前在领域驱动设计下,确定非失血模型的实体或值对象时,通常非同一聚合根的实体之间在拆分时会拆分为多个不同的独立服务,通信时通常会采用同库不同表的方案,但对于体量较大需要分库的场景下则需要建立通信方式交换数据,同时,在需要考虑实时通信的场景下,通常会采用接口实时调用的方式进行数据获取。
尤其针对于查询的场景,实际情况中经常会对多个表进行关联,进行查询后组装的方式统一展示,在领域驱动分库分表的微服务体系下,需要展示时无法避免多次调取多个系统接口的场景,查询端的请求只能被迫控制频率,尤其是在下游服务没有背压体系的情况下,更是容易导致下游服务无法消费而导致大面积宕机。
针对这种场景,目前常见的做法是采用命令查询职责分离(CQRS)架构体系,CQRS从架构上把CRUD系统拆分为两部分:命令(Command)处理和查询(Query)处理,CQRS增加一个Q端(查询端),针对查询场景,实时获取数据变动后产生一张专门针对某一个查询场景的数据展示表,查询时不需要涉及真正的数据存储端,既可以增加展示效率,同时降低了数据存储端的服务稳定性。
但同时也会产生一个问题,就是数据同步的方式,常见方式有如非同步的定时同步方式,同步推送的接口方式,基于消息总线的消息通知机制等等。当使用场景为业务用户需要实时获取结果时,非同步方式则无法满足;同步推送方式依赖业务端请求查询端推送数据变动,当查询端过多时,在数据变动时会导致业务端执行效率低下;基于消息总线的消息通知机制可以很好的降低业务端的压力,但是需要额外的消息总线做承载。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于长轮询的微服务同步方法、装置及存储介质。
本发明的目的可以通过以下技术方案来实现:
一种基于长轮询的微服务同步方法,该方法包括:
查询端发起同步请求;
业务端发现同步请求后判断是否返回应答报文,若是则返回应答报文,否则保留连接,直到查询端主动断开;
查询端获取到应答报文后,更新本地微服务,发起下一次的同步请求。
优选地,所述的同步请求中包括查询端微服务的当前版本号。
优选地,业务端发现同步请求后判断是否返回应答报文的方式包括:
将同步请求中查询端微服务的当前版本号与业务端数据库中微服务的版本号进行比对,若两者不一致则返回应答报文,若两者一致则保留连接。
优选地,查询端和业务端保留连接期间,业务端轮询监控本地数据字段的变化。
优选地,在业务端轮询监控本地数据字段的变化期间,若业务端数据库中微服务的版本号发生变化后,向查询端返回应答报文。
优选地,该方法还包括:
在查询端和业务端建立连接后,若超过设定时长后查询端端仍未获得应答报文,则查询端主动断开连接并重新发起同步请求建立连接。
优选地,所述的查询端和业务端保留连接的方式包括采用block的方式保留连接。
优选地,所述的设定时长与服务器的承载能力呈正相关关系。
一种基于长轮询的微服务同步装置,包括存储器和处理器,所述的存储器用于存储计算机程序,所述的处理器用于当执行所述计算机程序时,实现所述的基于长轮询的微服务同步方法。
一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述的基于长轮询的微服务同步方法。
与现有技术相比,本发明具有如下优点:
(1)相对于接口通知方式,本发明请求的发起方由业务端转移到查询端,同时采用长轮询的方式减少了连接建立频次,定期重新建立连接的方式也充分利用到了业务端的负载方案,可以有效降低服务器的压力;
(2)相对于消息总线的消息通知机制,本发明不用额外开发管理消息总线,不需要额外部署服务;
(3)相对于文件同步监听信号文件的方式,本发明减少了磁盘IO,为定时扫描的非同步方式额外提供了同步方案。
附图说明
图1为本发明一种基于长轮询的微服务同步方法的流程框图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。注意,以下的实施方式的说明只是实质上的例示,本发明并不意在对其适用物或其用途进行限定,且本发明并不限定于以下的实施方式。
实施例1
本实施例提供一种基于长轮询的微服务同步方法,该方法通过长轮询的方式建立查询端与业务端的数据交互通道,在不产生额外成本(如消息总线的搭建)的前提下,降低消息通知时的压力。长轮询查询端发起Long Polling(长轮询)请求,此时如果业务端没有相关数据,会hold住请求,直到业务端有相关数据,或者等待一定时间超时才会返回。返回后,查询端又会立即再次发起下一次Long Polling。(所谓的hold住请求指的业务端暂时不回复结果,保存相关请求,不关闭请求连接,等相关数据准备好,写会查询端。)
进行长轮询的具体过程为:
1、发起Polling
发起Polling很简单,只需向服务器发起请求,此时业务端还未应答,所以查询端与业务端之间一直处于连接状态,该通讯方式本质上使用了长链的方式,提升网络传输效率,减少网络建链次数;
2、数据推送
如果服务器端有相关数据,此时业务端会将数据通过此前建立的通道发回查询端,确保返回的数据都是有变动的最新数据,减少无效数据传输,降低网络带宽使用;
3、Polling终止
Polling终止情况有三种:
若业务端返回相关数据,此时查询端收到数据后,关闭请求连接,结束此次Polling过程;
若查询端等待设定的超时时间后,业务端依然没有返回数据,此时查询端需要主动终止此次Polling请求,避免长时间不关闭链接带来的链接假死问题;
若查询端收到网络故障或异常,此时查询端自然也是需要主动终止此次Polling请求,主动保护机制,确保网络通讯健康情况;
4、重新Polling
终止上次Polling后,差选段需要立即再次发起Polling请求。这样才能保证拉取数据的及时性,重新建链确保数据变动后同步通知的时效性。
具体地,如图1所示,本实施例中基于长轮询的微服务同步方法具体包括如下步骤:
查询端发起同步请求;
业务端发现同步请求后判断是否返回应答报文,若是则返回应答报文,否则采用block的方式保留连接,直到查询端主动断开;
查询端获取到应答报文后,更新本地微服务,发起下一次的同步请求。
同步请求中包括查询端微服务的当前版本号。
业务端发现同步请求后判断是否返回应答报文的方式包括:
将同步请求中查询端微服务的当前版本号与业务端数据库中微服务的版本号进行比对,若两者不一致则返回应答报文,若两者一致则保留连接。
查询端和业务端保留连接期间,业务端轮询监控本地数据字段的变化。
在业务端轮询监控本地数据字段的变化期间,若业务端数据库中微服务的版本号发生变化后,向查询端返回应答报文。
该方法还包括:
在查询端和业务端建立连接后,若超过设定时长后查询端端仍未获得应答报文,则查询端主动断开连接并重新发起同步请求建立连接,其中,设定时长根据服务器承载能力设置,该设定时长与服务器的承载能力呈正相关关系。
查询端及业务端在进行数据维护时,需要将每次产生的命令赋予版本号,查询端需要维护每次同步时的版本号,以作为同步时的范围依据(也可通过时间戳等方式)。如果展示端采用的是实时构建方式,也可不维护版本号,而是每次全量获取进行命令重演。
相对于接口通知方式,本发明请求的发起方由业务端转移到查询端,同时采用长轮询的方式减少了连接建立频次,定期重新建立连接的方式也充分利用到了业务端的负载方案,可以有效降低服务器的压力;相对于消息总线的消息通知机制,本发明不用额外开发管理消息总线,不需要额外部署服务;相对于文件同步监听信号文件的方式,本发明减少了磁盘IO,为定时扫描的非同步方式额外提供了同步方案。
实施例2
本实施例提供一种基于长轮询的微服务同步装置,包括存储器和处理器,存储器用于存储计算机程序,处理器用于当执行所述计算机程序时,实现如实施例1中所述的基于长轮询的微服务同步方法,基于长轮询的微服务同步方法在实施例1中已详细说明,本实施例不再赘述。
实施例3
本实施例提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如实施例1中所述的基于长轮询的微服务同步方法,基于长轮询的微服务同步方法在实施例1中已详细说明,本实施例不再赘述。
上述实施方式仅为例举,不表示对本发明范围的限定。这些实施方式还能以其它各种方式来实施,且能在不脱离本发明技术思想的范围内作各种省略、置换、变更。
Claims (10)
1.一种基于长轮询的微服务同步方法,其特征在于,该方法包括:
查询端发起同步请求;
业务端发现同步请求后判断是否返回应答报文,若是则返回应答报文,否则保留连接,直到查询端主动断开;
查询端获取到应答报文后,更新本地微服务,发起下一次的同步请求。
2.根据权利要求1所述的一种基于长轮询的微服务同步方法,其特征在于,所述的同步请求中包括查询端微服务的当前版本号。
3.根据权利要求2所述的一种基于长轮询的微服务同步方法,其特征在于,业务端发现同步请求后判断是否返回应答报文的方式包括:
将同步请求中查询端微服务的当前版本号与业务端数据库中微服务的版本号进行比对,若两者不一致则返回应答报文,若两者一致则保留连接。
4.根据权利要求3所述的一种基于长轮询的微服务同步方法,其特征在于,查询端和业务端保留连接期间,业务端轮询监控本地数据字段的变化。
5.根据权利要求4所述的一种基于长轮询的微服务同步方法,其特征在于,在业务端轮询监控本地数据字段的变化期间,若业务端数据库中微服务的版本号发生变化后,向查询端返回应答报文。
6.根据权利要求1所述的一种基于长轮询的微服务同步方法,其特征在于,该方法还包括:
在查询端和业务端建立连接后,若超过设定时长后查询端端仍未获得应答报文,则查询端主动断开连接并重新发起同步请求建立连接。
7.根据权利要求1所述的一种基于长轮询的微服务同步方法,其特征在于,所述的查询端和业务端保留连接的方式包括采用block的方式保留连接。
8.根据权利要求6所述的一种基于长轮询的微服务同步方法,其特征在于,所述的设定时长与服务器的承载能力呈正相关关系。
9.一种基于长轮询的微服务同步装置,其特征在于,包括存储器和处理器,所述的存储器用于存储计算机程序,所述的处理器用于当执行所述计算机程序时,实现如权利要求1~8任意一项所述的基于长轮询的微服务同步方法。
10.一种存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1~8任意一项所述的基于长轮询的微服务同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110968366.8A CN113691616A (zh) | 2021-08-23 | 2021-08-23 | 一种基于长轮询的微服务同步方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110968366.8A CN113691616A (zh) | 2021-08-23 | 2021-08-23 | 一种基于长轮询的微服务同步方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113691616A true CN113691616A (zh) | 2021-11-23 |
Family
ID=78581450
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110968366.8A Pending CN113691616A (zh) | 2021-08-23 | 2021-08-23 | 一种基于长轮询的微服务同步方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113691616A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114584573A (zh) * | 2022-03-31 | 2022-06-03 | 深圳市瑞云科技有限公司 | 一种基于长轮询机制的节点机信息同步方法 |
CN115269725A (zh) * | 2022-07-25 | 2022-11-01 | 中电金信软件有限公司 | 一种基于消息中间件集群的数据同步方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014108030A1 (zh) * | 2013-01-09 | 2014-07-17 | 北京奇虎科技有限公司 | Web轮询方法、装置及系统 |
CN111865687A (zh) * | 2020-07-20 | 2020-10-30 | 上海悦易网络信息技术有限公司 | 一种业务数据更新方法及设备 |
WO2020237797A1 (zh) * | 2019-05-31 | 2020-12-03 | 烽火通信科技股份有限公司 | 一种微服务框架下动态配置管理方法及系统 |
CN112463251A (zh) * | 2020-12-03 | 2021-03-09 | 中国建设银行股份有限公司 | 一种uliweb框架配置热发布的方法和装置 |
CN112579695A (zh) * | 2019-09-29 | 2021-03-30 | 北京京东拓先科技有限公司 | 一种数据同步方法和装置 |
-
2021
- 2021-08-23 CN CN202110968366.8A patent/CN113691616A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014108030A1 (zh) * | 2013-01-09 | 2014-07-17 | 北京奇虎科技有限公司 | Web轮询方法、装置及系统 |
WO2020237797A1 (zh) * | 2019-05-31 | 2020-12-03 | 烽火通信科技股份有限公司 | 一种微服务框架下动态配置管理方法及系统 |
CN112579695A (zh) * | 2019-09-29 | 2021-03-30 | 北京京东拓先科技有限公司 | 一种数据同步方法和装置 |
CN111865687A (zh) * | 2020-07-20 | 2020-10-30 | 上海悦易网络信息技术有限公司 | 一种业务数据更新方法及设备 |
CN112463251A (zh) * | 2020-12-03 | 2021-03-09 | 中国建设银行股份有限公司 | 一种uliweb框架配置热发布的方法和装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114584573A (zh) * | 2022-03-31 | 2022-06-03 | 深圳市瑞云科技有限公司 | 一种基于长轮询机制的节点机信息同步方法 |
CN115269725A (zh) * | 2022-07-25 | 2022-11-01 | 中电金信软件有限公司 | 一种基于消息中间件集群的数据同步方法及系统 |
CN115269725B (zh) * | 2022-07-25 | 2023-07-28 | 中电金信软件有限公司 | 一种基于消息中间件集群的数据同步方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113691616A (zh) | 一种基于长轮询的微服务同步方法、装置及存储介质 | |
EP2461536A1 (en) | Method and system for data synchronization in content delivery network | |
CN106301969B (zh) | Http长链接的管理方法及系统 | |
US20220209878A1 (en) | Method, system and device for pushing information, and storage medium thereof | |
CN103312751A (zh) | 一种基于浏览器的即时通信方法 | |
CN104378436A (zh) | 一种基于服务器推送的信息推送系统及推送方法 | |
CN103312593B (zh) | 一种消息分发系统及方法 | |
CN104702627A (zh) | 一种基于报文分类的同步并发通信方法及系统 | |
CN113391979A (zh) | 监控数据展示的处理方法、设备、系统及存储介质 | |
CN103944979A (zh) | 一种消息推送方法、装置及系统 | |
CN111200606A (zh) | 深度学习模型任务处理方法、系统、服务器及存储介质 | |
CN110995566A (zh) | 一种消息数据推送方法、系统及装置 | |
CN114338769B (zh) | 访问请求的处理方法及装置 | |
CN108011779A (zh) | 在有限的资源条件下云服务器任务吞吐率的测试方法 | |
CN110674221B (zh) | 一种空间数据同步方法、终端及计算机可读存储介质 | |
CN106612307B (zh) | 一种永远在线业务的实现方法及装置 | |
CN106961529B (zh) | 工单处理方法和通信服务设备 | |
CN109918210B (zh) | 一种展示离线消息的方法及终端 | |
CN109831467A (zh) | 数据传输方法、设备及系统 | |
CN104735097A (zh) | 信息的收集方法和系统 | |
CN110519397B (zh) | 一种基于nginx的sip终端接入的负载均衡系统及方法 | |
CN110798512A (zh) | 一种集中式数据推送方法、智能终端及存储介质 | |
CN113259408A (zh) | 数据传输方法和系统 | |
CN106357744A (zh) | Smb客户端重连集群的方法、系统及smb客户端 | |
CN113014961A (zh) | 视频推送及传输方法、视角同步方法及装置、存储介质 |
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 |