CN113127231A - 订单处理、订单查询方法、装置、系统及电子设备 - Google Patents
订单处理、订单查询方法、装置、系统及电子设备 Download PDFInfo
- Publication number
- CN113127231A CN113127231A CN202110407168.4A CN202110407168A CN113127231A CN 113127231 A CN113127231 A CN 113127231A CN 202110407168 A CN202110407168 A CN 202110407168A CN 113127231 A CN113127231 A CN 113127231A
- Authority
- CN
- China
- Prior art keywords
- order
- target
- server
- service
- event message
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- 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
- G06F16/2365—Ensuring data consistency and integrity
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0633—Lists, e.g. purchase orders, compilation or processing
- G06Q30/0635—Processing of requisition or of purchase orders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Computational Linguistics (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例提供了一种订单处理、订单查询方法、装置、系统及电子设备,其中,通过将用户的订单操作请求封装成事件消息抛入消息队列,只有在业务服务器对订单数据处理成功的情况下,消息队列服务器才会将事件消息发送至应用服务器,以指示应用服务器对目标订单的订单索引进行处理。应用服务器仅需存储并更新目标订单的订单索引,且在接收到用户的订单查询请求时,应用服务器可以基于订单索引确定需要查询的业务服务器,并同样基于订单索引在对应的业务服务器批量查询订单数据,而无需遍历所有业务服务器中存储的所有订单数据,减少了响应于查询请求所需执行的外部IO操作和所需的数据处理资源,从而缩短了查询请求的响应时间。
Description
技术领域
本发明涉及通信技术领域,特别是涉及一种订单处理、订单查询方法、装置、系统及电子设备。
背景技术
在应用程序中,当用户点击“我的订单”时,“我的订单”页面会罗列出用户在应用程序中所有订单的列表。在应用程序中的订单涉及多个业务方的情况下,应用程序需要获取多个业务方的订单数据并集合在同一个列表中显示。
现有技术中,每一种业务方的订单数据由各个业务方自行存储和维护,仅向外暴露订单查询接口提供数据查询服务。在用户点击“我的订单”时,应用程序后端需要根据用户身份标识(Identity document,ID),实时的遍历所有关联业务方的订单查询接口,且在每一订单查询接口中需要遍历当前业务方所有的订单数据才能获取用户ID对应的所有订单数据。这样将进行大量的外部IO操作,同时将会耗费较长的数据处理时间,不仅增加了对用户进行“我的订单”查询的响应时间,也占用了服务器较多的数据处理资源。
发明内容
本发明实施例的目的在于提供一种订单处理、订单查询方法、装置、系统及电子设备,以提高订单查询处理的效率和准确性。具体技术方案如下:
在本发明实施的第一方面,首先提供了一种订单处理方法,包括:
业务服务器在接收到客户端发送的订单操作请求的情况下,生成所述订单操作请求对应的事件消息;其中,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
业务服务器向消息队列服务器发送所述事件消息;
消息队列服务器暂存所述事件消息,并在接收到业务服务器的指示的情况下,向应用服务器发送所述事件消息;
应用服务器在接收到所述事件消息的情况下,应用服务器根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
在本发明实施的第二方面,还提供了一种订单处理方法,由应用服务器执行,包括:
接收消息队列服务器发送的事件消息;其中,所述事件消息基于客户端发送给业务服务器的订单操作请求生成,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
响应于所述事件消息,根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
在本发明实施的第三方面,还提供了一种订单处理方法,由业务服务器执行,包括:
在接收到客户端发送的订单操作请求的情况下,响应于所述订单操作请求,生成所述订单操作请求对应的事件消息;其中,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
将所述事件消息发送给消息队列服务器;
其中,在指示所述消息队列服务器向应用服务器发送所述事件消息,且所述应用服务器接收到所述事件消息的情况下,所述事件消息用于指示所述应用服务器根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
在本发明实施的第四方面,还提供了一种订单处理方法,由消息队列服务器执行,包括:
在接收到业务服务器发送的事件消息的情况下,暂存所述事件消息;
其中,所述事件消息基于客户端发送给业务服务器的订单操作请求生成,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
其中,在向应用服务器所述事件消息的情况下,所述事件消息用于指示所述应用服务器根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
在本发明实施的第五方面,还提供了一种订单查询方法,包括:
应用服务器在接收到客户端发送的订单查询请求的情况下,获取用户标识对应的目标订单索引列表;其中,所述订单查询请求携带有目标订单的用户标识,所述订单查询请求用于请求查询所述目标订单,所述订单索引列表中的每一订单索引均包括订单标识和业务标识;
应用服务器基于所述目标订单索引列表中包括的N个业务标识,确定所述N个业务标识中每个业务标识对应的订单索引子列表,N为正整数;
应用服务器向所述N个业务标识对应的N个业务服务器发送第二查询请求,所述第二查询请求携带有每个所述业务标识对应的订单索引子列表;
业务服务器在接收到所述第二查询请求的情况下,查询并获取所述订单索引子列表中所有订单标识对应的目标订单清单;
业务服务器向应用服务器发送所述目标订单清单;
应用服务器在接收到N个所述业务服务器发送的N个所述目标订单清单的情况下,向所述客户端发送N个所述目标订单清单。
在本发明实施的第六方面,还提供了一种订单查询方法,由应用服务器执行,包括:
接收客户端发送的订单查询请求,所述订单查询请求携带有目标订单的用户标识;
响应于所述订单查询请求,获取用户标识对应的目标订单索引列表,所述订单索引列表中的每一订单索引均包括订单标识和业务标识;
基于所述目标订单索引列表中包括的N个业务标识,确定所述N个业务标识中每个业务标识对应的订单索引子列表,N为正整数;
向所述N个业务标识对应的N个业务服务器发送第二查询请求,所述第二查询请求携带有每个所述业务标识对应的订单索引子列表,所述第二查询请求用于请求查询并返回目标订单清单,所述目标订单清单包括所述订单索引子列表中所有订单标识对应的目标订单;
在接收到所述N个业务服务器发送的N个目标订单清单的情况下,向所述客户端发送所述N个目标订单清单。
在本发明实施的第七方面,还提供了一种订单处理系统,包括应用服务器、业务服务器和消息队列服务器,其中:
所述业务服务器,用于在接收到客户端发送的订单操作请求的情况下,生成所述订单操作请求对应的事件消息;其中,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
所述业务服务器,用于向所述消息队列服务器发送所述事件消息;
所述消息队列服务器,用于暂存所述事件消息,并在接收到所述业务服务器的指示的情况下,向所述应用服务器发送所述事件消息;
所述应用服务器还用于,在接收到所述事件消息的情况下,根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
在本发明实施的第八方面,还提供了一种订单查询系统,包括应用服务器和业务服务器,其中:
所述应用服务器,用于在接收到客户端发送的订单查询请求的情况下,获取用户标识对应的目标订单索引列表;其中,所述订单查询请求携带有目标订单的用户标识,所述订单查询请求用于请求查询所述目标订单,所述订单索引列表中的每一订单索引均包括订单标识和业务标识;
所述应用服务器,还用于基于所述目标订单索引列表中包括的N个业务标识,确定所述N个业务标识中每个业务标识对应的订单索引子列表,N为正整数;
所述应用服务器,还用于向所述N个业务标识对应的N个所述业务服务器发送第二查询请求,所述第二查询请求携带有每个所述业务标识对应的订单索引子列表;
所述业务服务器,用于在接收到所述第二查询请求的情况下,查询并获取所述订单索引子列表中所有订单标识对应的目标订单清单;
所述业务服务器,用于向所述应用服务器发送所述目标订单清单;
所述应用服务器,还用于在接收到N个所述业务服务器发送的N个所述目标订单清单的情况下,向所述客户端发送N个所述目标订单清单。
在本发明实施的第九方面,还提供了一种订单处理装置,所述订单处理装置设置于应用服务器中,所述订单处理装置包括:
第一接收模块,用于接收消息队列服务器发送的事件消息;其中,所述事件消息基于客户端发送给业务服务器的订单操作请求生成,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
第一处理模块,用于响应于所述事件消息,根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
在本发明实施的第十方面,还提供了一种订单处理装置,所述订单处理装置设置于业务服务器中,所述订单处理装置包括:
生成模块,用于在接收到客户端发送的订单操作请求的情况下,响应于所述订单操作请求,生成所述订单操作请求对应的事件消息;其中,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
第一发送模块,用于将所述事件消息发送给消息队列服务器;
其中,在指示所述消息队列服务器向应用服务器发送所述事件消息,且所述应用服务器接收到所述事件消息的情况下,所述事件消息用于指示所述应用服务器根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
在本发明实施的第十一方面,还提供了一种订单处理装置,所述订单处理装置设置于消息队列服务器中,所述订单处理装置包括:
存储模块,用于在接收到业务服务器发送的事件消息的情况下,暂存所述事件消息;其中,所述事件消息基于客户端发送给业务服务器的订单操作请求生成,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
其中,在向应用服务器所述事件消息的情况下,所述事件消息用于指示所述应用服务器根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
在本发明实施的第十二方面,还提供了一种订单查询装置,所述订单查询装置设置于应用服务器中,所述订单查询装置包括:
第二接收模块,用于接收客户端发送的订单查询请求,所述订单查询请求携带有目标订单的用户标识;
获取模块,用于响应于所述订单查询请求,获取用户标识对应的目标订单索引列表,所述订单索引列表中的每一订单索引均包括订单标识和业务标识;
确定模块,用于基于所述目标订单索引列表中包括的N个业务标识,确定所述N个业务标识中每个业务标识对应的订单索引子列表,N为正整数;
第七发送模块,用于向所述N个业务标识对应的N个业务服务器发送第二查询请求,所述第二查询请求携带有每个所述业务标识对应的订单索引子列表,所述第二查询请求用于请求查询并返回目标订单清单,所述目标订单清单包括所述订单索引子列表中所有订单标识对应的目标订单;
第八发送模块,用于在接收到所述N个业务服务器发送的N个目标订单清单的情况下,向所述客户端发送所述N个目标订单清单。
在本发明实施的第十三方面,还提供了一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现本发明实施的第二方面或者第三方面或者第四方面或者第六方面提供的方法的步骤。
在本发明实施的第十四方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现本发明实施的第二方面或者第三方面或者第四方面或者第六方面提供的方法的步骤。
在本发明实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行本发明实施的第二方面或者第三方面或者第四方面或者第六方面提供的方法的步骤。
本发明实施例提供的订单处理、订单查询方法、装置、系统及电子设备,其中,业务服务器将用户的订单操作请求封装成事件消息,并将所述事件消息发送至消息队列服务器暂存,业务服务器对目标订单的订单数据进行处理,并在订单数据处理成功的情况下,指示消息队列服务器将所述事件消息发送至应用服务器,应用服务器在接收到所述事件消息的情况下,对目标订单的订单索引进行处理。这样,通过将用户的订单操作请求封装成事件消息抛入消息队列,基于消息队列机制,只有在业务服务器对订单数据处理成功的情况下,消息队列服务器才会将事件消息发送至应用服务器,以指示应用服务器对目标订单的订单索引进行处理,以保证业务服务器对订单数据的处理和应用服务器对订单索引的处理的一致性;
此外,应用服务器仅需存储并更新目标订单的订单索引,节约应用服务器的存储资源,减少数据冗余,且在接收到用户的订单查询请求时,应用服务器可以基于订单索引确定需要查询的业务服务器,并同样基于订单索引在对应的业务服务器批量查询订单数据,而无需遍历所有业务服务器中存储的所有订单数据,减少了响应于查询请求所需执行的外部IO操作和所需的数据处理资源,从而缩短了查询请求的响应时间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例可应用的一种网络系统的结构图;
图2为本发明实施例中的消息队列中的一种消息数据流;
图3为本发明实施例中订单处理方法之一的流程示意图;
图4为本发明实施例中订单处理方法之二的流程示意图;
图5为本发明实施例中订单处理方法的交互示意图之一;
图6为本发明实施例中订单处理方法的交互示意图之二;
图7为本发明实施例中订单处理方法的交互示意图之三;
图8为本发明实施例中订单处理方法的交互示意图之四;
图9为本发明实施例中一种订单处理系统的示意图;
图10为本发明实施例中订单查询方法之一的流程示意图;
图11为本发明实施例中订单查询方法的交互示意图;
图12本发明实施例中一种订单查询系统的示意图;
图13为本发明实施例中订单处理装置之一的结构示意图;
图14为本发明实施例中订单处理装置之二的结构示意图;
图15为本发明实施例中订单处理装置之三的结构示意图;
图16为本发明实施例中一种订单查询装置的结构示意图;
图17为本发明实施例中一种电子设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
当用户在客户端执行“我的订单”查询操作时,“我的订单”后台,即应用服务器需要为用户提供其在客户端提交的所有订单,并将其综合至一个列表中展示。由于不同业务的订单均由各个业务服务器独立存储和维护,且各业务服务器提供的订单查询接口的参数,通常只有用户身份标识(Identity document,ID),当前页数,每页展示个数等。因而,应用服务器在接收到客户端发送的查询请求后,需要根据用户ID实时的遍历所有关联业务方的订单查询接口,并遍历每一业务方的查询结果的所有订单数据,以获取与用户ID相关的订单数据。
示例性的,若与应用服务器相关联的业务方为M个,且每个业务方对应的业务服务器中存储有C页订单数据(每页N个订单的订单数据)。那么,应用服务器响应于用户的“我的订单”的查询请求,需要实时的至少执行C*M次查询操作,涉及至少C*M*N个数据量。此外,在获取到与用户ID相关的全部订单数据后,还需要按照下单时间对全部订单数据进行排序和分页。这样,应用服务器需要执行大量的外部IO操作,同时需要耗费较长的数据处理时间,不仅增加了对用户进行“我的订单”查询的响应时间,还会占用服务器较多的数据处理资源。
请参见图1,图1是本发明实施例可应用的一种网络系统的结构图。
如图1所示,包括客户端11、应用服务器12、应用服务器的数据库13、消息队列(Message Queue,MQ)服务器(以下简称MQ服务器)14、业务服务器15以及业务服务器的数据库16。其中,客户端11可以分别与应用服务器12和业务服务器15进行通信,应用服务器12与业务服务器15之间可以进行通信,MQ服务器14可以分别与应用服务器12和业务服务器15进行通信,应用服务器12与应用服务器的数据库13之间可以进行通信,业务服务器15与业务服务器的数据库16之间可以进行通信。其中:
客户端11也可以称为用户端。在实际应用中,客户端可以是手机、平板电脑(Tablet Personal Computer)、膝上型电脑(Laptop Computer)、个人数字助理(personaldigital assistant,PDA)、移动上网装置(Mobile Internet Device,MID)或可穿戴式设备(Wearable Device)等电子设备上为用户提供应用服务的程序。
应用服务器12也可以称为应用程序服务器。应用服务器12可与客户端11之间交互,为客户端11提供访问商业逻辑的途径,为客户端11提供服务和资源。在实际应用中,应用服务器11可以是云端的计算机、服务器等具备数据处理功能的设备或者数据平台。
应用服务器的数据库13可以理解为与应用服务器相关联的数据库服务器,其为应用服务器12提供数据服务。在实际应用中,应用服务器的数据库13可以由运行在局域网中的一台或者多台计算机和数据库管理系统软件共同构成。
业务服务器15是指应用服务器12所提供的应用服务中涉及的一个或者多个业务的后台服务器。示例性的,在提供旅游服务的应用程序中,可能涉及到火车票、机票等票务服务,也可能涉及租车、包车等车辆租赁服务,还可能涉及酒店、民宿等住宿预订服务。每一票务服务、车辆租赁服务、住宿预订服务均存在对应的业务方,且由业务方的业务服务器对其数据进行存储和维护。
业务服务器15可与应用服务器12之间交互,为应用服务器12提供业务服务接口。当应用服务器12需要获取某一业务的数据时,可以通过调用对应业务服务器提供的接口,向对应的业务服务器请求业务数据。在实际应用中,业务服务器15可以是云端的计算机、服务器等具备数据处理功能的设备或者数据平台。
业务服务器的数据库16可以理解为与业务服务器相关联的数据库服务器,其为业务服务器15提供数据服务。在实际应用中,业务服务器的数据库16可以由运行在局域网中的一台或者多台计算机和数据库管理系统软件共同构成。
MQ是一种可以应用于分布式系统中的中间件,主要可以解决系统耦合、异步消息、流量削锋等问题。在消息队列服务中,消息数据流可以如图2所示,主要涉及以下三种主体:
1)MQ服务器14,也可以称为MQ Broker。MQ服务器就是实现消息队列服务的服务器。在实际应用中,MQ服务器14可以是云端的计算机、服务器等具备数据处理功能的设备或者数据平台。
2)生产者(Producer),生产者是指业务的发起方,可以生产消息传输给MQ服务器。在本发明实施例中,业务服务器15可以为上述生产者。
3)消费者(Consumer),消费者是指业务的处理方,可以从MQ服务器获取消息,并根据消息进行对应的业务逻辑处理。在本发明实施例中,应用服务器12可以为上述消费者。
本发明实施例提供一种订单处理方法,所述方法包括:
业务服务器在接收到客户端发送的订单操作请求的情况下,生成所述订单操作请求对应的事件消息;其中,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
业务服务器向消息队列服务器发送所述事件消息;
消息队列服务器暂存所述事件消息,并在接收到业务服务器的指示的情况下,向应用服务器发送所述事件消息;
应用服务器在接收到所述事件消息的情况下,应用服务器根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
业务服务器将用户的订单操作请求封装成事件消息,并将所述事件消息发送至消息队列服务器暂存,业务服务器对目标订单的订单数据进行处理,并在订单数据处理成功的情况下,指示消息队列服务器将所述事件消息发送至应用服务器,应用服务器在接收到所述事件消息的情况下,对目标订单的订单索引进行处理。这样,通过将用户的订单操作请求封装成事件消息抛入消息队列,基于消息队列机制,只有在业务服务器对订单数据处理成功的情况下,消息队列服务器才会将事件消息发送至应用服务器,以指示应用服务器对目标订单的订单索引进行处理,以保证业务服务器对订单数据的处理和应用服务器对订单索引的处理的一致性;此外,应用服务器仅需存储并更新目标订单的订单索引,节约应用服务器的存储资源,减少数据冗余。
下面分别从应用服务器、业务服务器、MQ服务器的角度对本发明实施例提供的订单处理方法进行介绍。
请参见图3,图3是本发明实施例提供的订单处理方法之一的流程示意图,所述订单处理方法由应用服务器执行。
如图3所示,所述订单处理方法包括:
步骤301、接收MQ服务器发送的事件消息;
步骤302、响应于所述事件消息,根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
其中,所述事件消息基于客户端发送给业务服务器的订单操作请求生成,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识。
本发明实施例中,业务服务器可以存储和维护订单数据,所述订单数据可以理解为订单的详情、属性等实体数据。应用服务器可以存储和维护订单索引,节约应用服务器的存储资源,减少数据冗余。其中,所述订单索引包括订单的标识信息,如订单的用户标识(例如用户ID)、订单的订单标识(例如订单号)、订单所属业务的业务标识(例如业务名称)等信息。可选的,所述订单索引还可以包括订单的下单时间、所述事件消息的创建时间或者更新时间、所述订单索引的键值等。可以理解的是,所述订单索引包括的信息具体可根据实际情况决定,本发明实施例对此不作限定。
业务服务器在接收到客户端发送的订单操作请求的情况下,可基于所述订单操作请求,生成事件消息发送至MQ服务器暂存。业务服务器只有对订单数据处理成功的情况下,消息队列服务器才会将所述事件消息发送至应用服务器,从而应用服务器可以获取所述事件消息中携带的订单索引和所述订单操作请求对应的操作类型,并根据所述操作类型,对所述目标订单的订单索引进行处理。
在接收到用户的订单查询请求时,应用服务器可以基于用户标识确定当前查询请求对应的所有订单索引,从而根据所述订单索引包括的N个业务标识确定需要查询的N个业务服务器,并通过订单标识在对应的业务服务器查询订单数据,而无需遍历所有业务服务器中存储的所有订单数据,减少了响应于查询请求所需执行的外部IO操作和所需的数据处理资源,从而缩短了查询请求的响应时间。
具体的,步骤301中,应用服务器可以接收消息队列服务器发送的事件消息。
具体实现时,客户端可以接收用户执行的订单操作,响应于所述订单操作,客户端可以向业务服务器发送订单操作请求。业务服务器在接收到所述订单操作请求后,可以基于所述订单操作请求,将目标订单的订单数据的预期响应变化封装成事件消息。所述订单数据的预期响应变化可以理解为,在业务服务器执行完成所述订单操作请求对应的操作时,目标订单的订单数据发生的变化。进而,所述事件消息可以携带所述目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识。
示例性的,假设所述订单操作请求为下单请求,基于所述下单请求将生成目标订单的订单数据,即在业务服务器的数据库中新增目标订单的订单数据。业务服务器可以基于“新增目标订单的订单数据”这一事件生成事件消息,所述事件消息可以携带有订单索引和订单操作请求对应的操作类型(新增所述目标订单),所述订单索引包括用户标识(假设为用户A)、目标订单的订单标识(假设为20361100)和目标订单的业务标识(假设为火车票票务)。
其中,所述事件消息可以包括但不限于以下两种实现形式:
第一种实现形式中,所述事件消息可以包括但不限于四个字段,分别用于指示所述目标订单的用户标识、所述目标订单的订单标识、所述目标订单的业务标识和所述订单操作请求的类型标识。在一种可选的实现形式中,所述事件消息还可以包括用于指示所述目标订单的下单时间的字段。示例性的,所述事件消息的数据格式可以如表1所示。
表1事件消息的数据结构
字段 | 类型 | 说明 |
bizid | number | 业务标识 |
bizorderid | varchar | 订单标识 |
userid | number | 用户标识 |
status | number | 操作类型标识 |
ordertime | timestamp | 下单时间 |
第二种实现形式,所述事件消息可以包括但不限于两个字段:目标订单的订单索引和所述订单操作请求的类型标识。其中,所述订单索引可以是业务服务器为所述目标订单生成的随机字符码,其可以与所述目标订单的用户标识、订单标识和业务标识均相关联。
业务服务器可以向MQ服务器发送所述事件消息,MQ服务器可以将所述事件消息暂存,并在接收到业务服务器的指示的情况下,向应用服务器发送所述事件消息,应用服务器可以接收所述事件消息,并继续执行步骤302。
步骤302中,响应于所述事件消息,应用服务器可以根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
具体实现时,所述订单操作请求的类型标识用于标识所述订单操作请求对应的操作类型。可选的,所述操作类型可以包括但不限于以下三种:
第一种,所述订单操作请求为下单请求,即新增订单请求。此情况下,应用服务器可以在数据库中新增所述目标订单对应的存储空间,并对所述目标订单的订单索引进行存储。
第二种,所述订单操作请求为修改订单请求。此情况下,应用服务器可以基于所述用户标识在数据库中查询所述用户标识对应的订单索引,并根据当前所示事件消息携带的订单索引对数据库中当前存储的订单索引进行更新。例如修改所述订单标识,或者修改所述业务标识等。
第三种,所述订单操作请求为删除订单请求。此情况下,应用服务器可以基于所述用户标识在数据库中查询所述用户标识对应的订单索引,并将其在数据库中删除,以释放其先前占用的存储空间。
本发明实施例提供的订单处理方法,业务服务器只有对订单数据处理成功的情况下,消息队列服务器才会将所述事件消息发送至应用服务器,从而应用服务器在接收到所述事件消息时,应用服务器可以根据所述订单操作请求对应的操作类型,对目标订单的订单索引进行相应的处理,以保证业务服务器中存储的订单数据与应用服务器存储的订单索引的一致性。
同时,基于应用服务器仅存储有订单索引,节约了应用服务器的存储资源,减少数据冗余,且在接收到用户的订单查询请求时,应用服务器可以基于订单索引确定需要查询的业务服务器,并同样基于订单索引在对应的业务服务器批量查询订单数据,而无需遍历所有业务服务器中存储的所有订单数据,减少了响应于查询请求所需执行的外部IO操作和所需的数据处理资源,从而缩短了查询请求的响应时间。
请参见图4,图4是本发明实施例提供的订单处理方法之二的流程示意图,所述订单处理方法由业务服务器执行。
如图4所示,所述订单处理方法可以包括以下步骤:
步骤401、在接收到客户端发送的订单操作请求的情况下,响应于所述订单操作请求,生成所述订单操作请求对应的事件消息;所述事件消息携带有所述客户端的用户标识和所述订单操作请求对应的目标订单的订单索引;
步骤402、将所述事件消息发送给MQ服务器;
其中,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
在指示所述消息队列服务器向应用服务器发送所述事件消息,且所述应用服务器接收到所述事件消息的情况下,所述事件消息用于指示所述应用服务器根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
本实施例为与如图3所示的实施例中对应的业务服务器的实施方式,因此,可以参见如图3所示的实施例中的相关说明,且可以达到相同的有益效果。为了避免重复说明,在此不再赘述。
本发明实施例中,所述事件消息在业务服务器、MQ服务器和应用服务器之间传输,同时,业务服务器执行所述订单操作请求对应的操作,需要访问其对应的数据库对订单数据进行处理,以及应用服务器也需要访问其对应的数据库对订单索引进行处理。在上述过程中,可能由于网络连接等原因,发生事件消息传输不成功或者订单数据/订单索引入库失败的情况,这都可能导致业务服务器存储的订单数据与应用服务器存储的订单索引的不一致,进而影响后续订单查询的效率和准确性。
下面介绍本发明实施例中可能存在的情况,以及每种情况下的具体实施方式。具体的,可以包括但不限于以下五种情况:
(1)事件消息传输成功且订单数据和订单索引均处理成功;
(2)事件消息向MQ服务器发送失败;
(3)事件消息向MQ服务器发送成功但订单数据处理失败;
(4)事件消息向MQ服务器发送成功且订单数据处理成功,但向MQ服务器发送第一指令失败,所述第一指令用于指示MQ服务器向应用服务器发送所述事件消息;
(5)MQ服务器将事件消息发送至应用服务器成功但应用服务器对订单索引处理失败。
下面以业务服务器的执行角度为主,对不同情况下的具体实施方式进行说明:
本发明实施例中,可选的,所述步骤402之后,所述方法还包括:
在接收到所述MQ服务器发送的第一消息的情况下,执行所述订单操作请求对应的操作,对所述目标订单进行处理,所述第一消息用于表征所述事件消息接收成功;
在对所述目标订单处理成功的情况下,向所述MQ服务器发送第一指令,所述第一指令用于指示所述MQ服务器向应用服务器发送所述事件消息。
本实施方式可以涉及上述情况(1)和情况(5):
下面介绍情况(1):事件消息传输成功且订单数据和订单索引均处理成功。
为方便理解,对情况(1)的具体流程进行说明,如图5所示:
情况(1)中,业务服务器接收到客户端发送的下单操作请求之后,可以生成下单操作请求对应的事件消息,并将所述事件消息发送至MQ服务器。MQ服务器在接收到所述事件消息后将其暂存,并向业务服务器返回所述第一消息,以告知业务服务器接收所述事件消息成功。之后,业务服务器在对所述目标订单处理成功的情况下,可以向MQ服务器发送所述第一指令,以指示MQ服务器将所述事件消息发送至应用服务器。这样,在业务服务器对目标订单处理成功,即目标订单的订单数据已经存入业务服务器的数据库的情况下,应用服务器才会收到所述事件消息,进而对目标订单的订单索引进行处理,使得业务服务器和应用服务器之间数据同步变化,进而提高了后续订单查询处理的效率和准确性。
具体实现时,在订单操作请求的类型不同的情况下,业务服务器对目标订单的订单数据执行的操作也会不同。
在所述订单操作请求为对目标订单的下单操作请求的情况下,可以理解的是,所述目标订单为基于下单操作请求生成的目标订单。此情况下,业务服务器可以根据下单操作请求携带的信息,生成所述目标订单并确定所述目标订单的详情、属性等实体数据。之后访问业务服务器的数据库,将所述目标订单的订单数据存入数据库中。在所述业务服务器接收到数据库返回的第三消息的情况下,所述第三消息表征所述目标订单的订单数据入库成功,业务服务器可以向MQ服务器发送所述第一指令。
在所述订单操作请求为对目标订单的删除操作请求的情况下,业务服务器可以根据下单操作请求携带的信息,确定所述目标订单,并访问业务服务器的数据库,将数据库中存储的所述目标订单的订单数据删除。在所述业务服务器接收到数据库返回的第三消息的情况下,所述第三消息表征所述目标订单的订单数据删除成功,业务服务器可以向MQ服务器发送所述第一指令。
在所述订单操作请求为对目标订单的修改操作请求的情况下,业务服务器可以根据下单操作请求携带的信息,确定所述目标订单和变更后的订单数据,并访问业务服务器的数据库,修改数据库中存储的所述目标订单的订单数据。在所述业务服务器接收到数据库返回的第三消息的情况下,所述第三消息表征所述目标订单的订单数据修改成功,业务服务器可以向MQ服务器发送所述第一指令。
可以理解的是,所述订单操作请求的操作类型并不限于此,在此仅以上述三种操作类型进行说明,具体可根据实际情况决定,并根据上述三种操作类型的说明作适应性的调整,本发明实施例对此不作限定。
情况(1)中,MQ服务器在接收到所述第一指令后,可以将所述事件消息发送至应用服务器。应用服务器在接收到所述事件消息后,可获取所述事件消息携带的订单索引和订单操作请求对应的类型标识,并根据所述类型标识对应的操作类型,对所述目标订单的订单索引进行处理。
具体实现时,在订单操作请求的类型不同的情况下,应用服务器对目标订单的订单索引执行的操作也会不同。
在所述操作类型为下单操作的情况下,应用服务器可以根据所述事件消息携带的信息生成一条所述用户标识对应的订单索引。之后访问应用服务器的数据库,将所述目标订单的订单索引存入应用服务器的数据库中。在应用服务器接收到应用服务器数据库返回的第四消息,且所述第四消息表征所述目标订单的订单索引入库成功的情况下,应用服务器可以向MQ服务器发送第五消息,所述第五消息用于告知MQ服务器事件消息处理成功。
在所述操作类型为对目标订单的删除操作的情况下,应用服务器可以根据所述事件消息携带的信息,确定所述目标订单。之后访问应用服务器的数据库,将数据库中存储的所述目标订单的订单索引删除。在应用服务器接收到应用服务器数据库返回的第四消息,且所述第四消息表征所述目标订单的订单索引删除成功的情况下,应用服务器可以向MQ服务器发送第五消息,所述第五消息用于告知MQ服务器事件消息处理成功。
在所述操作类型为对目标订单的修改操作的情况下,应用服务器可以根据所述事件消息携带的信息,确定所述目标订单。之后访问应用服务器的数据库,修改数据库中存储的所述目标订单的订单索引。在应用服务器接收到应用服务器的数据库返回的第四消息,且所述第四消息表征所述目标订单的订单索引修改成功的情况下,应用服务器可以向MQ服务器发送第五消息,所述第五消息用于告知MQ服务器事件消息处理成功。
可以理解的是,应用服务器对订单索引的操作类型与所述订单操作请求的操作类型相同,且并不限于此,在此仅以上述三种操作类型进行说明,具体可根据实际情况决定,并根据上述三种操作类型的说明作适应性的调整,本发明实施例对此不作限定。
下面介绍情况(5):MQ服务器将事件消息发送至应用服务器成功但应用服务器对订单索引处理失败。
为方便理解,对情况(5)的具体流程进行说明,如图6所示:
情况(5)与情况(1)的区别在于,在应用服务器根据所述订单操作请求对应的操作类型,对目标订单的订单索引进行处理时,由于访问应用服务器的数据库失败等原因,应用服务器并未同步目标订单的订单索引的变化。
如图6所示,在应用服务器接收到应用服务器的数据库返回的第四消息,且所述第四消息表征所述目标订单的订单索引处理失败的情况下,应用服务器可以向MQ服务器发送第五消息,所述第五消息用于告知MQ服务器事件消息处理失败。此时,MQ服务器将基于重试机制,向应用服务器重新发送事件消息,直至应用服务器返回用于表征事件消息处理成功的第五消息;或者,当超过重试阈值,即预设的重试时间周期的情况下,所述事件消息将进入死信队列,需要等待人工处理。操作人员可以手动对应用服务器中的所述目标订单的订单索引进行更新。
本实施方式中,在业务服务器对目标订单的订单数据处理成功的情况下,MQ服务器基于业务服务器发送的所述第一指令,可以将所述事件消息发送至应用服务器,以指示应用服务器对目标订单的订单索引进行处理。MQ服务器基于所述第一指令和重试机制,可以保证应用服务器对订单索引的处理与业务服务器对订单数据的处理之间的一致性。
本发明实施例中,所述接收到所述MQ服务器发送的第一消息的步骤之后,所述方法还包括:
在接收到所述MQ服务器发送的第一查询请求的情况下,向所述MQ服务器发送查询响应消息,所述第一查询请求用于请求查询所述目标订单的处理状态;
其中,在对所述目标订单处理成功的情况下,所述查询响应消息用于指示所述MQ服务器向所述应用服务器发送所述事件消息;
在对所述目标订单处理失败的情况下,所述查询响应消息用于指示所述MQ服务器删除所述事件消息。
本实施方式涉及上述情况(3)和情况(4):
下面介绍情况(3):事件消息向MQ服务器发送成功但订单数据处理失败。
为方便理解,对情况(3)的具体流程进行说明,如图7所示:
情况(3)与情况(1)的区别在于,在业务服务器访问业务服务器的数据库,以请求业务服务器的数据库对所述目标订单的订单数据进行处理后,接收到了业务服务器的数据库返回的第二消息,所述第二消息用于表征业务服务器的数据库对所述目标订单的订单数据处理失败。
MQ服务器在暂存所述事件消息后,将会等待业务服务器发送的所述第一指令,在等待超过预设阈值后还未收到所述第一指令时,MQ服务器可以基于业务服务器提供的查询接口,向业务服务器发送所述第一查询请求,以确定对所述事件消息作何种处理。此情况下,业务服务器对订单数据的处理失败,为了保证业务服务器与应用服务器之间数据的一致性,业务服务器不会向MQ服务器发送所述第一指令。MQ服务器可以在等待超过预设阈值后向业务服务器发送所述第一查询请求
由于业务服务器对订单数据的处理失败,业务服务器可以向MQ服务器发送用于指示其删除所述事件消息的查询响应消息。MQ服务器将删除所述事件消息而不会向应用服务器发送。这样,在业务服务器对订单数据处理处理失败时,应用服务器也不会接收到所述事件消息,并不会对所述目标订单的订单索引进行处理。
下面介绍情况(4):事件消息向MQ服务器发送成功且订单数据处理成功,但向MQ服务器发送所述第一指令失败。
为方便理解,对情况(4)的具体流程进行说明,如图8所示:
情况(4)与情况(1)的区别在于,在业务服务器访问业务服务器,并对所述目标订单的订单数据处理成功的情况下,将会向MQ服务器发送所述第一指令,且在一定时间间隔后接收到MQ服务器发送的所述第一查询指令。
MQ服务器在暂存所述事件消息后,将会等待业务服务器发送的所述第一指令,在等待超过预设阈值后还未收到所述第一指令的情况下,说明书业务服务器发送所述第一指令失败。MQ服务器可以基于业务服务器提供的查询接口,向业务服务器发送第一查询请求,以确定对所述事件消息作何种处理。此种情况下,业务服务器对订单数据的处理成功,且向MQ服务器发送所述第一指令,但是可能由于网络等原因MQ服务器未接收到所述第一指令。MQ服务器同样可以在等待超过预设阈值后向业务服务器发送所述第一查询请求。
由于业务服务器对订单数据的处理成功,业务服务器可以向MQ服务器发送用于指示其发送所述事件消息的查询响应消息。MQ服务器在接收到所述查询响应消息后,将所述事件消息向应用服务器发送。这样,在业务服务器对订单数据处理成功时,应用服务器也可以接收到所述事件消息,进而对所述目标订单的订单索引进行处理。
本实施方式中,不论业务服务器对目标订单的订单数据处理成功或者失败,MQ服务器均可以根据上述处理结果对所述事件消息作对应的处理,以保证业务服务器和应用服务器二者要么均对订单处理成功,要么均对订单处理失败,保证业务服务器和应用服务器数据的一致性。
本发明实施例中,可选的,所述将所述事件消息发送给MQ服务器的步骤之后,所述方法还包括:
在接收到所述MQ服务器发送的第六消息的情况下,重新向MQ服务器发送所述事件消息,所述第六消息用于表征所述MQ服务器接收所述事件消息失败。
本实施方式涉及上述情况(2):事件消息向MQ服务器发送失败。
为方便理解,对情况(2)的具体流程进行说明:
情况(2)与情况(1)的区别在于,在业务服务器向MQ服务器发送所述事件消息之后,接收到了MQ服务器返回的第六消息,所述第六消息用于表征MQ服务器接收所述事件消息失败,可能是由于网络原因MQ服务器在预设时间内未接收到所述事件消息,也可能是MQ服务器接收到所述事件消息后对所述事件消息解析失败(数据丢失)。
此情况下,表示业务服务器对订单数据处理失败,基于重试机制,业务服务器可以向MQ服务器重新发送所述事件消息,直至接收到MQ服务器发送的所述第一消息。
本实施方式中,在业务服务器向MQ服务器发送所述事件消息失败的情况下,可以基于MQ服务器提供的重试机制,向MQ服务器重新发送所述事件消息,确保在消息的业务方能够产生消息发送至消息队列中。
综上所述,本发明实施例提供的订单数据处理方法,业务服务器响应于客户端发送的订单操作请求,可以生成所述订单操作请求对应的事件消息并将所述事件消息发送给MQ服务器;只有在业务服务器对订单数据处理成功的情况下,MQ服务器才会将事件消息发送至应用服务器,以指示应用服务器对目标订单的订单索引进行处理,以保证业务服务器对订单数据的处理和应用服务器对订单索引的处理的一致性,进而提高了后续订单查询处理的效率和准确性。
本发明实施例提供的订单处理方法之三,所述订单处理方法由MQ服务器执行。
所述订单处理方法包括:
在接收到业务服务器发送的事件消息的情况下,暂存所述事件消息;其中,所述事件消息基于客户端发送给业务服务器的订单操作请求生成,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
其中,在向应用服务器所述事件消息的情况下,所述事件消息用于指示所述应用服务器根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
可选的,在所述暂存所述事件消息之后,所述方法还包括:
向所述业务服务器发送第一消息,所述第一消息用于表征所述事件消息接收成功。
可选的,在所述暂存所述事件消息之后,所述方法还包括:
在接收到所述业务服务器发送的第一指令的情况下,向所述应用服务器发送所述事件消息。
可选的,在所述暂存所述事件消息之后,所述方法还包括:
在第二时刻,向所述业务服务器发送第一查询请求;其中,所述第一查询请求用于请求查询所述目标订单的处理状态,所述第二时刻与第一时刻之间的时间间隔超过预设阈值,且所述第一时刻至所述第二时刻之间未接收到所述业务服务器发送的第一指令,所述第一时刻为接收到所述事件消息的时刻,所述第一指令用于指示将所述事件消息发送至所述应用服务器;
在接收到所述业务服务器发送的查询响应消息的情况下,根据所述查询响应消息,对所述事件消息进行处理;
其中,所述查询响应消息用于指示以下任意一项:
将所述事件消息发送至所述应用服务器;
将所述事件消息删除。
需要说明的是,本实施例为与如图3和如图4所示的实施例中对应的MQ服务器的实施方式,因此,可以参见如图3和如图4所示的实施例中的相关说明,且可以达到相同的有益效果。为了避免重复说明,在此不再赘述。
本发明实施例还提供一种订单处理系统,如图9所示,所述订单处理系统应用服务器91、业务服务器92和MQ服务器93,其中:
业务服务器91,用于在接收到客户端发送的订单操作请求的情况下,生成所述订单操作请求对应的事件消息;其中,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
业务服务器91,用于向MQ服务器93发送所述事件消息;
MQ服务器93,用于暂存所述事件消息,并在接收到业务服务器92的指示的情况下,向应用服务器91发送所述事件消息;
应用服务器91还用于,在接收到所述事件消息的情况下,根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
需要说明的是,本实施例提供的订单处理系统可实现上述订单处理方法中应用服务器、业务服务器和MQ服务器实现的各个过程,且可以达到相同有益效果,为避免重复,这里不再赘述。
本发明实施例提供一种订单查询方法,所述方法包括:
应用服务器在接收到客户端发送的订单查询请求的情况下,获取用户标识对应的目标订单索引列表;其中,所述订单查询请求携带有目标订单的用户标识,所述订单查询请求用于请求查询所述目标订单,所述订单索引列表中的每一订单索引均包括订单标识和业务标识;
应用服务器基于所述目标订单索引列表中包括的N个业务标识,确定所述N个业务标识中每个业务标识对应的订单索引子列表,N为正整数;
应用服务器向所述N个业务标识对应的N个业务服务器发送第二查询请求,所述第二查询请求携带有每个所述业务标识对应的订单索引子列表;
业务服务器在接收到所述第二查询请求的情况下,查询并获取所述订单索引子列表中所有订单标识对应的目标订单清单;
业务服务器向应用服务器发送所述目标订单清单;
应用服务器在接收到N个所述业务服务器发送的N个所述目标订单清单的情况下,向所述客户端发送N个所述目标订单清单。
本实施例中,应用服务器存储并更新目标订单的订单索引,节约应用服务器的存储资源,减少数据冗余,且在接收到用户的订单查询请求时,应用服务器可以基于订单索引确定需要查询的业务服务器,并同样基于订单索引在对应的业务服务器批量查询订单数据,而无需遍历所有业务服务器中存储的所有订单数据,减少了响应于查询请求所需执行的外部IO操作和所需的数据处理资源,从而缩短了查询请求的响应时间。
下面从应用服务器的角度对本发明实施例提供的订单查询方法进行介绍。
请参见图10,图10是本发明实施例提供的订单查询方法的流程示意图,所述订单查询方法由应用服务器执行。
如图10所示,所述订单查询方法包括:
步骤1001、接收客户端发送的订单查询请求,所述订单查询请求携带有目标订单的的用户标识;
步骤1002、响应于所述订单查询请求,获取用户标识对应的目标订单索引列表,所述订单索引列表中的每一订单索引均包括订单标识和业务标识;
步骤1003、基于所述目标订单索引列表中包括的N个业务标识,确定所述N个业务标识中每个业务标识对应的订单索引子列表,N为正整数;
步骤1004、向每一所述业务标识对应的业务服务器发送第二查询请求,所述第二查询请求携带有所述业务标识对应的订单索引子列表,所述第二查询请求用于请求查询并返回目标订单清单,所述目标订单清单包括所述订单索引子列表中所有订单标识对应的目标订单;
步骤1005、在接收到所述N个业务服务器发送的N个目标订单清单的情况下,向所述客户端发送所述N个目标订单清单。
本发明实施例中,业务服务器可以存储和维护订单数据,所述订单数据可以理解为订单的详情、属性等实体数据。应用服务器可以存储和维护订单索引,节约应用服务器的存储资源,减少数据冗余。其中,所述订单索引包括订单的标识信息,如订单的用户标识(例如用户ID)、订单的订单标识(例如订单号)、订单所属业务的业务标识(例如业务名称)等信息。可选的,所述订单索引还可以包括订单的下单时间、所述事件消息的创建时间或者更新时间、所述订单索引的键值等。可以理解的是,所述订单索引包括的信息具体可根据实际情况决定,本发明实施例对此不作限定。
需要说明的是,本发明实施例中应用服务器对订单索引的处理和业务服务器对订单数据的处理可以基于上述的订单处理方法的实施例的具体实施方式进行,也可以基于其他实施方式进行,具体可根据实际情况决定,本发明实施例在此不作限定。
本实施例中,应用服务器响应于客户端发送的订单查询请求,可以确定本地存储的订单索引中与所述用户标识对应的目标订单索引列表,进而可以根据所述目标订单索引列表,确定所需查询的N个业务服务器(N个业务标识)以及需要在N个业务服务器中的每一业务服务器查询的订单。这样,应用服务器响应于用户的“我的订单”的查询请求,无需遍历所有业务服务器的所有订单数据,可以根据订单索引有针对性的获取订单数据,所需执行的外部IO操作可以大幅度减少,缩短了对用户进行“我的订单”查询的响应时间,降低了需要占用的数据处理资源。
具体实现时,所述订单查询请求可以是基于用户在客户端执行“我的订单”查询操作生成的。应用服务器响应于接收到的所述订单查询请求,可以根据所述订单查询请求携带的用户标识,访问应用服务器的数据库,以查询应用程序的数据库中存储的与所述用户标识匹配的目标订单索引列表。
其中,所述订单索引表中的每一订单索引的数据格式可以如表2所示。
表2订单索引的数据结构
字段 | 类型 | 说明 |
id | number | 索引表主键 |
bizid | number | 业务标识 |
bizorderid | varchar | 订单标识 |
userid | number | 用户标识 |
status | number | 操作类型标识 |
ordertime | timestamp | 下单时间 |
createtime | timestamp | 消息创建时间 |
updatetime | timestamp | 消息更新时间 |
应用服务器可以确定所述目标订单索引列表中包括的N个业务标识,同时根据所述业务标识对所述目标订单索引列表中的订单索引进行分类,确定每一业务标识对应的订单索引子列表。所述业务标识可以用于指示当前请求的用户的订单涉及的业务方,进而应用服务器可以仅调用这些业务方订单查询接口获取订单数据,而无需遍历所有业务方的订单查询接口。
需要说明的是,上述订单查询接口可以为业务服务器基于订单索引创建的批量查询接口。区别于现有技术中仅基于用户标识进行查询的查询接口,所述订单查询接口可以以多个订单标识作为查询参数,批量查询所述多个订单标识对应的订单数据并返回应用服务器。应用服务器可以基于所述订单索引子列表中包括的多个订单标识,实现订单数据的批量查询。
在一种可选的实施方式中,若所述订单索引还包括所述目标订单的下单时间,所述订单查询接口也可以下单时间作为查询参数,以批量查询在某一时间段内的订单数据。
本发明实施例提供的订单查询方法,应用服务器响应于客户端发送的订单查询请求,可以获取用户标识对应的目标订单索引列表,并确定所述目标订单索引列表中相关联的N个业务标识,以及每个所述业务标识对应的订单索引子列表;之后可以根据每一业务标识对应的订单索引子列表,向对应的业务服务器批量查询目标订单清单。这样,应用服务器响应于用户的“我的订单”的查询请求,无需遍历所有业务服务器的所有订单数据,可以根据订单索引有针对性的获取订单数据,所需执行的外部IO操作可以大幅度减少,缩短了对用户进行“我的订单”查询的响应时间,降低了需要占用的数据处理资源。
本发明实施例中,应用服务器向客户端发送所述目标订单清单之前,可以对所述目标订单清单进行排序和分页。所述对所述目标订单清单进行排序和分页的具体实施方式可以包括但不限于以下两种:
第一种实施方式,所述订单索引还包括订单的下单时间;所述获取所述用户标识对应的目标订单索引列表,包括:
获取所述用户标识对应的全部订单索引;
按照每一订单的下单时间,对所述全部订单索引进行排序,并按照预设每页订单数,对排序后的所述全部订单索引进行分页,得到所述目标订单索引列表。
进一步的,所述在接收到N个所述业务服务器发送的目标订单清单的情况下,将N个所述目标订单清单发送至所述客户端,包括:
在接收到N个所述业务服务器发送的目标订单清单的情况下,基于所述目标订单索引列表的排序情况和分页情况,确定所述目标订单清单中各订单的排序情况和分页情况,得到所述目标订单列表;
向客户端发送所述目标订单列表。
本实施方式中,应用服务器在根据用户标识获取订单索引列表的同时,可以请求数据库对所有与所述用户标识匹配的订单索引按照下单时间进行排序和分页。之后,应用服务器在获取到业务服务器发送的目标订单列表的情况下,可以按照所述订单索引列表的分页和排序,确定所述目标订单列表中对应的订单数据,并发送至客户端。
第二种实施方式,所述在接收到N个所述业务服务器发送的目标订单清单的情况下,将N个所述目标订单清单发送至所述客户端,包括;
在接收到N个所述业务服务器发送的目标订单清单的情况下,按照每一订单的下单时间,对N个所述目标订单清单进行排序,并按照预设每页订单数,对排序后的N个所述目标订单清单进行分页,得到目标订单列表。
本实施方式中,应用服务器在获取到业务服务器发送的目标订单列表的情况下,再对获取的N个目标订单列表进行分页和排序,确定所述目标订单列表中对应的订单数据,并发送至客户端。
以下对本发明实施例提供的订单查询方法的一种具体实施方式进行说明,如图11所示:
应用服务器在接收到客户端发送的订单查询请求时,可以获取其中携带的用户标识,之后应用服务器可以访问应用服务器的数据库获取所述用户标识匹配的目标订单索引列表,并请求应用服务器的数据库对目标订单索引列表进行排序和分页。之后,应用服务器在获取应用服务器的数据库发送的所述目标订单索引列表,可以确定其中包括的N个业务标识,以及所述N个业务标识中每一业务标识对应的订单标识列表(订单索引子列表)。基于订单标识列表可以向对应的业务服务器批量查询订单数据,获取目标订单清单返回至客户端,以向用户展示。
本发明实施例还提供一种订单查询系统,如图12所示,所述订单查询系统包括应用服务器121和业务服务器122,其中:
应用服务器121,用于在接收到客户端发送的订单查询请求的情况下,获取用户标识对应的目标订单索引列表;其中,所述订单查询请求携带有目标订单的用户标识,所述订单查询请求用于请求查询所述目标订单,所述订单索引列表中的每一订单索引均包括订单标识和业务标识;
应用服务器121,还用于基于所述目标订单索引列表中包括的N个业务标识,确定所述N个业务标识中每个业务标识对应的订单索引子列表,N为正整数;
应用服务器121,还用于向所述N个业务标识对应的N个业务服务器122发送第二查询请求,所述第二查询请求携带有每个所述业务标识对应的订单索引子列表;
业务服务器122,用于在接收到所述第二查询请求的情况下,查询并获取所述订单索引子列表中所有订单标识对应的目标订单清单;
业务服务器122,用于向应用服务器121发送所述目标订单清单;
应用服务器121,还用于在接收到N个业务服务器122发送的N个所述目标订单清单的情况下,向所述客户端发送N个所述目标订单清单。
需要说明的是,本实施例提供的订单查询系统可实现上述订单查询方法中应用服务器和业务服务器实现的各个过程,且可以达到相同有益效果,为避免重复,这里不再赘述。
请参见图13,图13是本发明实施例提供的订单处理装置1300的结构图,订单处理装置1100设置于应用服务器中。
如图13所示,订单处理装置1300包括,:
第一接收模块1301,用于接收消息队列服务器发送的事件消息;其中,所述事件消息基于客户端发送给业务服务器的订单操作请求生成,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
第一处理模块1302,用于响应于所述事件消息,根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
可选的,所述根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理,包括以下任一项:
存储所述目标订单的订单索引;
修改所述目标订单的订单索引;
删除所述目标订单的订单索引。
本发明实施例中,订单处理装置1300可实现如图3所示的方法实施例中应用服务器实现的各个过程,且可以达到相同有益效果,为避免重复,这里不再赘述。
请参见图14,图14是本发明实施例提供的订单处理装置1400的结构图,订单处理装置1400设置于业务服务器中。
如图14所示,订单处理装置1400包括:
生成模块1401,用于在接收到客户端发送的订单操作请求的情况下,响应于所述订单操作请求,生成所述订单操作请求对应的事件消息;其中,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
第一发送模块1402,用于将所述事件消息发送给消息队列服务器;
其中,在指示所述消息队列服务器向应用服务器发送所述事件消息,且所述应用服务器接收到所述事件消息的情况下,所述事件消息用于指示所述应用服务器根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
可选的,订单处理装置1400还包括:
执行模块,用于在接收到所述消息队列服务器发送的第一消息的情况下,基于所述订单操作请求对应的操作,对所述目标订单进行处理,所述第一消息用于表征所述事件消息接收成功;
第二发送模块,用于在对所述目标订单处理成功的情况下,向所述消息队列服务器发送第一指令,所述第一指令用于指示所述消息队列服务器向应用服务器发送所述事件消息。
可选的,订单处理装置1400还包括:
第三发送模块,用于在接收到所述消息队列服务器发送的第一查询请求的情况下,向所述消息队列服务器发送查询响应消息,所述第一查询请求用于请求查询所述目标订单的处理状态;
其中,在对所述目标订单处理成功的情况下,所述查询响应消息用于指示所述消息队列服务器向所述应用服务器发送所述事件消息;
在对所述目标订单处理失败的情况下,所述查询响应消息用于指示所述消息队列服务器删除所述事件消息。
可选的,所述对所述目标订单处理失败,包括:
接收到所述业务服务器的数据库发送的第二消息,所述第二消息用于表征所述目标订单的订单数据处理失败。
本发明实施例中,订单处理装置1400可实现如图4所示的方法实施例中业务服务器实现的各个过程,且可以达到相同有益效果,为避免重复,这里不再赘述。
请参见图15,图15是本发明实施例提供的订单处理装置1500的结构图,订单处理装置1500设置于MQ服务器中。
如图15所示,订单处理装置1500包括:
存储模块1501,用于在接收到业务服务器发送的事件消息的情况下,暂存所述事件消息;其中,所述事件消息基于客户端发送给业务服务器的订单操作请求生成,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
其中,在向应用服务器所述事件消息的情况下,所述事件消息用于指示所述应用服务器根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
可选的,订单处理装置1500还包括:
第四发送模块,用于向所述业务服务器发送第一消息,所述第一消息用于表征所述事件消息接收成功。
可选的,订单处理装置1500还包括:
第五发送模块,用于在接收到所述业务服务器发送的第一指令的情况下,向所述应用服务器发送所述事件消息。
可选的,订单处理装置1500还包括:
第六发送模块,用于在第二时刻,向所述业务服务器发送第一查询请求;其中,所述第一查询请求用于请求查询所述目标订单的处理状态,所述第二时刻与第一时刻之间的时间间隔超过预设阈值,且所述第一时刻至所述第二时刻之间未接收到所述业务服务器发送的第一指令,所述第一时刻为接收到所述事件消息的时刻,所述第一指令用于指示将所述事件消息发送至所述应用服务器;
在接收到所述业务服务器发送的查询响应消息的情况下,根据所述查询响应消息,对所述事件消息进行处理;
其中,所述查询响应消息用于指示以下任意一项:
将所述事件消息发送至所述应用服务器;
将所述事件消息删除。
本发明实施例中,订单处理装置1500可实现如上述方法实施例中MQ服务器实现的各个过程,且可以达到相同有益效果,为避免重复,这里不再赘述。
请参见图16,图16是本发明实施例提供的订单查询装置1600的结构图,订单查询装置1600设置于应用服务器中。
如图16所示,订单查询装置1600包括:
第二接收模块1601,用于接收客户端发送的订单查询请求,所述订单查询请求携带有目标订单的用户标识;
获取模块1602,用于响应于所述订单查询请求,获取用户标识对应的目标订单索引列表,所述订单索引列表中的每一订单索引均包括订单标识和业务标识;
确定模块1603,用于基于所述目标订单索引列表中包括的N个业务标识,确定所述N个业务标识中每个业务标识对应的订单索引子列表,N为正整数;
第七发送模块1604,用于向所述N个业务标识对应的N个业务服务器发送第二查询请求,所述第二查询请求携带有每个所述业务标识对应的订单索引子列表,所述第二查询请求用于请求查询并返回目标订单清单,所述目标订单清单包括所述订单索引子列表中所有订单标识对应的目标订单;
第八发送模块1605,用于在接收到所述N个业务服务器发送的N个目标订单清单的情况下,向所述客户端发送所述N个目标订单清单。
可选的,所述订单索引还包括订单的下单时间,获取模块1602包括:
获取单元,用于获取所述用户标识对应的全部订单索引;
处理单元,用于基于每一所述订单索引中订单的下单时间,对所述全部订单索引进行排序。
可选的,第八发送模块1605包括:
确定单元,用于在接收到所述N个业务服务器发送的N个目标订单清单的情况下,基于所述目标订单索引列表的排序情况和分页情况,确定所述目标订单清单中各订单的排序情况和分页情况,得到所述目标订单列表;
发送单元,用于向客户端发送所述目标订单列表。
本发明实施例中,订单查询装置1600可实现如图10所示的方法实施例中应用服务器实现的各个过程,且可以达到相同有益效果,为避免重复,这里不再赘述。
本发明实施例还提供了一种电子设备,如图17所示,包括处理器1701、通信接口1702、存储器1703和通信总线1704,其中,处理器1701,通信接口1702,存储器1703通过通信总线1704完成相互间的通信,
存储器1703,用于存放计算机程序;
处理器1701,用于执行存储器1703上所存放的程序时,实现如下步骤:
接收消息队列服务器发送的事件消息;其中,所述事件消息基于客户端发送给业务服务器的订单操作请求生成,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
响应于所述事件消息,根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
或者,实现如下步骤:
在接收到客户端发送的订单操作请求的情况下,响应于所述订单操作请求,生成所述订单操作请求对应的事件消息;其中,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
将所述事件消息发送给消息队列服务器;
其中,在指示所述消息队列服务器向应用服务器发送所述事件消息,且所述应用服务器接收到所述事件消息的情况下,所述事件消息用于指示所述应用服务器根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
或者,实现如下步骤:
在接收到业务服务器发送的事件消息的情况下,暂存所述事件消息;其中,所述事件消息基于客户端发送给业务服务器的订单操作请求生成,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
其中,在向应用服务器所述事件消息的情况下,所述事件消息用于指示所述应用服务器根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
或者,实现如下步骤:
接收客户端发送的订单查询请求,所述订单查询请求携带有目标订单的用户标识;
响应于所述订单查询请求,获取用户标识对应的目标订单索引列表,所述订单索引列表中的每一订单索引均包括订单标识和业务标识;
基于所述目标订单索引列表中包括的N个业务标识,确定所述N个业务标识中每个业务标识对应的订单索引子列表,N为正整数;
向所述N个业务标识对应的N个业务服务器发送第二查询请求,所述第二查询请求携带有每个所述业务标识对应的订单索引子列表,所述第二查询请求用于请求查询并返回目标订单清单,所述目标订单清单包括所述订单索引子列表中所有订单标识对应的目标订单;
在接收到所述N个业务服务器发送的N个目标订单清单的情况下,向所述客户端发送所述N个目标订单清单。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的订单处理方法或者订单查询方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的订单处理方法或者订单查询方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (23)
1.一种订单处理方法,其特征在于,包括:
业务服务器在接收到客户端发送的订单操作请求的情况下,生成所述订单操作请求对应的事件消息;其中,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
业务服务器向消息队列服务器发送所述事件消息;
消息队列服务器暂存所述事件消息,并在接收到业务服务器的指示的情况下,向应用服务器发送所述事件消息;
应用服务器在接收到所述事件消息的情况下,应用服务器根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
2.一种订单处理方法,由应用服务器执行,其特征在于,包括:
接收消息队列服务器发送的事件消息;其中,所述事件消息基于客户端发送给业务服务器的订单操作请求生成,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
响应于所述事件消息,根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
3.根据权利要求2所述的方法,其特征在于,所述根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理,包括以下任一项:
存储所述目标订单的订单索引;
修改所述目标订单的订单索引;
删除所述目标订单的订单索引。
4.一种订单处理方法,由业务服务器执行,其特征在于,包括:
在接收到客户端发送的订单操作请求的情况下,响应于所述订单操作请求,生成所述订单操作请求对应的事件消息;其中,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
将所述事件消息发送给消息队列服务器;
其中,在指示所述消息队列服务器向应用服务器发送所述事件消息,且所述应用服务器接收到所述事件消息的情况下,所述事件消息用于指示所述应用服务器根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
5.根据权利要求4所述的方法,其特征在于,所述将所述事件消息发送给消息队列服务器的步骤之后,所述方法还包括:
在接收到所述消息队列服务器发送的第一消息的情况下,基于所述订单操作请求对应的操作,对所述目标订单进行处理,所述第一消息用于表征所述事件消息接收成功;
在对所述目标订单处理成功的情况下,向所述消息队列服务器发送第一指令,所述第一指令用于指示所述消息队列服务器向应用服务器发送所述事件消息。
6.根据权利要求5所述的方法,其特征在于,所述接收到所述消息队列服务器发送的第一消息的步骤之后,所述方法还包括:
在接收到所述消息队列服务器发送的第一查询请求的情况下,向所述消息队列服务器发送查询响应消息,所述第一查询请求用于请求查询所述目标订单的处理状态;
其中,在对所述目标订单处理成功的情况下,所述查询响应消息用于指示所述消息队列服务器向所述应用服务器发送所述事件消息;
在对所述目标订单处理失败的情况下,所述查询响应消息用于指示所述消息队列服务器删除所述事件消息。
7.根据权利要求6所述的方法,其特征在于,所述对所述目标订单处理失败,包括:
接收到所述业务服务器的数据库发送的第二消息,所述第二消息用于表征所述目标订单的订单数据处理失败。
8.一种订单处理方法,由消息队列服务器执行,其特征在于,包括:
在接收到业务服务器发送的事件消息的情况下,暂存所述事件消息;
其中,所述事件消息基于客户端发送给业务服务器的订单操作请求生成,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
其中,在向应用服务器所述事件消息的情况下,所述事件消息用于指示所述应用服务器根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
9.根据权利要求8所述的方法,其特征在于,在所述暂存所述事件消息之后,所述方法还包括:
向所述业务服务器发送第一消息,所述第一消息用于表征所述事件消息接收成功。
10.根据权利要求8所述的方法,其特征在于,在所述暂存所述事件消息之后,所述方法还包括:
在接收到所述业务服务器发送的第一指令的情况下,向所述应用服务器发送所述事件消息。
11.根据权利要求8所述的方法,其特征在于,在所述暂存所述事件消息之后,所述方法还包括:
在第二时刻,向所述业务服务器发送第一查询请求;其中,所述第一查询请求用于请求查询所述目标订单的处理状态,所述第二时刻与第一时刻之间的时间间隔超过预设阈值,且所述第一时刻至所述第二时刻之间未接收到所述业务服务器发送的第一指令,所述第一时刻为接收到所述事件消息的时刻,所述第一指令用于指示将所述事件消息发送至所述应用服务器;
在接收到所述业务服务器发送的查询响应消息的情况下,根据所述查询响应消息,对所述事件消息进行处理;
其中,所述查询响应消息用于指示以下任意一项:
将所述事件消息发送至所述应用服务器;
将所述事件消息删除。
12.一种订单处理系统,其特征在于,包括应用服务器、业务服务器和消息队列服务器,其中:
所述业务服务器,用于在接收到客户端发送的订单操作请求的情况下,生成所述订单操作请求对应的事件消息;其中,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
所述业务服务器,用于向所述消息队列服务器发送所述事件消息;
所述消息队列服务器,用于暂存所述事件消息,并在接收到所述业务服务器的指示的情况下,向所述应用服务器发送所述事件消息;
所述应用服务器还用于,在接收到所述事件消息的情况下,根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
13.一种订单查询方法,其特征在于,包括:
应用服务器在接收到客户端发送的订单查询请求的情况下,获取用户标识对应的目标订单索引列表;其中,所述订单查询请求携带有目标订单的用户标识,所述订单查询请求用于请求查询所述目标订单,所述订单索引列表中的每一订单索引均包括订单标识和业务标识;
应用服务器基于所述目标订单索引列表中包括的N个业务标识,确定所述N个业务标识中每个业务标识对应的订单索引子列表,N为正整数;
应用服务器向所述N个业务标识对应的N个业务服务器发送第二查询请求,所述第二查询请求携带有每个所述业务标识对应的订单索引子列表;
业务服务器在接收到所述第二查询请求的情况下,查询并获取所述订单索引子列表中所有订单标识对应的目标订单清单;
业务服务器向应用服务器发送所述目标订单清单;
应用服务器在接收到N个所述业务服务器发送的N个所述目标订单清单的情况下,向所述客户端发送N个所述目标订单清单。
14.一种订单查询方法,由应用服务器执行,其特征在于,包括:
接收客户端发送的订单查询请求,所述订单查询请求携带有目标订单的用户标识;
响应于所述订单查询请求,获取所述用户标识对应的目标订单索引列表,所述订单索引列表中的每一订单索引均包括订单标识和业务标识;
基于所述目标订单索引列表中包括的N个业务标识,确定所述N个业务标识中每个业务标识对应的订单索引子列表,N为正整数;
向所述N个业务标识对应的N个业务服务器发送第二查询请求,所述第二查询请求携带有每个所述业务标识对应的订单索引子列表,所述第二查询请求用于请求查询并返回目标订单清单,所述目标订单清单包括所述订单索引子列表中所有订单标识对应的目标订单;
在接收到所述N个业务服务器发送的N个目标订单清单的情况下,向所述客户端发送所述N个目标订单清单。
15.根据权利要求14所述的方法,其特征在于,所述订单索引还包括订单的下单时间;所述获取所述用户标识对应的目标订单索引列表,包括:
获取所述用户标识对应的全部订单索引;
基于每一所述订单索引中订单的下单时间,对所述全部订单索引进行排序;
按照预设单页订单索引数,对排序后的所述全部订单索引进行分页,得到所述目标订单索引列表。
16.根据权利要求15所述的方法,其特征在于,所述在接收到所述N个业务服务器发送的N个目标订单清单的情况下,向所述客户端发送所述N个目标订单清单,包括:
在接收到所述N个业务服务器发送的N个目标订单清单的情况下,基于所述目标订单索引列表的排序情况和分页情况,确定所述目标订单清单中各订单的排序情况和分页情况,得到所述目标订单列表;
向客户端发送所述目标订单列表。
17.一种订单查询系统,其特征在于,包括应用服务器和业务服务器,其中:
所述应用服务器,用于在接收到客户端发送的订单查询请求的情况下,获取用户标识对应的目标订单索引列表;其中,所述订单查询请求携带有目标订单的用户标识,所述订单查询请求用于请求查询所述目标订单,所述订单索引列表中的每一订单索引均包括订单标识和业务标识;
所述应用服务器,还用于基于所述目标订单索引列表中包括的N个业务标识,确定所述N个业务标识中每个业务标识对应的订单索引子列表,N为正整数;
所述应用服务器,还用于向所述N个业务标识对应的N个所述业务服务器发送第二查询请求,所述第二查询请求携带有每个所述业务标识对应的订单索引子列表;
所述业务服务器,用于在接收到所述第二查询请求的情况下,查询并获取所述订单索引子列表中所有订单标识对应的目标订单清单;
所述业务服务器,用于向所述应用服务器发送所述目标订单清单;
所述应用服务器,还用于在接收到N个所述业务服务器发送的N个所述目标订单清单的情况下,向所述客户端发送N个所述目标订单清单。
18.一种订单处理装置,其特征在于,所述订单处理装置设置于应用服务器中,所述订单处理装置包括:
第一接收模块,用于接收消息队列服务器发送的事件消息;其中,所述事件消息基于客户端发送给业务服务器的订单操作请求生成,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
第一处理模块,用于响应于所述事件消息,根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
19.一种订单处理装置,其特征在于,所述订单处理装置设置于业务服务器中,所述订单处理装置包括:
生成模块,用于在接收到客户端发送的订单操作请求的情况下,响应于所述订单操作请求,生成所述订单操作请求对应的事件消息;其中,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
第一发送模块,用于将所述事件消息发送给消息队列服务器;
其中,在指示所述消息队列服务器向应用服务器发送所述事件消息,且所述应用服务器接收到所述事件消息的情况下,所述事件消息用于指示所述应用服务器根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
20.一种订单处理装置,其特征在于,所述订单处理装置设置于消息队列服务器中,所述订单处理装置包括:
存储模块,用于在接收到业务服务器发送的事件消息的情况下,暂存所述事件消息;其中,所述事件消息基于客户端发送给业务服务器的订单操作请求生成,所述事件消息携带有目标订单的订单索引和所述订单操作请求的类型标识,所述目标订单为所述订单操作请求作用的订单,所述目标订单的订单索引包括所述目标订单的用户标识、所述目标订单的订单标识和所述目标订单的业务标识;
其中,在向应用服务器所述事件消息的情况下,所述事件消息用于指示所述应用服务器根据所述订单操作请求的类型标识,对所述目标订单的订单索引进行处理。
21.一种订单查询装置,其特征在于,所述订单查询装置设置于应用服务器中,所述订单查询装置包括:
第二接收模块,用于接收客户端发送的订单查询请求,所述订单查询请求携带有目标订单的用户标识;
获取模块,用于响应于所述订单查询请求,获取用户标识对应的目标订单索引列表,所述订单索引列表中的每一订单索引均包括订单标识和业务标识;
确定模块,用于基于所述目标订单索引列表中包括的N个业务标识,确定所述N个业务标识中每个业务标识对应的订单索引子列表,N为正整数;
第七发送模块,用于向所述N个业务标识对应的N个业务服务器发送第二查询请求,所述第二查询请求携带有每个所述业务标识对应的订单索引子列表,所述第二查询请求用于请求查询并返回目标订单清单,所述目标订单清单包括所述订单索引子列表中所有订单标识对应的目标订单;
第八发送模块,用于在接收到所述N个业务服务器发送的N个目标订单清单的情况下,向所述客户端发送所述N个目标订单清单。
22.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求2或3任一所述的方法的步骤,或者实现权利要求4至7任一项所述的方法的步骤,或者实现权利要求8至11任一项所述的方法的步骤,或者实现权利要求14至16任一项所述的方法的步骤。
23.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求2或3任一所述的方法的步骤,或者实现权利要求4至7任一项所述的方法的步骤,或者实现权利要求8至11任一项所述的方法的步骤,或者实现权利要求14至16任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110407168.4A CN113127231B (zh) | 2021-04-15 | 2021-04-15 | 订单处理、订单查询方法、装置、系统及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110407168.4A CN113127231B (zh) | 2021-04-15 | 2021-04-15 | 订单处理、订单查询方法、装置、系统及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113127231A true CN113127231A (zh) | 2021-07-16 |
CN113127231B CN113127231B (zh) | 2023-08-29 |
Family
ID=76776902
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110407168.4A Active CN113127231B (zh) | 2021-04-15 | 2021-04-15 | 订单处理、订单查询方法、装置、系统及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113127231B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115033577A (zh) * | 2022-08-15 | 2022-09-09 | 深圳市星卡软件技术开发有限公司 | 设备订单数据的存储方法、查询方法及装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140330835A1 (en) * | 2013-05-06 | 2014-11-06 | International Business Machines Corporation | Document order management via relaxed node indexing |
US20150032486A1 (en) * | 2013-07-29 | 2015-01-29 | Amadeus S.A.S. | Processing information queries in a distributed information processing environment |
CN106296352A (zh) * | 2016-08-04 | 2017-01-04 | 多点生活(中国)网络科技有限公司 | 订单数据处理方法和装置 |
US20170315796A1 (en) * | 2016-04-29 | 2017-11-02 | Splunk, Inc. | Application deployment for data intake and query system |
CN107944039A (zh) * | 2017-12-07 | 2018-04-20 | 携程旅游网络技术(上海)有限公司 | 机票数据的调取方法、系统、存储介质和电子设备 |
US20180189366A1 (en) * | 2016-12-29 | 2018-07-05 | UBTECH Robotics Corp. | Data processing method, device and system of query server |
CN108390924A (zh) * | 2018-02-07 | 2018-08-10 | 善林(上海)金融信息服务有限公司 | 订单执行方法及装置 |
CN109918442A (zh) * | 2019-01-24 | 2019-06-21 | 中国联合网络通信集团有限公司 | 一种数据的处理方法及装置 |
US20190207892A1 (en) * | 2017-12-29 | 2019-07-04 | Facebook, Inc. | Techniques for extensible message indexing |
US20190251195A1 (en) * | 2018-02-13 | 2019-08-15 | International Business Machines Corporation | Minimizing processing using an index when non-leading columns match an aggregation key |
-
2021
- 2021-04-15 CN CN202110407168.4A patent/CN113127231B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140330835A1 (en) * | 2013-05-06 | 2014-11-06 | International Business Machines Corporation | Document order management via relaxed node indexing |
US20150032486A1 (en) * | 2013-07-29 | 2015-01-29 | Amadeus S.A.S. | Processing information queries in a distributed information processing environment |
US20170315796A1 (en) * | 2016-04-29 | 2017-11-02 | Splunk, Inc. | Application deployment for data intake and query system |
CN106296352A (zh) * | 2016-08-04 | 2017-01-04 | 多点生活(中国)网络科技有限公司 | 订单数据处理方法和装置 |
US20180189366A1 (en) * | 2016-12-29 | 2018-07-05 | UBTECH Robotics Corp. | Data processing method, device and system of query server |
CN107944039A (zh) * | 2017-12-07 | 2018-04-20 | 携程旅游网络技术(上海)有限公司 | 机票数据的调取方法、系统、存储介质和电子设备 |
US20190207892A1 (en) * | 2017-12-29 | 2019-07-04 | Facebook, Inc. | Techniques for extensible message indexing |
CN108390924A (zh) * | 2018-02-07 | 2018-08-10 | 善林(上海)金融信息服务有限公司 | 订单执行方法及装置 |
US20190251195A1 (en) * | 2018-02-13 | 2019-08-15 | International Business Machines Corporation | Minimizing processing using an index when non-leading columns match an aggregation key |
CN109918442A (zh) * | 2019-01-24 | 2019-06-21 | 中国联合网络通信集团有限公司 | 一种数据的处理方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115033577A (zh) * | 2022-08-15 | 2022-09-09 | 深圳市星卡软件技术开发有限公司 | 设备订单数据的存储方法、查询方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113127231B (zh) | 2023-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109495524B (zh) | 一种物联网资源订阅的方法、设备和系统 | |
CN104615391A (zh) | 一种文件预览方法、装置及系统 | |
US10430414B2 (en) | Method and apparatus for sharing environment context | |
CN111797091A (zh) | 数据库中数据查询的方法、装置、电子设备和存储介质 | |
EP3297302A1 (en) | Method and apparatus for group management during machine-to-machine communication | |
CN111038906A (zh) | 一种订单分拣方法和装置 | |
CN111460129A (zh) | 标识生成的方法、装置、电子设备和存储介质 | |
CN111582815A (zh) | 一种核电站的工程管理方法、装置、终端设备及存储介质 | |
CN111694620B (zh) | 第三方业务的交互方法、装置、设备及计算机存储介质 | |
CN113127231B (zh) | 订单处理、订单查询方法、装置、系统及电子设备 | |
CN113014618B (zh) | 消息处理方法、系统和电子设备 | |
CN112105026A (zh) | 一种授权控制的方法、装置以及存储介质 | |
CN113821521A (zh) | 分布式标识生成方法、装置、电子设备及存储介质 | |
CN112969198A (zh) | 数据传输方法、终端及存储介质 | |
CN110059091B (zh) | 索引构建的方法、装置、客户端、服务器及系统 | |
CN111045928A (zh) | 一种接口数据测试方法、装置、终端及存储介质 | |
JP2896394B2 (ja) | ファイルサーバ装置 | |
CN113256240B (zh) | 消息的处理方法、装置和服务器 | |
CN110716911A (zh) | 数据处理方法及装置、电子设备、存储介质 | |
CN112749190B (zh) | 数据查询方法、装置、计算设备及计算机存储介质 | |
US20050076135A1 (en) | UDDI web service registry system based on an ebXML registry and management method therefor | |
CN109600452B (zh) | 服务器集群、消息推送方法及相关服务器 | |
CN112182085A (zh) | 数据导出方法、装置、设备及存储介质 | |
CN111460338B (zh) | 信息查询方法和装置 | |
CN116260853A (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 |