CN110266799B - 一种基于缓存的幂等性实现的方法 - Google Patents

一种基于缓存的幂等性实现的方法 Download PDF

Info

Publication number
CN110266799B
CN110266799B CN201910544864.2A CN201910544864A CN110266799B CN 110266799 B CN110266799 B CN 110266799B CN 201910544864 A CN201910544864 A CN 201910544864A CN 110266799 B CN110266799 B CN 110266799B
Authority
CN
China
Prior art keywords
request
cache
time
server
ttl
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
Application number
CN201910544864.2A
Other languages
English (en)
Other versions
CN110266799A (zh
Inventor
石镇嘉
刘奇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xinzhou Power Supply Co of State Grid Shanxi Electric Power Co Ltd
Original Assignee
Xinzhou Power Supply Co of State Grid Shanxi Electric Power Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xinzhou Power Supply Co of State Grid Shanxi Electric Power Co Ltd filed Critical Xinzhou Power Supply Co of State Grid Shanxi Electric Power Co Ltd
Priority to CN201910544864.2A priority Critical patent/CN110266799B/zh
Publication of CN110266799A publication Critical patent/CN110266799A/zh
Application granted granted Critical
Publication of CN110266799B publication Critical patent/CN110266799B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/62Establishing a time schedule for servicing the requests

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明涉及网络信息处理技术,具体为一种基于缓存的幂等性实现的方法。解决了目前高并发和跨网络请求中存在重复订单导致服务端较难处理的技术问题。当一单用户请求触发,会由于用户重复请求,或者网络震荡导致重复订单,加上网路链路路由不同等因素,同一单请求并发到服务端,在本发明中服务端首先查询缓存,确定缓存中是否存在当前订单号对应的交易,如果此交易存在,即取出缓存中的交易信息,并作为交易结果返回。本发明面对的场景是在高并发和跨网络请求中,提高请求的响应,并保证相同请求返回相同的结果信息,并且通过TTL策略(Time To Live生存时间),保证较小的缓存使用,提高程序的并发处理能力和异常处理能力。

Description

一种基于缓存的幂等性实现的方法
技术领域
本发明涉及网络信息处理技术,具体为一种基于缓存的幂等性实现的方法。
背景技术
伴随网络的普及和互联网的发展,对于服务端的接口请求的要求也是也来越严格,并且伴随请求中携带交易的信息,服务端对于请求的响应,从原先的无状态,变化为目前需求的有状态,而且不单单是有状态,还要保证幂等性。即同样的请求到了服务端,服务端必须响应相同的返回结果,且自身业务有且只能处理一次。这就导致了在高速并发的请求下,业务数据处理中需要筛选出重复订单,并对重复的订单进行查询,看看已经处理到了哪一步,即涉及到了多个线程,多个进程,甚至是多台服务器之间的通信。确保内容的一致性,保证并发请求能够获得相同的处理结果和处理描述,这是影响现在互联网企业的一个问题,如果能够解决这个问题,那么在横向扩展上将会获得非常大的好处。
现有技术中,有一个中国专利《数据的更新方法和装置》,该专利为通过使用缓存的机制,保证配置相关信息的版本信息,从而保证相同版本的配置信息能够在获得高速响应并保证数据的正确性和幂等性。但是对于高并发和跨网络请求的情形,这种方案却不适用。
发明内容
本发明为解决目前高并发和跨网络请求中存在重复订单导致服务端较难处理的技术问题,提供一种基于缓存的幂等性实现的方法。
本发明是采用如下技术方案实现的:一种基于缓存的幂等性实现的方法,包括如下步骤:步骤1:当一单用户请求触发,会由于用户重复请求,客户端重试,或者网络震荡导致产生重复订单请求;加上网络不可靠,路由链路变化以及其它因素,同一单请求并发抵达服务端;
步骤2:当一个请求已经抵达服务端,服务端首先查询缓存,通过CAS(compare andswap)原理,根据该请求中携带的id,获得该id所对应的请求信息;
步骤3:通过请求抵达时间和通过CAS原理获取的时间进行对比,存在如下可能性:
1.如果时间相同,即为相同的请求,可能存在如下可能性:
①该请求第一次访问服务端;
②已经超过了TTL(Time To Live)存活时间的请求,这种情形下缓存将自动清除超过TTL的信息;这种情形下因为缓存在超过TTL时间后,自动清除超过TTL的请求信息,所以在缓存中找不到超过TTL时间的请求信息;
2.如果时间不同,即为之前已经存在过该请求,直接将获取到的请求信息,转换为对应的返回协议返回给用户(即调用方),告诉用户现在进程到了什么处理状态;
步骤4:在请求是第一次访问服务端的情况下,如果该请求为临时请求(临时请求是指只有时效性,而无事务性),对该请求进行处理,即为可执行交易,并将阶段性结果记录到缓存中,然后将处理成功的信息返回给用户;
步骤5:在请求是第一次访问服务端的情况下,如果该请求为事务(Transaction)请求,直接根据请求携带的id查询数据库(数据库将此id做唯一索引处理):
1.如果数据库中存在该记录,将数据库中的记录放入缓存中,并组织返回参数,返回用户;
2.如果数据库中不存在该条记录,将对该请求进行处理。即为可执行交易,并将阶段性结果记录到缓存中,然后将处理成功的信息返回给用户。
当一单用户请求触发,会由于用户重复请求,或者网络震荡导致重复订单,加上网路链路路由不同等因素,同一单请求并发到服务端,在本发明中服务端首先查询缓存,确定缓存中是否存在当前订单号对应的交易,如果此交易存在,即取出缓存中的交易信息,并作为交易结果返回。
本发明面对的场景是在高并发和跨网络请求中,提高请求的响应,并保证相同请求返回相同的结果信息,并且通过TTL策略(Time To Live生存时间),保证较小的缓存使用,提高程序的并发处理能力和异常处理能力。
本发明的技术特点:
a)请求到服务端,服务端缓存中存在数据,直接回复缓存中的数据;
b)请求到服务端,服务端中无数据,查询数据库,判定是否为可执行交易;
c)不可执行交易,返回数据库中结果;
d)可执行交易,将会被处理,或使用同步线程或启用异步线程,或使用消息队列处理,但是每一步的处理,都需要如实的写入缓存中。
本发明的有益效果:本发明提供一个使用缓存机制来缓存处理过程和处理结果的思路,通过该方法能够有效的保证由于网络震荡和重复请求造成的并发得以解决,并且通过相关的抽象层,提供集群处理的模型。
附图说明
图1本发明工作流程图。
具体实施方式
如图1所示,一种基于缓存的幂等性实现的方法,包括如下步骤:
步骤1:当一单用户请求触发,会由于用户重复请求,客户端重试,或者网络震荡导致产生重复订单请求;加上网络不可靠,路由链路变化以及其它因素,同一单请求并发抵达服务端;
步骤2:当一个请求已经抵达服务端,服务端首先查询缓存,通过CAS(compare andswap)原理,根据该请求中携带的id,获得该id所对应的请求信息。
步骤3:通过请求抵达时间和通过CAS原理获取的时间进行对比,存在如下可能性
1.如果时间相同,即为相同的请求,可能存在如下可能性:
①该请求第一次访问服务端
②已经超过了TTL(Time To Live 存活时间,缓存将自动清除超过TTL的信息)请求;
2.如果时间不同,即为之前已经存在过该请求,直接将获取到的请求信息,转换为对应的返回协议返回给用户(调用方),告诉用户现在进程到了什么处理状态;
步骤4:在请求是第一次访问服务端的情况下,如果该请求为临时请求(只有时效性,而无事务性),对该请求进行处理,即为可执行交易,并将阶段性结果记录到缓存中,然后将处理成功的信息返回给用户; TTL设置的时间长度要和业务进行关联,即TTL时间为临时业务最长失效时间;
步骤5:在请求是第一次访问服务端的情况下,如果该请求为事务(Transaction)请求,直接根据请求携带的id查询数据库(数据库将此id做唯一索引处理):
1.如果数据库中存在该记录,将数据库中的记录放入缓存中,并组织返回参数,返回用户(调用方);
2.如果数据库中不存在该条记录,将对该请求进行处理,即为可执行交易,并将阶段性结果记录到缓存中,然后将处理成功的信息返回给用户。
步骤3所述的TTL设置的时间长度要和业务进行关联,即TTL时间为临时业务最长失效时间。
实施例
邮箱服务器需要接受众多用户的邮件发送请求,邮件发送为一个拥有事务性的服务,即一个邮件请求,只能投递一次。由于使用用户较多,且均使用SMTP协议进行邮件发送。对于客户端内部逻辑不受控。且用户极为容易出现重复点击。为保证用户体验,使用上述策略。加入缓存层。使用TTL时间为5分钟,保证在此时间跨度范围内请求,直接命中缓存,获取缓存中的处理结果。当错过热点时间(即TTL存活时间),将直接查询数据库,从持久化层保证数据最终的唯一性。并将数据放入缓存中,保证可能由于用户误操作,或者客户端问题,导致短时间内数据触达。

Claims (1)

1.一种基于缓存的幂等性实现的方法,其特征在于,包括如下步骤:步骤1:当一单用户请求触发,会由于用户重复请求,客户端重试,或者网络震荡导致产生重复订单请求;加上网络不可靠,路由链路变化,同一单请求并发抵达服务端;所述服务端为邮箱服务器;
步骤2:当一个请求已经抵达服务端,服务端首先查询缓存,通过CAS原理,根据该请求中携带的id,获得该id所对应的请求信息;
步骤3:通过请求抵达时间和通过CAS原理获取的时间进行对比,存在如下情况:
1.如果时间相同,即为相同的请求,存在如下情况:
①该请求第一次访问服务端;
②已经超过了TTL存活时间的请求,这种情形下缓存自动清除超过TTL的请求信息;所述的TTL设置的时间长度要和业务进行关联,即TTL时间为临时业务最长失效时间;
TTL时间为5分钟,保证在此时间跨度范围内请求,直接命中缓存,获取缓存中的处理结果;
当错过热点时间即TTL存活时间,将直接查询数据库,从持久化层保证数据最终的唯一性;并将数据放入缓存中;
2.如果时间不同,即为之前已经存在过该请求,直接将获取到的请求信息,转换为对应的返回协议返回给用户,告诉用户现在进程到了什么处理状态;
步骤4:在请求是第一次访问服务端的情况下,如果该请求为临时请求,对该请求进行处理,即为可执行交易,并将阶段性结果记录到缓存中,然后将处理成功的信息返回给用户;
步骤5:在请求是第一次访问服务端的情况下,如果该请求为事务请求,直接根据请求携带的id查询数据库:
1.如果数据库中存在该记录,将数据库中的记录放入缓存中,并组织返回参数,返回用户;
2.如果数据库中不存在该条记录,将对该请求进行处理,即为可执行交易,并将阶段性结果记录到缓存中,然后将处理成功的信息返回给用户。
CN201910544864.2A 2019-06-21 2019-06-21 一种基于缓存的幂等性实现的方法 Active CN110266799B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910544864.2A CN110266799B (zh) 2019-06-21 2019-06-21 一种基于缓存的幂等性实现的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910544864.2A CN110266799B (zh) 2019-06-21 2019-06-21 一种基于缓存的幂等性实现的方法

Publications (2)

Publication Number Publication Date
CN110266799A CN110266799A (zh) 2019-09-20
CN110266799B true CN110266799B (zh) 2022-07-05

Family

ID=67920467

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910544864.2A Active CN110266799B (zh) 2019-06-21 2019-06-21 一种基于缓存的幂等性实现的方法

Country Status (1)

Country Link
CN (1) CN110266799B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112948138A (zh) * 2019-12-10 2021-06-11 北京沃东天骏信息技术有限公司 一种处理消息的方法和装置
CN111241112B (zh) * 2019-12-27 2023-05-23 山大地纬软件股份有限公司 一种保证幂等的微服务调用监管系统及方法
CN113610537A (zh) * 2021-08-05 2021-11-05 北京云从科技有限公司 请求执行方法、服务器、计算机设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101325561A (zh) * 2007-06-12 2008-12-17 阿里巴巴集团控股有限公司 一种处理电子邮件的方法、装置及系统
CN105141460A (zh) * 2015-09-09 2015-12-09 上海幻电信息科技有限公司 一种基于多平台的统一账号系统
CN106161193A (zh) * 2015-04-10 2016-11-23 腾讯科技(成都)有限公司 一种邮件处理方法、装置和系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060271557A1 (en) * 2005-05-25 2006-11-30 Terracotta, Inc. Database Caching and Invalidation Based on Detected Database Updates
CN105095462B (zh) * 2015-07-30 2018-09-28 北京京东尚科信息技术有限公司 处理网页重复请求的方法和系统
CN108090058B (zh) * 2016-11-21 2021-10-29 广东亿迅科技有限公司 一种高并发活动交互方法
CN107436910B (zh) * 2017-04-14 2020-08-18 阿里巴巴集团控股有限公司 一种数据查询方法和装置
CN107436767A (zh) * 2017-07-31 2017-12-05 杭州安恒信息技术有限公司 一种异步框架中幂等操作的优化方法
CN109491765B (zh) * 2018-10-09 2021-07-30 创新先进技术有限公司 对跨域业务请求的处理方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101325561A (zh) * 2007-06-12 2008-12-17 阿里巴巴集团控股有限公司 一种处理电子邮件的方法、装置及系统
CN106161193A (zh) * 2015-04-10 2016-11-23 腾讯科技(成都)有限公司 一种邮件处理方法、装置和系统
CN105141460A (zh) * 2015-09-09 2015-12-09 上海幻电信息科技有限公司 一种基于多平台的统一账号系统

Also Published As

Publication number Publication date
CN110266799A (zh) 2019-09-20

Similar Documents

Publication Publication Date Title
CN110266799B (zh) 一种基于缓存的幂等性实现的方法
US6775743B2 (en) Content caching with special handling of multiple identical requests for content
CN106031130B (zh) 具有边缘代理的内容传送网络架构
US7769951B2 (en) Intelligent caching of user data for real time communications
CN106202112B (zh) 缓存目录刷新方法和装置
CN103581230B (zh) 文件传输系统和方法、接收端、发送端
EP2369494A1 (en) Web application based database system and data management method therof
CN104980478B (zh) 内容分发网络中缓存共享方法、设备及系统
KR20100015641A (ko) 무선 데이터 서비스 내에서 이메일 메시지를 캐싱하는 장치 및 방법
WO2009118716A1 (en) Processing of messaging service attributes in communication systems
US10296485B2 (en) Remote direct memory access (RDMA) optimized high availability for in-memory data storage
US11323414B2 (en) Managing domain name system (DNS) record cache across multiple DNS servers using multicast communication
CN103973834A (zh) 一种基于家庭网关的dns域名解析加速方法及装置
US8489695B2 (en) Proxy communications on a social network
CN104994139B (zh) 一种对高并发网络请求快速响应的系统及方法
CN103685168B (zh) 一种dns递归服务器的查询请求服务方法
US7856461B2 (en) High availability for distributed non-persistent event propagation
CN102035815A (zh) 数据获取方法、接入节点和系统
US20160224641A1 (en) Obtaining incremental updates from a database using a partial query
CN109067936A (zh) 一种域名解析的方法及装置
US20150006622A1 (en) Web contents transmission method and apparatus
CN105610917A (zh) 实现系统中同步数据修复的方法及系统
US11055259B2 (en) Method and system for deleting obsolete files from a file system
CN115080272A (zh) 一种业务数据处理方法、电子设备及存储介质
WO2014067360A1 (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
GR01 Patent grant
GR01 Patent grant