CN114697060B - 业务控制方法、装置和电子设备 - Google Patents

业务控制方法、装置和电子设备 Download PDF

Info

Publication number
CN114697060B
CN114697060B CN202011590954.4A CN202011590954A CN114697060B CN 114697060 B CN114697060 B CN 114697060B CN 202011590954 A CN202011590954 A CN 202011590954A CN 114697060 B CN114697060 B CN 114697060B
Authority
CN
China
Prior art keywords
striking operation
fusing
striking
service module
time
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
CN202011590954.4A
Other languages
English (en)
Other versions
CN114697060A (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.)
Guangzhou Tencent Technology Co Ltd
Original Assignee
Guangzhou Tencent 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 Guangzhou Tencent Technology Co Ltd filed Critical Guangzhou Tencent Technology Co Ltd
Priority to CN202011590954.4A priority Critical patent/CN114697060B/zh
Publication of CN114697060A publication Critical patent/CN114697060A/zh
Application granted granted Critical
Publication of CN114697060B publication Critical patent/CN114697060B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Telephonic Communication Services (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供的业务控制方法、装置和电子设备,涉及计算机技术领域。该方法包括:根据业务模块每次执行打击操作时上报的通知消息,获取业务模块执行打击操作的操作频率;若操作频率满足预先设置的打击操作的熔断规则,则生成打击操作的熔断信息;将打击操作的熔断信息进行存储,以使业务模块通过静态库接口获取到存储的打击操作的熔断信息后,执行熔断处理。因此,本申请通过监控业务模块执行打击操作的操作频率,在打击操作的操作频率发生异常时,使业务模块进行熔断处理,从而及时拦截打击操作,避免打击频率过高即打击数异常升高导致系统故障。

Description

业务控制方法、装置和电子设备
技术领域
本申请涉及计算机技术领域,更具体地说,涉及一种业务控制方法、装置和电子设备。
背景技术
社交平台上的一些账户可能会执行违反国家法律法规或者违反社交软件的帐号使用协议的恶意行为,例如诈骗、赌博、使用外挂、买卖违禁品等。此时,社交平台的业务模块需要根据预先设置的打击策略对这些账户进行打击。正常情况下,业务模块对做出恶意行为的账户的打击频率保持在一定的频率范围内,如果打击频率异常升高,可能发生了大面积误打击事故。
为了避免大面积误打击事故的发生,当业务模块的打击频率异常升高时,希望可以立即自动熔断打击。如何实现业务模块对异常打击的自动熔断是需要解决的问题。
发明内容
为解决相关技术中存在的技术问题,本申请实施例提供一种业务控制方法、装置和电子设备,可以在打击频率过高时,生成打击操作的熔断信息并进行存储,进而使业务模块调用静态库接口获取到打击操作的熔断信息后,进行自动熔断,并且网络开销小,过程简单。
为达到上述目的,本申请实施例的技术方案是这样实现的:
第一方面,本申请实施例提供一种业务控制方法,包括:
根据业务模块每次执行打击操作时上报的通知消息,获取业务模块执行打击操作的操作频率;
若所述操作频率满足预先设置的所述打击操作的熔断规则,则生成所述打击操作的熔断信息;
将所述打击操作的熔断信息进行存储,以使所述业务模块通过静态库接口获取到存储的所述打击操作的熔断信息后,执行熔断处理。
在一种可选的实施例中,所述方法还包括:
通过报表接口采用用户数据报协议接收所述业务模块在每次执行打击操作时上报的通知消息,并且不向所述业务模块返回确认接收消息。
在一种可选的实施例中,所述打击操作的熔断规则还包括所述打击操作的设定熔断时间;所述方法还包括:
根据所述设定熔断时间确定所述打击操作的熔断信息的存储时间,将携带存储时间的所述打击操作的熔断信息进行存储;
若所述打击操作的熔断信息的存储时间到达,则将所述打击操作的熔断信息删除。
在一种可选的实施例中,所述方法还包括:
通过WEB页面预先设置所述打击操作的熔断规则。
第二方面,本申请实施例提供一种业务控制方法,包括:
在每次执行打击操作时向统计模块上报通知消息,以使所述统计模块根据所述通知消息获取业务模块执行所述打击操作的操作频率,若所述操作频率满足预先设置的所述打击操作的熔断规则,则生成所述打击操作的熔断信息,并将所述熔断信息进行存储;
若通过静态库接口从所述统计模块读取到存储的所述打击操作的熔断信息,则执行熔断处理。
第三方面,本申请实施例提供一种业务控制装置,包括:
获取单元,用于根据业务模块每次执行打击操作时上报的通知消息,获取业务模块执行打击操作的操作频率;
生成单元,用于若所述打击操作的操作频率满足预先设置的所述打击操作的熔断规则,则生成所述打击操作的熔断信息;
存储单元,用于将所述打击操作的熔断信息进行存储,以使所述业务模块通过静态库接口获取到存储的所述打击操作的熔断信息后,执行熔断处理。
在一种可选的实施例中,所述获取单元还用于:
获取所述业务模块在设定时间内执行打击操作的次数,将所述设定时间内执行打击操作的次数作为所述操作频率;
所述装置还包括第一确定单元,用于:
若所述操作频率达到第一设定频率阈值,则确定所述操作频率满足预先设置的所述打击操作的熔断规则。
在一种可选的实施例中,所述获取单元还用于:
以设定时间为时间窗口,将所述时间窗口划分为N个时间片段,按照滑动时间循环统计各个时间片段内所述业务模块执行打击操作的次数;其中,N为大于1的整数;
确定当前时间片段内所述业务模块执行打击操作的次数,并将当前时间片段内所述业务模块执行打击操作的次数和所述当前时间片段前面的N-1个时间片段内所述业务模块执行打击操作的次数求和,确定最近的一个时间窗口内所述业务模块执行打击操作的次数。
在一种可选的实施例中,所述获取单元还用于:
获取设定时间内被所述业务模块执行打击操作的账户的数量,将所述设定时间内被所述业务模块执行打击操作的账户的数量作为所述操作频率;
所述装置还包括第二确定单元,用于:
若所述操作频率达到第二设定频率阈值,则确定所述操作频率满足预先设置的所述打击操作的熔断规则。
在一种可选的实施例中,所述获取单元还用于:
将设定时间内所述业务模块每次执行打击操作针对的账户的标识作为一个元素,得到与所述设定时间内所述业务模块执行打击操作的次数对应的多个元素;
对各个元素分别进行哈希运算,得到多个哈希值,并将所述多个哈希值分给多个容器;
根据各个容器对应的哈希值集合,分别确定各个容器中的基数,将各个容器中的基数的调和平均值乘以容器的数量,得到设定时间内被所述业务模块执行打击操作的账户的数量。
在一种可选的实施例中,所述装置还包括切换单元,用于:
采用双缓冲的数据结构存储所述打击操作的熔断规则,若对所述打击操作的熔断规则进行更新,将写指针指向所述双缓冲中的第一缓冲,同时将读指针指向所述双缓冲中的第二缓冲,以在所述第一缓冲中更新熔断规则,并从所述第二缓冲中读取已存储的熔断规则;
将更新后的熔断规则写入所述第一缓冲后,将所述读指针切换至所述第一缓冲,以从所述第一缓冲中读取已存储的熔断规则。
在一种可选的实施例中,所述装置还包括接收单元,用于:
通过报表接口采用用户数据报协议接收所述业务模块在每次执行打击操作时上报的通知消息,并且不向所述业务模块返回确认接收消息。
在一种可选的实施例中,所述打击操作的熔断规则还包括所述打击操作的设定熔断时间;所述存储单元还用于:
根据所述设定熔断时间确定所述打击操作的熔断信息的存储时间,将携带存储时间的所述打击操作的熔断信息进行存储;
若所述打击操作的熔断信息的存储时间到达,则将所述打击操作的熔断信息删除。
在一种可选的实施例中,所述装置还包括设置单元,用于:
通过WEB页面预先设置所述打击操作的熔断规则。
第四方面,本申请实施例提供一种业务控制装置,包括:
上报单元,用于在每次执行打击操作时向统计模块上报通知消息,以使所述统计模块根据所述通知消息获取执行所述打击操作的操作频率,若所述操作频率满足预先设置的所述打击操作的熔断规则,则生成所述打击操作的熔断信息,并将所述熔断信息进行存储;
读取单元,用于若通过静态库接口从所述统计模块读取到存储的所述打击操作的熔断信息,则执行熔断处理。
第五方面,本申请实施例提供的一种电子设备,包括处理器和存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行上述任意一种业务控制方法的步骤。
第六方面,本申请实施例提供一种计算机可读存储介质,其包括程序代码,当所述程序产品在电子设备上运行时,所述程序代码用于使所述电子设备执行上述任意一种业务控制方法的步骤。
本申请的有益效果如下:
本申请实施例的业务控制方法、装置和电子设备中,根据业务模块在每次执行打击操作时上报的通知消息,获取业务模块执行打击操作的操作频率;当打击操作的操作频率满足该打击操作的熔断规则时,生成该打击操作的熔断信息并进行存储,以使业务模块通过静态库接口获取到打击操作的熔断信息时,执行熔断处理。因此,本申请实施例可以通过监控业务模块执行打击操作的操作频率,在打击操作的操作频率发生异常时,使业务模块进行熔断处理,从而及时拦截打击操作,避免打击频率过高即打击数异常升高导致系统故障。并且,将打击操作的熔断信息进行存储,以使业务模块通过静态库接口获取存储的打击操作的熔断信息,不需要通过网络接口请求获取打击操作的熔断信息,可以减小网络开销,且调用静态库接口相比调用网络接口,过程简单。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种业务控制方法的应用场景示意图;
图2为本申请实施例提供的一种业务控制系统的结构框图;
图3为本申请实施例提供的一种业务控制系统的架构示意图;
图4为本申请实施例提供的一种滑动时间窗口的示意图;
图5为本申请实施例提供的一种业务控制系统中的统计模块的双缓冲数据结构的示意图;
图6为本申请实施例提供的一种业务控制方法的流程示意图;
图7为本申请实施例提供的另一种业务控制方法的流程示意图;
图8为本申请实施例提供的一种业务控制装置的结构框图;
图9为本申请实施例提供的另一种业务控制装置的结构框图;
图10为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
下面对本申请实施例中涉及的部分概念进行介绍。
熔断:在计算机系统中,当某个模块发生异常时,立即自动停止或者拦截该模块的服务一段时间,等待正常后再恢复该模块的服务,防止造成更大的故障。本申请中的业务模块的打击频率异常升高可以认为业务模块的打击服务发生异常,需要自动熔断业务模块的打击。
恶意行为:违反国家法律法规或者违反微信帐号使用协议的行为,例如诈骗、赌博、使用外挂、买卖违禁品等。
PV:即Page View,表示网页的浏览量,在本申请实施例中可以理解为业务模块上报的通知消息的数量。
UV:即Unique Visitor,表示浏览网页的自然人数,在本申请实施例中可以理解为业务模块上报的通知消息中不同的账户的数量。也就是说,通知消息中的相同账户会被去重,只统计一次。
UIN(User Network Interfac,用户侧接口):表示用户唯一编号,每个用户对应一个不同的UIN。在本申请实施例中可以理解为账户唯一编号。
下文中所用的词语“示例性”的意思为“用作例子、实施例或说明性”。作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
文中的术语“第一”、“第二”仅用于描述目的,而不能理解为明示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
为了避免大面积误打击事故的发生,当业务模块的打击频率异常升高时,为了使业务模块可以自动熔断,及时拦截打击操作,避免造成故障,本申请实施例提供一种业务控制方法、装置和电子设备,根据业务模块在每次执行打击操作时上报的通知消息,获取业务模块执行打击操作的操作频率,例如,打击操作可以是业务模块针对执行恶意行为的账户的打击操作;若打击操作的操作频率满足预先设置的打击操作的熔断规则,则生成打击操作的熔断信息;将打击操作的熔断信息进行存储,以使业务模块通过静态库接口获取到存储的打击操作的熔断信息后,执行熔断处理。因此,本申请可以在打击操作的操作频率发生异常时,自动触发熔断,阻断该打击操作,避免打击频率过高即打击数异常升高导致系统故障。
并且,将打击操作的熔断信息进行存储,以使业务模块通过静态库接口获取存储的打击操作的熔断信息,不需要业务模块通过网络接口请求获取打击操作的熔断信息,可以减小网络开销,且调用静态库接口相比调用网络接口,简单很多。
下面结合附图及具体实施例对本申请作进一步详细的说明。
本申请实施例提供的确定业务控制系统的一种应用场景可以参见图1所示,该应用场景中包括终端设备100、业务服务器200、统计服务器300和数据库服务器400。终端设备100和业务服务器200之间可以通过通信网络进行通信,业务服务器200和统计服务器300之间、业务服务器200和数据库服务器400之间、统计服务器300和数据库服务器400之间也可以通过通信网络进行通信。业务服务器200上可以部署代理Agent模块,通过Agent模块定期从数据库服务器400获取数据,其中,agent模块可以指采集服务。在一种可选的实施方式中,通信网络可以是有线网络或无线网络。本申请在此不做限制。
其中,在本申请实施例中,终端设备100为用户使用的电子设备,该电子设备可以是个人计算机、手机、平板电脑、笔记本、电子书阅读器、智能家居等具有一定计算能力并且运行有社交平台的计算机设备,该社交平台可以是即时通讯类软件及网站或者社交类软件及网站。业务服务器200、统计服务器300和数据库服务器400均可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
当终端设备100上的社交平台的账户执行一些操作时,向业务服务器200发送操作请求,当业务服务器200根据账户的操作请求确定该账户在执行恶意行为时,例如账户频繁地收发红包,可以认为该账户可能在赌博,需要对该账户按照预设的打击策略进行打击,例如限制账户执行一些操作。业务服务器200在每次针对执行某个恶意行为的账户进行打击的时候,向统计服务器300上报通知消息,统计服务器300统计业务服务器200对该恶意行为的打击频率,当打击频率满足预先设置的对该恶意行为进行打击的熔断规则时,生成对该恶意行为进行打击的熔断信息并存储至数据库服务器400;业务服务器200可以通过Agent模块从数据库服务器400中获取已存储的熔断信息并存储至内存,通过静态库接口读取内存中的熔断信息,确定内存中的熔断信息是否包括目标打击的熔断信息,其中,目标打击可以理解为业务服务器200针对执行目标恶意行为的账户进行打击;如果包括,则进行熔断处理,以停止目标打击。因此,可以在打击频率发生异常时,自动触发熔断,阻断打击。并且,由于业务服务器200调用静态库接口读取本地内存以实现自动熔断,可以减小网络开销。
上述图1的应用场景只是实现本申请实施例的一个应用场景的示例,本申请实施例并不限于上述图1所述的应用场景。
下面首先对实现本申请实施例的业务控制方法的一种业务控制系统进行介绍。
图2示出了本申请实施例提供的一种业务控制系统的结构框图。参照图2所示,业务控制系统包括业务模块21、统计模块22和数据存储模块23;其中,
统计模块22,用于根据业务模块21在每次执行打击操作时上报的通知消息,统计业务模块21执行打击操作的操作频率,当操作频率满足预先设置的打击操作的熔断规则时,生成打击操作的熔断信息,并将熔断信息写入数据存储模块23;其中,打击操作为业务模块21针对执行目标行为的账户进行打击的操作,目标行为可以是上述的恶意行为,此时,打击操作可以是针对执行恶意行为的账户进行打击的操作。
具体地说,预先设置的打击操作的熔断规则可以是打击操作的操作频率达到设定频率阈值。打击操作以针对执行恶意行为的账户进行打击为例,恶意行为可以包括多种,例如可以是赌博、买卖违禁品、使用外挂、招嫖、色情等,因此,打击操作根据打击的账户所执行的恶意行为的种类,也可以包括多种,不同的打击操作可以对应不同的熔断规则,例如,针对赌博账户的打击对应第一熔断规则,针对买卖违禁品账户的打击对应第二熔断规则。
多种恶意行为可以通过不同的标识进行区分,例如,为每种恶意行为赋予相应的key,不同的恶意行为可以对应key1、key2、key3……等。此时,不同的打击操作也可以通过恶意行为的标识进行区分。打击操作的熔断信息用于表示打击操作触发其对应的熔断规则。
数据存储模块23,用于存储统计模块22生成的熔断信息。
在一些实施例中,数据存储模块23可以包括读写代理子模块和数据库;其中的读写代理子模块用于提供对数据库的读写操作,也就是说,读写代理子模块可以将统计模块22生成的熔断信息写入数据库,或者读取数据库中的熔断信息。
由上述可知,打击操作可以包括多种,数据存储模块23中存储的熔断信息可以包括不同的打击操作的熔断信息。
业务模块21,用于从数据存储模块23中获取已存储的熔断信息,并将获取到的熔断信息存储至内存,通过静态库接口读取内存中的信息,确定内存中的信息是否包括打击操作的熔断信息,如果包括,执行熔断处理。
具体地,打击操作包括多种时,业务模块21在执行熔断处理时,可以停止所有的打击操作,也可以停止触发熔断的打击操作,触发熔断的打击操作是指操作频率异常升高的打击操作。
在该实施例中,业务模块21、统计模块22和数据存储模块23可以分别部署在图1中的业务服务器200、统计服务器300和数据库服务器400中。业务模块21可以通过Agent模块从数据存储模块23中定期的获取数据(已存储的熔断信息,其中可以包括已经被熔断的打击操作的熔断信息),并将获取的数据写入本地内存,业务模块可以通过静态库接口读取本地内存中的数据,其中的静态库接口是指以静态库的形式提供的接口,以检查当前执行的打击操作是否触发熔断,如果触发熔断,则熔断该打击操作。本申请实施例中,业务模块调用静态库接口读取本地内存以实现自动熔断,相比调用网络接口实现自动熔断,简单很多。
在一些实施例中,打击操作的操作频率可以包括设定时间内业务模块执行打击操作的次数、设定时间内被业务模块执行打击操作的账户的数量中的一种或者两种。
具体地说,针对每种打击操作,统计模块根据业务模块上报的通知消息,可以通过以下两种模式中的一种或两种统计打击操作的操作频率:
PV统计模式,在设定时间内针对打击操作上报的通知消息的数量(即打击操作的数量),类似网页的访问次数。
UV统计模式,在设定时间内针对打击操作上报的通知消息中的不同UIN数(即打击操作针对的不同账户的数量),类似网页的访问人数。
在一种可选的实施方式中,统计模块可以通过如下方式进行PV统计:
获取业务模块在设定时间内执行打击操作的次数,将设定时间内执行打击操作的次数作为操作频率。此时,预先设置的打击作的熔断规则可以是操作频率达到第一设定频率阈值。因此,若操作频率达到第一设定频率阈值,则确定操作频率满足预先设置的打击操作的熔断规则。
在另一种可选的实施方式中,统计模块可以通过如下方式进行UV统计:
获取设定时间内被业务模块执行打击操作的账户的数量,将设定时间内被业务模块执行打击操作的账户的数量作为操作频率。此时,预先设置的打击作的熔断规则可以是操作频率达到第二设定频率阈值。因此,若操作频率达到第二设定频率阈值,则确定操作频率满足预先设置的打击操作的熔断规则。其中,第一设定频率阈值和第二设定频率阈值可以根据需要进行设定,例如分别为每两小时50万、每两小时30万,本申请对此不做限制。
由此,本申请实施例不仅可以进行PV统计或者UV统计,还可以同时进行PV统计和UV统计,以实现两种统计维度,支持的业务场景多样且全面。
在一些实施例中,打击操作的熔断规则还包括打击操作的设定熔断时间;
统计模块22,还用于根据设定熔断时间确定对应的熔断信息的存储时间,将携带存储时间的熔断信息存储至数据存储模块23,以使数据存储模块23在熔断信息的存储时间到达后,将对应的熔断信息删除。
可以理解的是,业务模块熔断打击操作后,在经过一定时间后可以清除熔断。具体地说,在预先设置打击操作的熔断规则时,可以设置其熔断时间,统计模块在生成打击操作的熔断信息时,可以根据设置的熔断时间确定熔断信息的存储时间,进而将携带存储时间的熔断信息存储至数据存储模块23。
在一种可选的实施例中,为了便于预先设置打击操作的熔断规则,本申请实施例的业务控制系统还包括WEB配置模块;WEB配置模块用于配置打击操作的熔断规则,向统计模块22发送配置的打击操作的熔断规则。
具体地,WEB配置模块可以是WEB后台,WEB后台可以提供WEB页面,配置人员可以在WEB页面中配置打击操作的熔断规则,并且将配置的打击操作的熔断规则发布至统计模块,通过页面方便配置和运营。
在一种可选的实施例中,业务模块21可以主动设置熔断或者清除熔断,具体地,设置熔断可以通过静态库接口将自身设置的打击操作的熔断信息存储至数据存储模块23;清除熔断可以通过静态库接口向数据存储模块23发送清除请求,以使数据存储模块23将打击操作的熔断信息删除。
图3示出了本申请实施例提供的一种业务控制系统的架构示意图。下面通过图3所示的架构示意图对业务控制系统进行介绍。
参照图3所示,业务控制系统包括设置有静态库接口的业务模块、Agent模块、统计模块、WEB配置模块、KV(key-value)数据库、KV读写代理模块Proxy(代理);其中,KV数据库是指一种以键值对存储数据的一种数据库。
通过WEB配置模块可以预先配置打击操作的熔断规则,并将配置的熔断规则发布至统计模块的规则文件RuleFile中,业务模块在每次执行打击操作时,可以通过网络向统计模块上报通知消息,统计模块根据该通知消息统计业务模块执行打击操作的操作频率,当打击操作的操作频率满足预先配置的该打击操作的熔断规则时,设置熔断,即生成该打击操作的熔断信息,并通过Proxy将熔断信息写入KV数据库。例如,该打击操作可以通过key表示,统计模块在设置熔断时可以将key通过Proxy将熔断信息写入KV数据库。Agent模块可以通过Proxy定期从KV数据库中读取数据(已触发熔断规则的key)写入到本地内存文件File。
业务模块设置有静态库接口,通过该静态库接口可以主动设置熔断、清除熔断以及检查熔断等。检查熔断是指业务模块通过静态库接口读取本地内存文件Flie中的数据,以检查熔断,即检查当前执行的打击操作是否被设置熔断。由于检查熔断的频率比较高,如果采用网络接口从统计模块中获取熔断信息以检查熔断,会非常复杂并且网络开销大,本申请实施例的业务模块通过静态库接口读取本地内存以检查熔断,实现简单,减少网络开销。
本申请实施例的统计模块不依赖Redis(Remote Dictionary Server,远程字典服务)系统,Redis是一个key-value存储系统,其实现的功能比较多,架构复杂,如果采用Redis统计打击操作的操作频率,业务模块在每次检查熔断时,需要向Redis发起一个网络请求,以查看Redis中是不是存在熔断数据,以确定是否进行熔断,网络开销比较大,并且Redis本身比较复杂,不易维护和扩展。而上述业务控制系统中业务模块可以通过agent模块定期将数据存储模块中存储的熔断数据拉取至本地内存,由于业务模块提供一个静态库封装好一个检查接口,来检查本地内存是否存在熔断数据,业务模块调用静态库接口检查熔断,相对于采用Redis时通过网络接口发起网络请求,过程简单,减小网络开销。因此,本申请实施例的业务控制系统的架构轻量,简单,可靠,易维护和扩展。
在一些实施例中,在统计操作频率时,可以统计每设定时间内的操作次数,例如,需要统计2小时内打击操作的次数时,每隔2小时统计计数重新从0开始。但是这样,在某些时刻,无法得知最近的2小时内的操作次数,例如3点到5点为一个时间周期,在3点时从0开始计数,则在4点时只能得到最近的一个小时内的操作次数,这种统计算法容易造成熔断被漏掉。针对上述问题,本申请实施例可以采用滑动时间窗口算法统计最近的设定时间内的打击操作的次数。具体统计方法如下:
以设定时间为时间窗口,将时间窗口划分为N个时间片段,按照滑动时间循环统计各个时间片段内业务模块执行打击操作的次数;其中,N为大于1的整数;
若接收到业务模块21当前上报的通知消息,确定该通知消息对应的当前时间片段,并统计当前时间片段内业务模块执行打击操作的次数;
将当前时间片段内的打击操作的次数和当前时间片段前面的N-1个时间片段内的打击操作的次数求和,确定最近的一个时间窗口内的打击操作的次数。
具体地说,以图4为例,时间窗口为2小时,以30秒为单位将2小时划分为240个时间片段,图4中的每一格代表一个30秒的时间片段,总共240格,这样就可以统计7200秒(2小时)内的计数。每一格可以分别单独进行计数,当通知消息到来时,把当前时间的索引index对应的计数增1,然后向前遍历求和一遍每个格子的计数值,就可以得到最近2小时内的总计数。随着时间的流逝,index不断向前滑动。
例如,可以采用AddAndSum函数实现上述过程,具体可以包括:将2小时以30秒为单位划分成240个时间片段,每个时间片段维护一个变量进行计数,也就是说,每一个key(打击操作)可以对应一个240个计数的数组。
若统计模块接收到业务模块21当前上报的通知消息,获取当前时间,根据index确定当前时间对应的时间片段,对该时间片段进行计数,然后遍历该时间片段前面的239个时间片段,将该时间片段的计数和其前面的239个时间片段的计数求和,得到最近的2小时的总上报次数。
可以理解的是,时间片段的长度越小,需要的时间片段越多,时间片段的数组越大,内存消耗越多,但是滑动过程更平滑,统计精度越高;相反,时间片段的长度越大,需要的时间片段越少,时间片段的数组越小,内存消耗越少。统计模块针对不同的时长配置,例如配置成按分钟、小时、天等时间单位统计频率,可以选择不同的时间片段长度来做划分,从而做到统计精度和耗费的均衡。
本申请实施例采用滑动时间窗口算法进行PV模式统计,统计时长动态可调整,由于统计的是最近的设定时间的频率,而不是每设定时间的频率,统计精度更高,并且,对key无任何限制,易于接入各种业务。
在一种可选的实施例中,当操作频率包括设定时间内被业务模块执行打击操作的账户的数量时,统计模块22还用于采用HyperLogLog算法统计设定时间内被业务模块执行打击操作的账户的数量。
具体地,每个账户可以对应一个uin,统计模块22可以对接收到的通知消息中的uin去重后再统计,在上述HyperLogLog算法、hash map算法、Bloom Filter算法中,hashmap算法、Bloom Filter算法这2种算法都需要在O(1)时间判重,而HyperLogLog算法在不需要判重的情况下,可以直接统计出UV。
下面通过表1对比一下上述三种算法的特性:
对于hash map算法,一个key做1亿个32位uin的判重至少需要380MB内存,内存消耗较大,key数量不可扩展。
对于bloom filter算法,要做到1%的误判率,理论上一亿32位uin需要110MB内存,7个hash函数。另外bloom filter需要提前预估使用的内存量,然而熔断场景下不同key请求的uin数从几万到几亿非常的不确定,无法提前做出评估。
HyperLogLog算法也是一个概率算法,该算法特点是,当需要统计的元素数量即使非常的大,需要的空间总是固定和很小的。而且HyperLogLog不需要判重,相同元素不会被重复统计。统计模块采用此算法统计UV,每一个key使用32KB(2^15)内存,即可以统计2^64不同的uin,统计的误差能够在1%以内。
通过以上对比,优选地,可以采用HyperLogLog算法,该算法的内存消耗小,不需要判重,相同uin不会被重复统计。
具体地,采用HyperLogLog算法统计设定时间内被所述业务模块执行打击操作的账户的数量,可以通过如下步骤实现:
1)将设定时间内业务模块每次执行打击操作针对的账户的标识作为一个元素,得到与设定时间内业务模块执行打击操作的次数对应的多个元素;
具体地,账户的标识可以是上述uin,该uin表示用户唯一编号,将业务模块每次执行打击操作针对的账户的uin作为一个元素,也就是说,多个元素中可能存在相同的元素,在统计多个元素的数量时,需要将相同的元素进行去重,通过下面的步骤2)和3)可以得到去重后的元素的数量,即设定时间内被业务模块执行打击操作的账户的数量。
2)对各个元素分别进行哈希运算,得到多个哈希值,并将多个哈希值分给多个容器中;
该步骤中,容器可以是桶,下面以桶为例进行说明。每个元素对应的哈希值可以是二进制数,在将每个元素分到多个桶时,可以根据该元素的哈希值的最后p位决定,也就是说,桶的数量可以是2p。每个桶具有一个编号,该编号对应于元素的哈希值的最后p位的数值,因此,可以计算元素的哈希值的最后p位的数值,得到该元素对应的桶的编号。例如,根据哈希值的低两位的数值得到对应的桶的编号,对于某个哈希值:1001011000011,它所在桶的编号为:11(2)=1*2^1+1*2^0=3,既处于第3个桶。
3)根据各个容器对应的哈希值集合,分别确定各个容器中的基数,将各个容器中的基数的调和平均值乘以容器的数量,得到设定时间内被业务模块执行打击操作的账户的数量。
每个桶中可以记录一个数字,代表对应到该桶的哈希值的第一个1出现的最大位置,具体地,分别确定该桶中的多个哈希值对应的第一个1出现的位置,将其中第一个1出现的最大位置进行记录。例如有集合[010,100,001],集合中的3个元素的第一个1出现的位置分别为2、1、3,可以得到第一个1出现的最大位置为3。
在上面的例子中,对于哈希值:1001011000011,计算出桶号为3后,剩下的位数是:10010110000,从低位到高位看,第一次出现1的位置是5,如果比原先3号桶中记录的第一个1出现的最大位置的数字大,则把3号桶中的数字更新为5,以此类推,可以得到每个桶中第一个1出现的最大位置k_max。根据每个桶中的k_max,可以确定出每个桶中的基数\hat{n}=2^{k_{max}}n^=2kmax,其中基数通常用来统计一个集合中不重复的元素个数。
对所有桶中的基数求调和平均值,即将所有基数取倒数,并将所有基数的倒数求平均数后,再将该平均数取倒数得到调和平均值。将调和平均值乘以桶的数量,即得到去重后的元素的数量,即设定时间内被业务模块执行打击操作的账户的数量。由此,通过确定各个容器中的基数,可以根据各个容器中的基数得到去重后的元素的数量,因而采用HyperLogLog算法,统计设定时间内被所述业务模块执行打击操作的账户的数量,并不需要对各个容器中的元素进行判重(即判断重复元素的数量),即可直接统计出UV。
在一些实施例中,WEB配置模块可以更新配置的熔断规则,例如添加新的打击操作的熔断规则,或者修改已配置的打击操作的熔断规则。WEB配置模块将更新后的熔断规则发布至统计模块。统计模块需要将更新后的熔断规则写入缓存中,在写入的同时,有可能统计模块也需要读取缓存中的熔断规则,为了使得写入和读取可以同时进行,统计模块22还用于:
采用双缓冲的数据结构存储打击操作的熔断规则,若对打击操作的熔断规则进行更新,将写指针指向双缓冲中的第一缓冲,同时将读指针指向双缓冲中的第二缓冲;将更新后的熔断规则写入第一个缓冲后,将读指针切换至第一缓冲。
具体地,如图5所示,双缓冲Buffer中的第一缓冲和第二缓冲都可以设置一个hash_map<key,Rule>数据结构,其中的key可以表示打击操作,Rule表示Web配置模块配置的熔断规则,第一缓冲为:<key1,Rule>、<key2,Rule>、<key3,Rule>…,第二缓冲为:<key1,Rule>、<key4,Rule>、<key5,Rule>…,每个Rule对应一个计数器,计数器实现了一个AddAndSum(key,uin)函数,每次对key的次数加一,并返回统计的总数。如果统计的是不同账户的数量,AddAndSum可以对账户uin做去重。因此,计数器AddAndSum函数可以实现两种统计模式:PV统计模式和UV统计模式。
由于统计模块采用了一个双Buffer的数据结构,每次在更新熔断规则时,将写指针指向的第一缓冲,同时将读指针指向第二缓冲,异步线程可以将更新的熔断规则加载到第一缓冲,当加载完成后,将读指针切换至第一缓冲,即实现双hash_map切换。
由图5可知,统计模块可以包括多个服务端server,多个服务端server可以对应一个Report接口。为了便于统计,可以将相同key的Report请求(即业务模块上报的通知消息)哈希到同一个服务端server进行统计,具体实现方式可以为:
统计模块的服务端server每收到一个Report请求,该Report请求例如表示为Report(key2),其中的key2表示某个打击操作,可以对key2进行哈希得到对应的哈希值,例如为1,该哈希值对应其中一个服务端server,也就是说,不同的服务端server对应不同的哈希值,这样,可以将相同key的Report请求上报至同一个服务端server。
服务端server在收到一个Report请求时,查询hash_map<key,Rule>,调用Rule计数器的AddAndSum函数统计次数,如果统计频率超过熔断规则中设置的频率阈值,将调用Proxy将Rule对应的key写入到KV数据库,对key表示的打击操作进行熔断。由于hash_map中Rule的更新采用的是双缓冲模式,对Report请求的处理过程并不会对hash_map数据结构加上全局锁,使得统计模块可以同时写入和读取熔断规则。
在一种可选的实施例中,统计模块22的Report接口可以采用UDP(User DatagramProtocol,用户数据报协议)协议和不回包,其中,不回包可以指统计模块22在收到业务模块上报通知消息后不向业务模块返回确认消息;业务模块21可以在每次执行打击操作时调用Report接口向统计模块22上报通知消息。
由于UDP协议具有快速传输的特点,因此可以提高通知消息的传输速度,并且采用不回包可以减小统计模块的传输负荷。
基于相同的发明构思,本申请实施例提供一种业务控制方法,可以由统计模块执行,在一些实施例中,统计模块例如可以是图1中的统计服务器。在另一些实施例中,统计模块还可以是终端设备中的模块。参照图6所示,该业务控制方法包括如下步骤:
步骤S601,根据业务模块每次执行打击操作时上报的通知消息,获取业务模块执行打击操作的操作频率;
步骤S602,若操作频率满足预先设置的打击操作的熔断规则,则生成打击操作的熔断信息;
步骤S603,将打击操作的熔断信息进行存储,以使业务模块通过静态库接口获取到存储的打击操作的熔断信息后,执行熔断处理。
具体地,统计服务器可以将打击操作的熔断信息存储到数据库中,该数据库可以理解为上述是实施例的数据存储模块,数据存储模块和统计模块可以设置一个服务器中,也可以设置在不同的服务器中,例如统计模块为统计服务器时,数据存储模块可以设置在统计服务器中,也可以设置在图1中的数据库服务器中,本申请实施例对此不作限定。
在一种可选的实施例中,获取业务模块执行打击操作的操作频率,包括:
获取业务模块在设定时间内执行打击操作的次数,将设定时间内执行打击操作的次数作为操作频率;
方法还包括:
若操作频率达到第一设定频率阈值,则确定操作频率满足预先设置的打击操作的熔断规则。
在一种可选的实施例中,获取业务模块在设定时间内执行打击操作的次数,包括:
以设定时间为时间窗口,将时间窗口划分为N个时间片段,按照滑动时间循环统计各个时间片段内业务模块执行打击操作的次数;其中,N为大于1的整数;
确定当前时间片段内业务模块执行打击操作的次数,并将当前时间片段内业务模块执行打击操作的次数和当前时间片段前面的N-1个时间片段内业务模块执行打击操作的次数求和,确定最近的一个时间窗口内业务模块执行打击操作的次数。
在一种可选的实施例中,获取业务模块执行打击操作的操作频率,包括:
获取设定时间内被业务模块执行打击操作的账户的数量,将设定时间内被业务模块执行打击操作的账户的数量作为操作频率;
方法还包括:
若操作频率达到第二设定频率阈值,则确定操作频率满足预先设置的打击操作的熔断规则。
在一种可选的实施例中,获取设定时间内被业务模块执行打击操作的账户的数量,包括:
将设定时间内业务模块每次执行打击操作针对的账户的标识作为一个元素,得到与设定时间内业务模块执行打击操作的次数对应的多个元素;
对各个元素分别进行哈希运算,得到多个哈希值,并将多个哈希值分给多个容器;
根据各个容器对应的哈希值集合,分别确定各个容器的基数,将各个容器的基数的平均值乘以容器的数量,得到设定时间内被业务模块执行打击操作的账户的数量。
在一种可选的实施例中,方法还包括:
采用双缓冲的数据结构存储打击操作的熔断规则,若对打击操作的熔断规则进行更新,将写指针指向双缓冲中的第一缓冲,同时将读指针指向双缓冲中的第二缓冲,以在第一缓冲中更新熔断规则,并从第二缓冲中读取已存储的熔断规则;
将更新后的熔断规则写入第一缓冲后,将读指针切换至第一缓冲,以从第一缓冲中读取已存储的熔断规则。
在一种可选的实施例中,方法还包括:
通过报表接口采用用户数据报协议接收业务模块在每次执行打击操作时上报的通知消息,并且不向业务模块返回确认接收消息。
在一种可选的实施例中,打击操作的熔断规则还包括打击操作的设定熔断时间;方法还包括:
根据设定熔断时间确定打击操作的熔断信息的存储时间,将携带存储时间的打击操作的熔断信息进行存储;
若打击操作的熔断信息的存储时间到达,则将打击操作的熔断信息删除。
在一种可选的实施例中,方法还包括:
通过WEB页面预先设置打击操作的熔断规则。
基于相同的发明构思,本申请实施例提供一种业务控制方法,可以由业务模块执行。在一些实施例中,该业务模块可以是图1中的业务服务器。在另一些实施例中,该业务模块还可以是终端设备中的模块。参照图7所示,该业务控制方法包括如下步骤:
步骤S701,在每次执行打击操作时向统计模块上报通知消息,以使统计模块根据通知消息获取执行打击操作的操作频率,若操作频率满足预先设置的打击操作的熔断规则,则生成打击操作的熔断信息,并将熔断信息进行存储;
步骤S702,若通过静态库接口从统计模块读取到存储的打击操作的熔断信息,则执行熔断处理。
具体地,业务模块可以从统计服务器中定期拉取存储的打击操作的熔断信息,并存储至本地内存,然后通过静态库接口读取本地内存中的数据,当读取到打击操作的熔断信息,则对打击操作进行熔断。
基于相同的发明构思,本申请实施例提供一种业务控制装置,参照图8所示,该业务控制装置包括:
获取单元81,用于根据业务模块每次执行打击操作时上报的通知消息,获取业务模块执行打击操作的操作频率;
生成单元82,用于若打击操作的操作频率满足预先设置的打击操作的熔断规则,则生成打击操作的熔断信息;
存储单元83,用于将打击操作的熔断信息进行存储,以使业务模块通过静态库接口获取到存储的打击操作的熔断信息后,执行熔断处理。
在一种可选的实施例中,获取单元还用于:
获取业务模块在设定时间内执行打击操作的次数,将设定时间内执行打击操作的次数作为操作频率;
装置还包括第一确定单元,用于:
若操作频率达到第一设定频率阈值,则确定操作频率满足预先设置的打击操作的熔断规则。
在一种可选的实施例中,获取单元还用于:
以设定时间为时间窗口,将时间窗口划分为N个时间片段,按照滑动时间循环统计各个时间片段内业务模块执行打击操作的次数;其中,N为大于1的整数;
确定当前时间片段内业务模块执行打击操作的次数,并将当前时间片段内业务模块执行打击操作的次数和当前时间片段前面的N-1个时间片段内业务模块执行打击操作的次数求和,确定最近的一个时间窗口内业务模块执行打击操作的次数。
在一种可选的实施例中,获取单元还用于:
获取设定时间内被业务模块执行打击操作的账户的数量,将设定时间内被业务模块执行打击操作的账户的数量作为操作频率;
装置还包括第二确定单元,用于:
若操作频率达到第二设定频率阈值,则确定操作频率满足预先设置的打击操作的熔断规则。
在一种可选的实施例中,获取单元还用于:
将设定时间内业务模块每次执行打击操作针对的账户的标识作为一个元素,得到与设定时间内业务模块执行打击操作的次数对应的多个元素;
对各个元素分别进行哈希运算,得到多个哈希值,并将多个哈希值分给多个容器;
根据各个容器对应的哈希值集合,分别确定各个容器中的基数,将各个容器中的基数的调和平均值乘以容器的数量,得到设定时间内被业务模块执行打击操作的账户的数量。
在一种可选的实施例中,装置还包括切换单元,用于:
采用双缓冲的数据结构存储打击操作的熔断规则,若对打击操作的熔断规则进行更新,将写指针指向双缓冲中的第一缓冲,同时将读指针指向双缓冲中的第二缓冲,以在第一缓冲中更新熔断规则,并从第二缓冲中读取已存储的熔断规则;
将更新后的熔断规则写入第一缓冲后,将读指针切换至第一缓冲,以从第一缓冲中读取已存储的熔断规则。
在一种可选的实施例中,装置还包括接收单元,用于:
通过报表接口采用用户数据报协议接收业务模块在每次执行打击操作时上报的通知消息,并且不向业务模块返回确认接收消息。
在一种可选的实施例中,打击操作的熔断规则还包括打击操作的设定熔断时间;存储单元还用于:
根据设定熔断时间确定打击操作的熔断信息的存储时间,将携带存储时间的打击操作的熔断信息进行存储;
若打击操作的熔断信息的存储时间到达,则将打击操作的熔断信息删除。
在一种可选的实施例中,装置还包括设置单元,用于:
通过WEB页面预先设置打击操作的熔断规则。
基于相同的发明构思,本申请实施例提供一种业务控制装置,参照图9所示,该业务控制装置包括:
上报单元91,用于在每次执行打击操作时向统计模块上报通知消息,以使统计模块根据通知消息获取执行打击操作的操作频率,若操作频率满足预先设置的打击操作的熔断规则,则生成打击操作的熔断信息,并将熔断信息进行存储;
读取单元92,用于若通过静态库接口从统计模块读取到存储的打击操作的熔断信息,则执行熔断处理。
在介绍了本申请示例性实施方式的业务控制方法之后,接下来,介绍根据本申请的另一示例性实施方式的电子设备。
所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
参阅图10所示,其为本申请实施例中的一种电子设备的组成结构示意图。该电子设备可以用于业务控制。在一种实施例中,该电子设备可以是服务器,如图1所示的业务服务器200或统计服务器300。在该实施例中,电子设备的结构可以如图10所示,包括存储器1001,通讯模块1003以及一个或多个处理器1002。
存储器1001,用于存储处理器1002执行的计算机程序。存储器1001可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及运行即时通讯功能所需的程序等;存储数据区可存储各种即时通讯信息和操作指令集等。
存储器1001可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器1001也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);或者存储器1001是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器1001可以是上述存储器的组合。
处理器1002,可以包括一个或多个中央处理单元(central processing unit,CPU)或者为数字处理单元等等。处理器1002,用于调用存储器1001中存储的计算机程序时实现上述业务控制方法。
通讯模块1003用于与终端设备和其他服务器进行通信。
本申请实施例中不限定上述存储器1001、通讯模块1003和处理器1002之间的具体连接介质。本公开实施例在图10中以存储器1001和处理器1002之间通过总线1004连接,总线1004在图10中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线1004可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器1001中存储有计算机存储介质,计算机存储介质中存储有计算机可执行指令,计算机可执行指令用于实现本申请实施例的业务控制方法。处理器1002用于执行上述的业务控制方法。
本申请的实施例还提供了一种计算机存储介质,计算机存储介质中存储有计算机可执行指令,计算机可执行指令用于实现本申请任一实施例所记载的业务控制方法。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请实施例上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请实施例各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
在一些可选的实施方式中,本申请实施例还提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任意一种业务控制方法的步骤。例如,计算机设备可以执行如图5或图6中所示的步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请的实施方式的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在计算装置上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被命令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由命令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。

Claims (10)

1.一种业务控制方法,其特征在于,包括:
根据业务模块每次执行打击操作时上报的通知消息,获取业务模块执行每种打击操作的操作频率;其中,所述打击操作为针对执行目标行为的账户进行打击的操作;
若任一种打击操作的操作频率满足预先设置的所述任一种打击操作的熔断规则,则生成所述任一种打击操作的熔断信息;其中,所述任一种打击操作的熔断信息用于表示所述任一种打击操作触发对应的熔断规则;
将生成的至少一种打击操作的熔断信息进行存储,以使所述业务模块获取已存储的熔断信息,并将获取到的熔断信息存储至内存,通过静态库接口读取到所述内存中的任一种打击操作的熔断信息后,对所述任一种打击操作执行熔断处理。
2.根据权利要求1所述的方法,其特征在于,所述获取业务模块执行每种打击操作的操作频率,包括:
获取所述业务模块在设定时间内执行每种打击操作的次数,将所述设定时间内执行每种打击操作的次数作为每种打击操作的操作频率;
所述方法还包括:
若所述任一种打击操作的操作频率达到第一设定频率阈值,则确定所述任一种打击操作的操作频率满足预先设置的所述任一种打击操作的熔断规则。
3.根据权利要求2所述的方法,其特征在于,所述获取所述业务模块在设定时间内执行打击操作的次数,包括:
以所述设定时间为时间窗口,将所述时间窗口划分为N个时间片段,按照滑动时间循环统计各个时间片段内所述业务模块执行打击操作的次数;其中,N为大于1的整数;
确定当前时间片段内所述业务模块执行打击操作的次数,并将当前时间片段内所述业务模块执行打击操作的次数和所述当前时间片段前面的N-1个时间片段内所述业务模块执行打击操作的次数求和,确定最近的一个时间窗口内所述业务模块执行打击操作的次数。
4.根据权利要求1所述的方法,其特征在于,所述获取业务模块执行每种打击操作的操作频率,包括:
获取设定时间内被所述业务模块执行每种打击操作的账户的数量,将所述设定时间内被所述业务模块执行每种打击操作的账户的数量作为每种打击操作的操作频率;
所述方法还包括:
若所述任一种打击操作的操作频率达到第二设定频率阈值,则确定所述任一种打击操作的操作频率满足预先设置的所述任一种打击操作的熔断规则。
5.根据权利要求4所述的方法,其特征在于,所述获取设定时间内被所述业务模块执行每种打击操作的账户的数量,包括:
将设定时间内所述业务模块每次执行每种打击操作针对的账户的标识作为一个元素,得到与所述设定时间内所述业务模块执行每种打击操作的次数对应的多个元素;
对各个元素分别进行哈希运算,得到多个哈希值,并将所述多个哈希值分给多个容器;
根据各个容器对应的哈希值集合,分别确定各个容器中的基数,将各个容器中的基数的调和平均值乘以容器的数量,得到设定时间内被所述业务模块执行每种打击操作的账户的数量。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述方法还包括:
采用双缓冲的数据结构存储每种打击操作的熔断规则,若对每种打击操作的熔断规则进行更新,将写指针指向所述双缓冲中的第一缓冲,同时将读指针指向所述双缓冲中的第二缓冲,以在所述第一缓冲中更新熔断规则,并从所述第二缓冲中读取已存储的熔断规则;
将更新后的熔断规则写入所述第一缓冲后,将所述读指针切换至所述第一缓冲,以从所述第一缓冲中读取已存储的熔断规则。
7.一种业务控制方法,其特征在于,包括:
在每次执行打击操作时向统计模块上报通知消息,以使所述统计模块根据所述通知消息获取业务模块执行每种打击操作的操作频率,若任一种打击操作的操作频率满足预先设置的所述任一种打击操作的熔断规则,则生成所述任一种打击操作的熔断信息,并将生成的至少一种打击操作的熔断信息进行存储;其中,所述打击操作为针对执行目标行为的账户进行打击的操作,所述任一种打击操作的熔断信息用于表示所述任一种打击操作触发对应的熔断规则;
获取已存储的熔断信息,并将获取到的熔断信息存储至内存,若通过静态库接口读取到所述内存中的任一种打击操作的熔断信息,则对所述任一种打击操作执行熔断处理。
8.一种业务控制装置,其特征在于,包括:
获取单元,用于根据业务模块每次执行打击操作时上报的通知消息,获取业务模块执行每种打击操作的操作频率;其中,所述打击操作为针对执行目标行为的账户进行打击的操作;
生成单元,用于若任一种打击操作的操作频率满足预先设置的所述任一种打击操作的熔断规则,则生成所述任一种打击操作的熔断信息;其中,所述任一种打击操作的熔断信息用于表示所述任一种打击操作触发对应的熔断规则;
存储单元,用于将生成的至少一种打击操作的熔断信息进行存储,以使所述业务模块获取已存储的熔断信息,并将获取到的熔断信息存储至内存,通过静态库接口读取到内存中的任一种打击操作的熔断信息后,对所述任一种打击操作执行熔断处理。
9.一种业务控制装置,其特征在于,包括:
上报单元,用于在每次执行打击操作时向统计模块上报通知消息,以使所述统计模块根据所述通知消息获取执行每种打击操作的操作频率,若任一种打击操作的操作频率满足预先设置的所述任一种打击操作的熔断规则,则生成所述任一种打击操作的熔断信息,并将生成的至少一种打击操作的熔断信息进行存储;其中,所述打击操作为针对执行目标行为的账户进行打击的操作,所述任一种打击操作的熔断信息用于表示所述任一种打击操作触发对应的熔断规则;
读取单元,用于获取已存储的熔断信息,并将获取到的熔断信息存储至内存,若通过静态库接口读取到所述内存中的任一种打击操作的熔断信息,则执行熔断处理。
10.一种电子设备,其特征在于,其包括处理器和存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行权利要求1-6任一项所述方法或权利要求7所述方法的步骤。
CN202011590954.4A 2020-12-29 2020-12-29 业务控制方法、装置和电子设备 Active CN114697060B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011590954.4A CN114697060B (zh) 2020-12-29 2020-12-29 业务控制方法、装置和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011590954.4A CN114697060B (zh) 2020-12-29 2020-12-29 业务控制方法、装置和电子设备

Publications (2)

Publication Number Publication Date
CN114697060A CN114697060A (zh) 2022-07-01
CN114697060B true CN114697060B (zh) 2024-05-07

Family

ID=82132831

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011590954.4A Active CN114697060B (zh) 2020-12-29 2020-12-29 业务控制方法、装置和电子设备

Country Status (1)

Country Link
CN (1) CN114697060B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103645904A (zh) * 2013-12-20 2014-03-19 北京京东尚科信息技术有限公司 一种接口调用的缓存实现方法
KR20140121013A (ko) * 2013-04-04 2014-10-15 이화여자대학교 산학협력단 비휘발성 메모리를 위한 듀얼 버퍼링 파일 관리 방법, 파일 관리 시스템 및 대용량 저장 장치
CN106302421A (zh) * 2016-08-08 2017-01-04 腾讯科技(深圳)有限公司 一种信息拦截处理方法以及装置
CN106326461A (zh) * 2016-08-30 2017-01-11 杭州东方通信软件技术有限公司 一种基于网络信令记录的实时处理保障方法及系统
CN107026839A (zh) * 2016-11-16 2017-08-08 阿里巴巴集团控股有限公司 一种攻击请求处理方法和装置
CN109377236A (zh) * 2018-10-23 2019-02-22 上海盛付通电子支付服务有限公司 一种基于熔断机制的风险控制方法、设备及存储介质
CN109743358A (zh) * 2018-12-13 2019-05-10 平安普惠企业管理有限公司 异步消息接口熔断控制方法、装置、计算机设备及存储介质
CN110737567A (zh) * 2019-10-17 2020-01-31 吉旗(成都)科技有限公司 基于缓存的服务端接口熔断方法及装置
CN110955685A (zh) * 2019-11-29 2020-04-03 北京锐安科技有限公司 一种大数据基数估计方法、系统、服务器和存储介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140121013A (ko) * 2013-04-04 2014-10-15 이화여자대학교 산학협력단 비휘발성 메모리를 위한 듀얼 버퍼링 파일 관리 방법, 파일 관리 시스템 및 대용량 저장 장치
CN103645904A (zh) * 2013-12-20 2014-03-19 北京京东尚科信息技术有限公司 一种接口调用的缓存实现方法
CN106302421A (zh) * 2016-08-08 2017-01-04 腾讯科技(深圳)有限公司 一种信息拦截处理方法以及装置
CN106326461A (zh) * 2016-08-30 2017-01-11 杭州东方通信软件技术有限公司 一种基于网络信令记录的实时处理保障方法及系统
CN107026839A (zh) * 2016-11-16 2017-08-08 阿里巴巴集团控股有限公司 一种攻击请求处理方法和装置
CN109377236A (zh) * 2018-10-23 2019-02-22 上海盛付通电子支付服务有限公司 一种基于熔断机制的风险控制方法、设备及存储介质
CN109743358A (zh) * 2018-12-13 2019-05-10 平安普惠企业管理有限公司 异步消息接口熔断控制方法、装置、计算机设备及存储介质
CN110737567A (zh) * 2019-10-17 2020-01-31 吉旗(成都)科技有限公司 基于缓存的服务端接口熔断方法及装置
CN110955685A (zh) * 2019-11-29 2020-04-03 北京锐安科技有限公司 一种大数据基数估计方法、系统、服务器和存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
B/S模式中的远程调用;戚利;;电脑编程技巧与维护(第03期);全文 *

Also Published As

Publication number Publication date
CN114697060A (zh) 2022-07-01

Similar Documents

Publication Publication Date Title
US10938851B2 (en) Techniques for defense against domain name system (DNS) cyber-attacks
US10666680B2 (en) Service overload attack protection based on selective packet transmission
US7669241B2 (en) Streaming algorithms for robust, real-time detection of DDoS attacks
US7870200B2 (en) Monitoring the flow of messages received at a server
CN109117275B (zh) 基于数据分片的对账方法、装置、计算机设备及存储介质
CN104768139A (zh) 一种短信发送的方法及装置
EP2817924B1 (en) Message flooding prevention in messaging networks
Coskun et al. Mitigating sms spam by online detection of repetitive near-duplicate messages
CN107301215B (zh) 一种搜索结果缓存方法及装置、搜索方法及装置
CN112016030B (zh) 消息推送的方法、装置、服务器和计算机存储介质
CN111740868B (zh) 告警数据的处理方法和装置及存储介质
CN111030888B (zh) 域名系统dns容量测量方法、装置、设备及介质
CN107454120A (zh) 网络攻击防御系统和防御网络攻击的方法
CN110166486A (zh) 网站防护方法、装置及计算机可读存储介质
Yao et al. Detection and defense of cache pollution based on popularity prediction in named data networking
CN114697060B (zh) 业务控制方法、装置和电子设备
CN115017502A (zh) 一种流量处理方法、及防护系统
US10721641B2 (en) Duplicate detection and alerting
CN113364722A (zh) 网络安全防护方法和装置
US20140136647A1 (en) Router and operating method thereof
CN111131285B (zh) 一种针对随机域名攻击的主动防护方法
CN113672652A (zh) 一种数据访问方法、装置、设备及存储介质
CN114301696A (zh) 恶意域名检测方法、装置、计算机设备及存储介质
US9374474B1 (en) System, method, and computer program for detecting duplicated telecommunications events in a consumer telecommunications network
CN113556342A (zh) 一种dns缓存服务器前缀变化攻击防护方法及装置

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