CN110324384A - 数据推送的方法和装置 - Google Patents

数据推送的方法和装置 Download PDF

Info

Publication number
CN110324384A
CN110324384A CN201810289733.XA CN201810289733A CN110324384A CN 110324384 A CN110324384 A CN 110324384A CN 201810289733 A CN201810289733 A CN 201810289733A CN 110324384 A CN110324384 A CN 110324384A
Authority
CN
China
Prior art keywords
data
client
pushing
channel object
push
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
Application number
CN201810289733.XA
Other languages
English (en)
Other versions
CN110324384B (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.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology 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 Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201810289733.XA priority Critical patent/CN110324384B/zh
Publication of CN110324384A publication Critical patent/CN110324384A/zh
Application granted granted Critical
Publication of CN110324384B publication Critical patent/CN110324384B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/465Distributed object oriented systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • 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/55Push-based network services
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了数据推送的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:根据数据推送需求,从数据集合中获取数据;按照预设的轮询方式确定通道对象,并向通道对象对应的客户端推送数据;判断数据是否推送成功,若是,则确定数据推送成功,否则确定数据推送失败。该实施方式按照预设的轮询方式确定通道对象,进而根据通道对象推送数据,能够对网络异常和数据处理异常做容错处理,减少了数据丢失率,提高了数据推送的效率。

Description

数据推送的方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据推送的方法和装置。
背景技术
客户端/服务器(Client/Server)结构,简称C/S结构,是一种基于网络的系统体系架构模式。在C/S结构的系统中,应用程序分为客户端和服务器两大部分,它把较复杂的计算和管理任务交给服务器,而把一些频繁与用户打交道的任务交给客户端机器。通过这种方式,将任务合理分配到客户端和服务器,既充分利用了两端硬件环境的优势,又实现了网络上信息资源的共享。
由于客户端部分为每个用户所专有,而服务器则由所有用户共享其信息与功能,因此实际应用中,服务器上的数据需要被推送至客户端。图1是现有技术数据推送的处理过程的示意图。如图1所示,现有技术数据推送的处理过程为:步骤S101,若干个客户端向服务器发出请求,请求服务器推送数据给客户端;步骤S102,服务器从数据集合中随机选取一条数据;步骤S103,服务器选择一个客户端并推送数据(服务器会重复执行S102和S103,依次向若干客户端推送数据);步骤S104,客户端处理接收到的数据。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:一、当服务器向客户端发送数据的时候,如果发生网络异常,此数据将丢失;二、当服务器把数据成功推送至客户端之后,如果客户端在处理数据时发生异常,此数据实质上也是丢失的。
发明内容
有鉴于此,本发明实施例提供一种数据推送的方法和装置,能够对网络异常和数据处理异常做容错处理,减少了数据丢失率,提高了数据推送的效率。
为实现上述目的,根据本发明实施例的一个方面,提供了一种数据推送的方法。
本发明实施例的一种数据推送的方法,包括:根据数据推送需求,从数据集合中获取数据;按照预设的轮询方式确定通道对象,并向所述通道对象对应的客户端推送所述数据;判断所述数据是否推送成功,若是,则确定所述数据推送成功,否则确定所述数据推送失败。
可选地,所述通道对象与所述通道对象对应的客户端之间的连接方式是双向通信长连接。
可选地,按照预设的轮询方式确定通道对象,并向所述通道对象对应的客户端推送所述数据包括:按照预设的轮询方式选择目标通道对象,向所述目标通道对象对应的客户端推送所述数据,并且设置所述目标通道对象的下一个通道对象为新的目标通道对象,在所述数据推送失败时,向所述新的目标通道对象对应的客户端推送所述数据。
可选地,判断所述数据是否推送成功包括:判断所述数据是否被传输至所述客户端;当所述数据没有被传输至所述客户端时,确定所述数据传输失败;当所述数据被传输至所述客户端时,将所述数据暂存在缓存中,并且判断所述数据是否被所述客户端成功处理;当所述数据没有被所述客户端成功处理时,确定所述数据处理失败;当所述数据被所述客户端成功处理时,将所述缓存中的所述数据删除,并且确定所述数据推送成功;其中,所述数据传输失败和所述数据处理失败均属于数据推送失败。
可选地,所述数据的属性信息包括:传输时间戳;以及所述方法还包括:利用所述传输时间戳,判断所述缓存中的数据是否过期,若是,则将所述数据迁移至所述数据集合中。
可选地,在确定所述数据传输失败之后,所述方法还包括:判断所述数据传输失败的次数是否超过第一预设次数,若是,则确定所述数据传输异常;以及在确定所述数据处理失败之后,所述方法还包括:判断所述数据处理失败的次数是否超过第二预设次数,若是,则确定所述数据处理异常。
为实现上述目的,根据本发明实施例的另一方面,提供了一种数据推送的装置。
本发明实施例的一种数据推送的装置,包括:获取模块,用于根据数据推送需求,从数据集合中获取数据;确定模块,用于按照预设的轮询方式确定通道对象,并向所述通道对象对应的客户端推送所述数据;判断模块,用于判断所述数据是否推送成功,若是,则确定所述数据推送成功,否则确定所述数据推送失败。
可选地,所述通道对象与所述通道对象对应的客户端之间的连接方式是双向通信长连接。
可选地,所述确定模块还用于:按照预设的轮询方式选择目标通道对象,向所述目标通道对象对应的客户端推送所述数据,并且设置所述目标通道对象的下一个通道对象为新的目标通道对象,在所述数据推送失败时,向所述新的目标通道对象对应的客户端推送所述数据。
可选地,所述判断模块还用于:判断所述数据是否被传输至所述客户端;当所述数据没有被传输至所述客户端时,确定所述数据传输失败;当所述数据被传输至所述客户端时,将所述数据暂存在缓存中,并且判断所述数据是否被所述客户端成功处理;当所述数据没有被所述客户端成功处理时,确定所述数据处理失败;当所述数据被所述客户端成功处理时,将所述缓存中的所述数据删除,并且确定所述数据推送成功;其中,所述数据传输失败和所述数据处理失败均属于数据推送失败。
可选地,所述数据的属性信息包括:传输时间戳;以及所述装置还包括:迁移模块,用于利用所述传输时间戳,判断所述缓存中的数据是否过期,若是,则将所述数据迁移至所述数据集合中。
可选地,所述判断模块还用于:在确定所述数据传输失败之后,判断所述数据传输失败的次数是否超过第一预设次数,若是,则确定所述数据传输异常;以及在确定所述数据处理失败之后,判断所述数据处理失败的次数是否超过第二预设次数,若是,则确定所述数据处理异常。
为实现上述目的,根据本发明实施例的再一方面,提供了一种电子设备。
本发明实施例的一种电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现本发明实施例的数据推送的方法。
为实现上述目的,根据本发明实施例的又一方面,提供了一种计算机可读介质。
本发明实施例的一种计算机可读介质,其上存储有计算机程序,程序被处理器执行时实现本发明实施例的数据推送的方法。
上述发明中的一个实施例具有如下优点或有益效果:能够按照预设的轮询方式确定通道对象,进而根据通道对象推送数据,从而可以对网络异常和处理数据异常做容错处理,减少了数据丢失率,提高了数据推送的效率;本发明实施例中通道对象与客户端之间的连接方式是双向通信长连接,从而可以利用长连接的特性,减少频繁建立连接消耗的资源,并且在网络发生异常时,服务器和客户端马上会感知到网路异常;本发明实施例中预设的轮询方式可以在数据没有推送成功时,向目标通道对象的下一个通道对象对应的客户端再次推送该数据,从而可以减少数据的丢失率,同时预设的轮询方式也可以在数据推送成功时,自动设置下一个通道对象为新的目标通道对象,从而可以达到每个客户端能均衡的接收到服务器推送的数据的效果;本发明实施例中判断数据是否推送成功包括:判断数据是否被传输至客户端和判断数据是否被客户端成功处理,从而可以验证是否有网络异常和数据处理异常的情况,提高了数据推送的效率;本发明实施例中数据包括:传输时间戳,以及利用传输时间戳将缓存中过期的数据重新迁移至数据集合中,从而可以进一步减少数据的丢失率;本发明实施例中当数据多次传输失败时,确定数据传输异常,从而可以让系统管理员及时发现网络异常的情况;本发明实施例中当数据多次处理失败时,会确定数据处理异常,从而可以让系统管理员及时发现异常数据,进一步完善方案。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是现有技术数据推送的处理过程的示意图;
图2是根据本发明实施例的数据推送的方法的主要步骤的示意图;
图3是根据本发明实施例的数据推送的系统结构示意图;
图4是发生网络异常时根据本发明实施例的数据推送的处理过程示意图;
图5是数据处理异常时根据本发明实施例的数据推送的处理过程示意图;
图6是根据本发明实施例的数据推送的方法的主要过程的示意图;
图7是根据本发明实施例的数据推送的装置的主要模块的示意图;
图8是本发明实施例可以应用于其中的示例性系统架构图;
图9是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在C/S结构的系统中,应用程序分为客户端和服务器两大部分。客户端部分为每个用户所专有,而服务器则由所有用户共享其信息与功能。为了实现网络上信息资源的共享,需要把服务器上的若干数据源源不断的推送给若干客户端。当网络异常时,服务器向客户端发送数据会失败,此时需要服务器把该数据推送给其他客户端。当客户端接收到服务器推送过来的数据之后,在处理数据时,客户端可能出现异常,此时需要服务器再次推送该数据给某个客户端去处理。因此,面对网络异常和客户端的数据处理异常的情形,本发明提供一种数据推送的方法,能够确保数据被推送至客户端并被客户端成功处理。
图2是根据本发明实施例的数据推送的方法的主要步骤的示意图,如图2所示,本发明实施例的数据推送的方法的主要步骤可以包括:
步骤S201:根据数据推送需求,从数据集合中获取数据。本发明中的数据推送需求中可以包含需要获取何种类型的数据的信息,因此根据数据推送需求,服务器利用推送线程从此种类型的数据集合中随机选取需要的数据。其中,线程是指计算机开发语言中的线程,以Java语言(即,一种可以撰写跨平台应用程序的面向对象的程序设计语言)为例,这里指的是Java的线程。推送线程是指执行推送任务的线程。
步骤S202:按照预设的轮询方式确定通道对象,并向通道对象对应的客户端推送数据。由于服务器会存在与每个客户端的网络连接后生成的通道对象的一个列表,因此可以按照预设的列表顺序选择通道对象。本发明中,若干个客户端向服务器发送获取数据的请求,服务器根据获取数据的请求(即数据推送需求),并按照预设的轮询方式利用推送线程选取通道对象,然后推送线程向与选取的通道对象对应的客户端发送数据。预设的轮询方式是指将服务器中的通道对象以闭环的形式排列,然后依次从中选择通道对象,假设有3个客户端(即,客户端1、客户端2和客户端3)向服务器发送获取数据的请求,则服务器中有3个通道对象(即,Channel-1对象、Channel-2对象和Channel-3对象)与3个客户端一一对应,则预设的轮询方式可以是从Channel-1到Channel-2再到Channel-3,然后再轮回到Channel-1的方式。
步骤S203:判断数据是否推送成功,若是,则确定数据推送成功,否则确定数据推送失败。在步骤S202推送线程向客户端推送数据之后,需要判断数据是否推送成功,若数据推送成功,则确认数据推送完成,否则,认为数据推送失败。
本发明实施例中,通道对象与其对应的客户端之间的连接方式可以是双向通信长连接。考虑到客户端与服务器需要频繁的进行网络通信,因此本发明建立服务器中的通道对象与客户端的双向通信长连接。长连接是指客户端与服务器建立连接之后,客户端与服务器一直使用此连接来通信,直到客户端或服务器关闭此连接。在本发明中,可以选择TCP(即,Transmission Control Protocol传输控制协议,一种面向连接的、可靠的、基于字节流的传输层通信协议)长连接。
本发明实施例中,按照预设的轮询方式确定通道对象,并向通道对象对应的客户端推送数据可以包括:按照预设的轮询方式选择目标通道对象,向目标通道对象对应的客户端推送数据,并且设置目标通道对象的下一个通道对象为新的目标通道对象,在数据推送失败时,向新的目标通道对象对应的客户端推送所述数据。本发明实施例中,首先按照预设的轮询方式选择一个通道对象为目标通道对象,然后向目标通道对象推送数据。在该数据推送失败时,选择目标通道对象的下一个通道对象为新的目标通道对象,向新的目标通道对象继续推送该数据。在该数据推送成功时,设置目标通道对象的下一个通道对象为新的目标通道对象,并向新的目标通道对象推送下一条数据。比如,服务器中有通道对象Channel-1、Channel-2和Channel-3,且预设的轮询方式可以是从Channel-1到Channel-2再到Channel-3,然后再轮回到Channel-1的方式,即,首先向Channel-1对应的客户端推送数据A,若向Channel-1对应的客户端推送数据A失败时,则向Channel-2对应的客户端推送数据A,若向Channel-2对应的客户端推送数据A失败时,则向Channel-3对应的客户端推送数据A,若向Channel-3对应的客户端推送数据A失败时,则向Channel-1对应的客户端推送数据A。若向Channel-1推送数据A成功,则选择Channel-2作为新的目标通道对象,下一条数据将使用Channel-2来推送数据。
本发明实施例中,判断数据是否推送成功可以包括两步判断:第一步判断是,判断数据是否被传输至客户端,第二步判断是,判断数据是否被客户端成功处理。因此,数据推送失败可以包括:数据传输失败和数据处理失败。其中,上述步骤S203可以包括:判断数据是否被传输至客户端;当数据没有被传输至客户端时,确定数据传输失败;当数据被传输至客户端时,将数据暂存在缓存中,并且判断数据是否被客户端成功处理;当数据没有被客户端成功处理时,确定数据处理失败;当数据被客户端成功处理时,将缓存中的所述数据删除,并且确定数据推送成功。其中,缓存可以是Redis数据库(一个开源的使用计算机语言编写、支持网络、可基于内存亦可持久化的日志型、存储方式为键值对的数据库),也可以是缓存表(用Map表示),本发明对此不作限定。本发明中,判断数据是否推送成功可以包括两步判断。首先,判断数据是否被传输至客户端。由于客户端与服务器间建立了长连接,因此只要网络异常,服务器和客户端就会立刻感知到网络异常,即认为数据没有被传输至客户端,服务器会根据预设的轮询方式获取下一个通道对象,并向其对应的客户端推送数据。如果数据被传输至客户端,则将数据暂存在缓存中,并且执行第二步判断,判断数据是否被客户端成功处理,若数据被成功处理,则客户端会向服务器发送成功处理的信息,当服务器接收到成功处理的信息之后,会将缓存中的数据删除,并确定数据推送成功。若数据没有被成功处理,则确定数据处理失败。当然,本发明中,在客户端接收到服务器传输的数据时,客户端也可以向服务器发送一个传输成功的应答信息,服务器根据接收到的传输成功的应答信息确认数据被传输至客户端,而在一定时间(例如60秒,根据实际情况设定,对此不作限定)后,如果服务器没有接收到传输成功的应答信息,则确认数据没有被传输至客户端。
本发明实施例中,数据的属性信息可以包括:传输时间戳。其中,传输数据戳是指数据被传输至客户端的时间。数据推送的方法还可以包括:利用传输时间戳,判断缓存中的数据是否过期,若是,则将数据迁移至数据集合中。本发明中,若数据被传输至客户端,则将传输至客户端的时间确定下来,根据时间戳来检测数据是否过期,比如超过十分钟客户端还未反馈此数据已成功处理就视为过期,如果过期就把该数据迁移到数据集合中。
例如,判断数据Data1是否被传输至客户端1(与其连接的通道对象是Channel-1),若数据Data1被传输至客户端1,则将数据Data1暂存在Map中,然后判断数据Data1是否被客户端1成功处理,若客户端1成功处理数据Data1,则向服务器发送成功处理的信息,服务器在接收到信息后,删除Map中存储的数据Data1。若数据Data1没有被传输至客户端1,则将数据Data1推送至客户端2(与其连接的通道对象是Channel-2,预设的轮询方式中,Channel-1的下一个通道对象为Channel-2)。若数据Data1没有被客户端1成功处理,经过一段时间之后,服务器的迁移线程根据此数据的传输时间戳检查出此数据已经过期,迁移线程会把此过期数据迁移到数据集合中。
本发明实施例中,在确定数据传输失败之后,数据推送的方法还可以包括:判断数据传输失败的次数是否超过第一预设次数,若是,则将数据传输失败的记录更新为数据传输异常;以及在确定数据处理失败之后,数据推送的方法还可以包括:判断数据处理失败的次数是否超过第二预设次数,若是,则将数据处理失败的记录更新为数据处理异常。其中,第一预设次数和第二预设次数均是根据实际情况设定,本发明对此不作限定。本发明中,增加了数据传输失败次数和数据处理失败次数的验证,目的是避免数据陷入死循环推送中,同时可以及时发现异常情况,比如,若数据多次传输失败,可能是服务端出现异常,也可能是网络连接出现异常,若数据多次处理失败,可能是数据出现异常等等。因此,当出现异常记录时,系统管理员可以及时检查出现异常的原因,并解决问题。
图3是根据本发明实施例的数据推送的系统结构示意图。图3中,有三个客户端与服务器建立了长连接,每个客户端存在一个Channel对象,服务器也存在与客户端网络连接对应的Channel对象。如图3所示,本发明实施例的数据推送的系统结构包括:步骤S301,推送线程从数据集合中取出一个数据;步骤S302,推送线程使用轮询方式选取一个Channel对象(即Channel-1至Channel-2至Channel-3,然后再轮回到Channel-1的方式);步骤S303,推送线程通过该Channel对象向与其对应的客户端推送数据(比如Channel-1对象是与客户端1对应的,所以选取Channel-1对象后向客户端1发送数据)。
图4是发生网络异常时根据本发明实施例的数据推送的处理过程示意图。如图4所示,发生网络异常时本发明实施例的数据推送的处理过程可以包括:步骤S401,推送线程首先从数据集合中取出一条数据;步骤S402,推送线程根据轮询方式选择Channel-1对象;步骤S403,推送线程使用Channel-1对象向客户端1发送数据,并且推送线程在推送数据之前会给数据添加数据唯一标识和传输时间戳;步骤S404,如果推送线程在推送数据时发生网络异常,推送线程就选择下一个Channel对象,在图4中是选择了Channel-2对象;步骤S404,推送线程使用Channel-2对象向客户端2发送数据。
在步骤S403中,网络出现异常会影响向客户端1推送数据。此时,服务器将选择下一个Channel-2对象来继续推送数据。以此类推,如果网络出现异常会影响向客户端2推送数据,则服务器将选择下一个Channel-3对象来继续推送数据。上述轮询的选择方式可保证服务器与某一个客户端的网络出现异常时,服务器会做相应的容错处理,即继续推送此数据给其他客户端。
图5是数据处理异常时根据本发明实施例的数据推送的处理过程示意图。如图5所示,数据处理异常时本发明实施例的数据推送的处理过程可以包括:步骤S501,推送线程从数据集合中取出一条数据;步骤S502,推送线程给数据添加编号和传输时间戳,其中编号可以作为数据的唯一标识,时间戳可以是当前时间;步骤S503,推送线程将带有编号信息和传输时间戳的数据发送给客户端1;步骤S504,客户端1接收到服务器推送过来的数据后处理该数据;步骤S505,客户端1向服务器反馈已经正确处理了该数据;步骤S506,服务器收到客户端1的反馈后,根据反馈的数据编号在Map中找出Channel-1关联的数据集合中此编号对应的数据,然后删除此数据;步骤S507,服务器在启动时创建一个定时执行的清理线程(比如每隔五分钟执行一次),清理线程依次遍历Map中的所有数据;步骤S508,将过期的数据放回数据集合中。
在客户端1处理数据过程中,如果发生异常,客户端1不会向服务器反馈数据已正常处理了该数据(即,不会执行步骤S505),之后清理线程会把这个处理异常的数据迁移至数据集合中,等待下次被推送线程发送给某个客户端。因此可以保证即使客户端处理数据发生异常,服务器也可以容错处理,即该数据可以再次被发送给某个客户端处理。
为了方便理解,本发明实施例的后续描述中,将“双向通信长连接”取为“TCP长连接”,将“缓存”取为“Map”,当然“TCP长连接”以及“Map”并不用来对本发明技术方案的保护范围进行限定,本发明中“双向通信长连接”以及“缓存”可以根据具体业务场景进行适应性调整。图6是根据本发明实施例的数据推送的方法的主要过程的示意图,如图6所示,本发明实施例的数据推送的方法的主要过程可以包括:步骤S601,建立通道对象与客户端的TCP长连接;步骤S602,根据数据推送需求,从数据集合中选取数据;步骤S603,根据目标通道对象推送数据,并设置新的目标通道对象,即按照预设的轮询方式选择目标通道对象,向目标通道对象对应的客户端推送数据,并设置目标通道对象的下一个通道对象为新的目标通道对象;步骤S604,判断数据是否被传输至目标通道对象对应的客户端,若是,则执行步骤S605,否则执行步骤S608;步骤S605,将数据暂存在Map中;步骤S606,判断数据是否被客户端成功处理,若是,则执行步骤S607,否则执行步骤S611;步骤S607,将Map中的数据删除,并且确定数据推送成功;步骤S608,判断数据被传输失败的次数是否超过第一预设次数,其中第一预设次数可以根据实际情况设定,若是,则执行步骤S609,否则执行步骤S610;步骤S609,发出数据传输异常的报警信息;步骤S610,选择新的目标通道对象,并向其推送该数据;步骤S611,判断数据被处理失败的次数是否超过第二预设次数,其中第二预设次数可以根据实际情况设定,若是,则执行步骤S612,否则执行步骤S613;步骤S612,发出数据处理异常的报警信息;步骤S613,清理线程检测出数据过期,将过期数据迁移至数据集合中。
其中,在步骤S609发出数据传输异常的报警信息之后,系统管理员能够及时发现网络异常的情况;在步骤S612发出数据处理异常的报警信息之后,系统管理员能够及时发现异常数据。另外,步骤S613中的清理线程是执行清理任务的线程。本发明中,若数据被推送至客户端,则将推送至客户端的传输时间戳和该数据的唯一标识记录下来。在清理线程中,利用传输时间戳检查Map中的数据是否过期(即超过预设时间客户端还未反馈此数据已成功处理就视为过期),若过期,则将该数据迁移至数据集合中。
根据本发明实施例的数据推送的技术方案可以看出,能够按照预设的轮询方式确定通道对象,进而根据通道对象推送数据,从而可以对网络异常和处理数据异常做容错处理,减少了数据丢失率,提高了数据推送的效率;本发明实施例中通道对象与客户端之间的连接方式是双向通信长连接,从而可以利用长连接的特性,减少频繁建立连接消耗的资源,并且在网络发生异常时,服务器和客户端马上会感知到网路异常;本发明实施例中预设的轮询方式可以在数据没有推送成功时,向目标通道对象的下一个通道对象对应的客户端再次推送该数据,从而可以减少数据的丢失率,同时预设的轮询方式也可以在数据推送成功时,自动设置下一个通道对象为新的目标通道对象,从而可以达到每个客户端能均衡的接收到服务器推送的数据的效果;本发明实施例中判断数据是否推送成功包括:判断数据是否被传输至客户端和判断数据是否被客户端成功处理,从而可以验证是否有网络异常和数据处理异常的情况,提高了数据推送的效率;本发明实施例中数据包括:传输时间戳,以及利用传输时间戳将缓存中过期的数据重新迁移至数据集合中,从而可以进一步减少数据的丢失率;本发明实施例中当数据多次传输失败时,确定数据传输异常,从而可以让系统管理员及时发现网络异常的情况;本发明实施例中当数据多次处理失败时,会确定数据处理异常,从而可以让系统管理员及时发现异常数据,进一步完善方案。
图7是根据本发明实施例的数据推送的装置的主要模块的示意图。如图7所示,本发明实施例的数据推送的装置700主要包括以下模块:获取模块701、确定模块702和判断模块703。
其中,获取模块701可用于根据数据推送需求,从数据集合中获取数据。确定模块702可用于按照预设的轮询方式确定通道对象,并向通道对象对应的客户端推送数据。判断模块703可用于判断数据是否推送成功,若是,则确定数据推送成功,否则确定数据推送失败。
本发明实施例中,通道对象与其对应的客户端之间的连接方式可以是双向通信长连接。
本发明实施例中,确定模块702还可用于:按照预设的轮询方式选择目标通道对象,向目标通道对象对应的客户端推送数据,并且设置目标通道对象的下一个通道对象为新的目标通道对象,在数据推送失败时,向新的目标通道对象对应的客户端推送数据。
本发明实施例中,数据推送失败可以包括:数据传输失败和数据处理失败。判断模块703还可用于:判断数据是否被传输至客户端;当数据没有被传输至客户端时,确定数据传输失败;当数据被传输至客户端时,将数据暂存在缓存中,并且判断数据是否被客户端成功处理;当数据没有被客户端成功处理时,确定数据处理失败;当数据被客户端成功处理时,将缓存中的数据删除,并且确定数据推送成功。
本发明实施例中,数据的属性信息可以包括:传输时间戳。以及数据推送的装置700还可以包括:迁移模块(图中未示出)。其中,迁移模块可用于利用传输时间戳,检查缓存中的数据是否过期,若是,则将数据迁移至数据集合中。
本发明实施例中,判断模块703还可用于:在确定数据传输失败之后,判断数据传输失败的次数是否超过第一预设次数,若是,则确定数据传输异常;以及在确定数据处理失败之后,判断数据处理失败的次数是否超过第二预设次数,若是,则确定数据处理异常。
从以上描述可以看出,能够按照预设的轮询方式确定通道对象,进而根据通道对象推送数据,从而可以对网络异常和处理数据异常做容错处理,减少了数据丢失率,提高了数据推送的效率;本发明实施例中通道对象与客户端之间的连接方式可以是双向通信长连接,从而可以利用长连接的特性,减少频繁建立连接消耗的资源,并且在网络发生异常时,服务器和客户端马上会感知到网路异常;本发明实施例中预设的轮询方式可以在数据没有推送成功时,向目标通道对象的下一个通道对象对应的客户端再次推送该数据,从而可以减少数据的丢失率,同时预设的轮询方式也可以在数据推送成功时,自动设置下一个通道对象为新的目标通道对象,从而可以达到每个客户端能均衡的接收到服务器推送的数据的效果;本发明实施例中判断数据是否推送成功包括:判断数据是否被传输至客户端和判断数据是否被客户端成功处理,从而可以验证是否有网络异常和数据处理异常的情况,提高了数据推送的效率;本发明实施例中数据包括:传输时间戳,以及利用传输时间戳将缓存中过期的数据重新迁移至数据集合中,从而可以进一步减少数据的丢失率;本发明实施例中当数据多次传输失败时,确定数据传输异常,从而可以让系统管理员及时发现网络异常的情况;本发明实施例中当数据多次处理失败时,会确定数据处理异常,从而可以让系统管理员及时发现异常数据,进一步完善方案。
图8示出了可以应用本发明实施例的数据推送的方法或数据推送的装置的示例性系统架构800。
如图8所示,系统架构800可以包括终端设备801、802、803,网络804和服务器805。网络804用以在终端设备801、802、803和服务器805之间提供通信链路的介质。网络804可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备801、802、803通过网络804与服务器805交互,以接收或发送消息等。终端设备801、802、803上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备801、802、803可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器805可以是提供各种服务的服务器,例如对用户利用终端设备801、802、803所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的数据推送的方法一般由服务器805执行,相应地,数据推送的装置一般设置于服务器805中。
应该理解,图8中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图9,其示出了适于用来实现本发明实施例的终端设备的计算机系统900的结构示意图。图9示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图9所示,计算机系统900包括中央处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。在RAM 903中,还存储有系统900操作所需的各种程序和数据。CPU 901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
以下部件连接至I/O接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被中央处理单元(CPU)901执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括获取模块、确定模块和判断模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,获取模块还可以被描述为“根据数据推送需求从数据集合中获取数据的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:根据数据推送需求,从数据集合中获取数据;按照预设的轮询方式确定通道对象,并向通道对象对应的客户端推送数据;判断数据是否推送成功,若是,则确定数据推送成功,否则确定数据推送失败。
根据本发明实施例的技术方案,能够按照预设的轮询方式确定通道对象,进而根据通道对象推送数据,从而可以对网络异常和处理数据异常做容错处理,减少了数据丢失率,提高了数据推送的效率;本发明实施例中通道对象与客户端之间的连接方式是双向通信长连接,从而可以利用长连接的特性,减少频繁建立连接消耗的资源,并且在网络发生异常时,服务器和客户端马上会感知到网路异常;本发明实施例中预设的轮询方式可以在数据没有推送成功时,向目标通道对象的下一个通道对象对应的客户端再次推送该数据,从而可以减少数据的丢失率,同时预设的轮询方式也可以在数据推送成功时,自动设置下一个通道对象为新的目标通道对象,从而可以达到每个客户端能均衡的接收到服务器推送的数据的效果;本发明实施例中判断数据是否推送成功包括:判断数据是否被传输至客户端和判断数据是否被客户端成功处理,从而可以验证是否有网络异常和数据处理异常的情况,提高了数据推送的效率;本发明实施例中数据包括:传输时间戳,以及利用传输时间戳将缓存中过期的数据重新迁移至数据集合中,从而可以进一步减少数据的丢失率;本发明实施例中当数据多次传输失败时,确定数据传输异常,从而可以让系统管理员及时发现网络异常的情况;本发明实施例中当数据多次处理失败时,会确定数据处理异常,从而可以让系统管理员及时发现异常数据,进一步完善方案。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (14)

1.一种数据推送的方法,其特征在于,包括:
根据数据推送需求,从数据集合中获取数据;
按照预设的轮询方式确定通道对象,并向所述通道对象对应的客户端推送所述数据;
判断所述数据是否推送成功,若是,则确定所述数据推送成功,否则确定所述数据推送失败。
2.根据权利要求1所述的方法,其特征在于,所述通道对象与所述通道对象对应的客户端之间的连接方式是双向通信长连接。
3.根据权利要求1所述的方法,其特征在于,按照预设的轮询方式确定通道对象,并向所述通道对象对应的客户端推送所述数据包括:按照预设的轮询方式选择目标通道对象,向所述目标通道对象对应的客户端推送所述数据,并且设置所述目标通道对象的下一个通道对象为新的目标通道对象,在所述数据推送失败时,向所述新的目标通道对象对应的客户端推送所述数据。
4.根据权利要求1所述的方法,其特征在于,判断所述数据是否推送成功包括:
判断所述数据是否被传输至所述客户端;
当所述数据没有被传输至所述客户端时,确定所述数据传输失败;
当所述数据被传输至所述客户端时,将所述数据暂存在缓存中,并且判断所述数据是否被所述客户端成功处理;
当所述数据没有被所述客户端成功处理时,确定所述数据处理失败;
当所述数据被所述客户端成功处理时,将所述缓存中的所述数据删除,并且确定所述数据推送成功;
其中,所述数据传输失败和所述数据处理失败均属于数据推送失败。
5.根据权利要求4所述的方法,其特征在于,所述数据的属性信息包括:传输时间戳;以及所述方法还包括:利用所述传输时间戳,判断所述缓存中的数据是否过期,若是,则将所述数据迁移至所述数据集合中。
6.根据权利要求4所述的方法,其特征在于,
在确定所述数据传输失败之后,所述方法还包括:判断所述数据传输失败的次数是否超过第一预设次数,若是,则确定所述数据传输异常;以及
在确定所述数据处理失败之后,所述方法还包括:判断所述数据处理失败的次数是否超过第二预设次数,若是,则确定所述数据处理异常。
7.一种数据推送的装置,其特征在于,包括:
获取模块,用于根据数据推送需求,从数据集合中获取数据;
确定模块,用于按照预设的轮询方式确定通道对象,并向所述通道对象对应的客户端推送所述数据;
判断模块,用于判断所述数据是否推送成功,若是,则确定所述数据推送成功,否则确定所述数据推送失败。
8.根据权利要求7所述的装置,其特征在于,所述通道对象与所述通道对象对应的客户端之间的连接方式是双向通信长连接。
9.根据权利要求7所述的装置,其特征在于,所述确定模块还用于:按照预设的轮询方式选择目标通道对象,向所述目标通道对象对应的客户端推送所述数据,并且设置所述目标通道对象的下一个通道对象为新的目标通道对象,在所述数据推送失败时,向所述新的目标通道对象对应的客户端推送所述数据。
10.根据权利要求7所述的装置,其特征在于,所述判断模块还用于:
判断所述数据是否被传输至所述客户端;
当所述数据没有被传输至所述客户端时,确定所述数据传输失败;
当所述数据被传输至所述客户端时,将所述数据暂存在缓存中,并且判断所述数据是否被所述客户端成功处理;
当所述数据没有被所述客户端成功处理时,确定所述数据处理失败;
当所述数据被所述客户端成功处理时,将所述缓存中的所述数据删除,并且确定所述数据推送成功;
其中,所述数据传输失败和所述数据处理失败均属于数据推送失败。
11.根据权利要求10所述的装置,其特征在于,所述数据的属性信息包括:传输时间戳;以及所述装置还包括:迁移模块,用于利用所述传输时间戳,判断所述缓存中的数据是否过期,若是,则将所述数据迁移至所述数据集合中。
12.根据权利要求10所述的装置,其特征在于,所述判断模块还用于:在确定所述数据传输失败之后,判断所述数据传输失败的次数是否超过第一预设次数,若是,则确定所述数据传输异常;以及在确定所述数据处理失败之后,判断所述数据处理失败的次数是否超过第二预设次数,若是,则确定所述数据处理异常。
13.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的方法。
14.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-6中任一所述的方法。
CN201810289733.XA 2018-03-30 2018-03-30 数据推送的方法和装置 Active CN110324384B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810289733.XA CN110324384B (zh) 2018-03-30 2018-03-30 数据推送的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810289733.XA CN110324384B (zh) 2018-03-30 2018-03-30 数据推送的方法和装置

Publications (2)

Publication Number Publication Date
CN110324384A true CN110324384A (zh) 2019-10-11
CN110324384B CN110324384B (zh) 2024-04-09

Family

ID=68112191

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810289733.XA Active CN110324384B (zh) 2018-03-30 2018-03-30 数据推送的方法和装置

Country Status (1)

Country Link
CN (1) CN110324384B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111045850A (zh) * 2019-12-26 2020-04-21 天津芯海创科技有限公司 一种维护包发送失败的处理方法以及主控软件
CN111079853A (zh) * 2019-12-27 2020-04-28 深圳市商汤科技有限公司 数据获取方法及相关装置
CN113760669A (zh) * 2021-09-09 2021-12-07 湖南快乐阳光互动娱乐传媒有限公司 问题数据的告警方法及装置、电子设备、存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103096271A (zh) * 2013-03-01 2013-05-08 畅捷通信息技术股份有限公司 信息推送系统和信息推送方法
CN103874032A (zh) * 2014-03-24 2014-06-18 北京奇虎科技有限公司 基于移动终端的信息推送方法及装置
CN104023072A (zh) * 2014-06-13 2014-09-03 中国民航信息网络股份有限公司 数据推送装置及方法
CN104506416A (zh) * 2014-12-17 2015-04-08 东软集团股份有限公司 一种实现消息稳定推送的方法、装置及系统
CN104539740A (zh) * 2015-01-26 2015-04-22 北京奇艺世纪科技有限公司 一种信息推送方法及装置
CN105516221A (zh) * 2014-09-24 2016-04-20 阿里巴巴集团控股有限公司 信息推送系统及方法
CN106713328A (zh) * 2016-12-29 2017-05-24 北京奇虎科技有限公司 一种基于长连接的信息处理方法和装置
CN107317788A (zh) * 2016-04-26 2017-11-03 北京京东尚科信息技术有限公司 实时数据推送方法和装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103096271A (zh) * 2013-03-01 2013-05-08 畅捷通信息技术股份有限公司 信息推送系统和信息推送方法
CN103874032A (zh) * 2014-03-24 2014-06-18 北京奇虎科技有限公司 基于移动终端的信息推送方法及装置
CN104023072A (zh) * 2014-06-13 2014-09-03 中国民航信息网络股份有限公司 数据推送装置及方法
CN105516221A (zh) * 2014-09-24 2016-04-20 阿里巴巴集团控股有限公司 信息推送系统及方法
CN104506416A (zh) * 2014-12-17 2015-04-08 东软集团股份有限公司 一种实现消息稳定推送的方法、装置及系统
CN104539740A (zh) * 2015-01-26 2015-04-22 北京奇艺世纪科技有限公司 一种信息推送方法及装置
CN107317788A (zh) * 2016-04-26 2017-11-03 北京京东尚科信息技术有限公司 实时数据推送方法和装置
CN106713328A (zh) * 2016-12-29 2017-05-24 北京奇虎科技有限公司 一种基于长连接的信息处理方法和装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111045850A (zh) * 2019-12-26 2020-04-21 天津芯海创科技有限公司 一种维护包发送失败的处理方法以及主控软件
CN111079853A (zh) * 2019-12-27 2020-04-28 深圳市商汤科技有限公司 数据获取方法及相关装置
CN113760669A (zh) * 2021-09-09 2021-12-07 湖南快乐阳光互动娱乐传媒有限公司 问题数据的告警方法及装置、电子设备、存储介质

Also Published As

Publication number Publication date
CN110324384B (zh) 2024-04-09

Similar Documents

Publication Publication Date Title
CN110019211A (zh) 关联索引的方法、装置和系统
CN110119292B (zh) 系统运行参数查询方法、匹配方法、装置及节点设备
CN110351323A (zh) 一种应用系统的参数管理方法和装置
CN105472045A (zh) 数据库迁移的方法和装置
CN110347747A (zh) 数据库间数据同步方法、系统、计算机设备及存储介质
CN110019125A (zh) 数据库管理的方法和装置
CN107196848B (zh) 消息推送方法及装置
CN110019539A (zh) 一种数据仓库的数据同步的方法和装置
CN110324384A (zh) 数据推送的方法和装置
CN107347062A (zh) 一种日志数据处理的方法、电子设备和可读存储介质
CN112367684B (zh) 流量控制方法、装置、存储介质及计算机设备
CN109995801A (zh) 一种消息传输方法和装置
CN110727738B (zh) 基于数据分片的全局路由系统、电子设备及存储介质
CN109981322A (zh) 基于标签的云资源管理的方法和装置
CN108847952A (zh) 请求链路上下文的处理方法、装置及系统
CN110019158A (zh) 一种监控数据质量的方法和装置
CN110019263A (zh) 信息存储方法和装置
CN109918191A (zh) 一种业务请求防频的方法和装置
CN110110196A (zh) 一种消息推送方法和装置
CN110505074A (zh) 一种应用模块化集成方法和装置
CN110413419A (zh) 一种规则执行的方法和装置
CN107026878A (zh) 订阅消息的发布方法及装置
CN111044062A (zh) 路径规划、推荐方法和装置
CN110083501A (zh) 接口调用计数方法和装置
CN110417860A (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