1.本技术涉及计算机领域,尤其涉及一种数据流量控制方法及相关装置。
背景技术:2.在分布式系统中,为了提高可用性和可靠性,针对于主机分配了多个备机,主机可以基于多副本机制将日志拷贝至多个备机,虽然多副本确实能提高可靠性和可用性,但是也产生了一个新问题,那就是如何保证多个副本之间达成共识,也就是多个副本对任何一个提案(proposal)是一致的,一个提案如何来达成共识就需要采用共识算法。paxos算法可以说是分布式共识的代名词,当前常用的共识算法大多都是基于它发展而来的。可以这样简单理解,主机提出一个提案,然后将提案发送给其他备机,其他备机可以根据共识算法接受或拒绝提案,当主机确定多数备机的接受响应后,表明该条提案达成共识。其中,上述提案为日志,基于共识的日志复制,即是数据库的主机将日志复制给其他备机,并采用共识算法,当一条日志收到超过半数(或者其他接近50%的比例)的备机的响应则表示一条日志达成共识。
3.由于数据发送方的速率与接收方的速率不一定相等,如果发送方的发送速率太快,接收方可能处理不过来,处理不过来的数据会存到缓冲区,如果流量再大则只能丢弃报文。因为系统的性能是有限的,如果数据大量积压、丢包,可能会造成业务端到端性能的急剧下降。流量控制就是控制发送方的流量使之能够与接收方匹配,尤其是在高并发的时候,通过限制流量的注入防止大量请求造成系统压力过大导致系统崩溃的情况,从而保护服务正常可用。
4.在数据库流量控制领域,现有技术大多是基于队列高低水线进行主机与客户端之间的流量控制,控制效果较差。
技术实现要素:5.第一方面,本技术实施例提供了一种数据流量控制方法,应用于数据库系统,所述数据库系统包括主机,所述主机与m个备机以及客户端通讯连接,所述m为正整数,所述方法包括:获取在进行所述主机与所述m个备机之间的日志备份时的共识达成效率,所述共识达成效率与如下信息的至少一种有关:达成共识的日志带宽以及达成共识的时间开销;基于所述共识达成效率确定所述主机的数据流量信息,其中,所述数据流量信息用于控制所述主机接收所述客户端注入的数据的流量,且所述流量与所述共识达成效率正相关。
6.其中,共识达成效率可以理解为进行主备日志复制时主机与备机之间达成共识的效率。
7.其中,达成共识可以理解为,主机收到了多个备机发送的针对于某一条日志的确认ack,当发送上述确认ack的备机以及主机的数量超过当前主备机系统中主机和备机的总数量的一半(或者是其他阈值),则可以认为针对于该日志主备机之间达成了共识,例如主备机系统中包括一个主机和两个备机,则当主机自身完成了共识,且主机接收到至少一个
备机发送的确认ack,则可以认为该主备机之间达成了共识,又例如,主备机系统中包括一个主机和四个备机,则当主机自身完成了共识,且主机接收到至少两个备机发送的确认ack,则可以认为该主备机之间达成了共识。
8.其中,共识达成效率可以与达成共识的日志带宽有关,在一种实现中,所述共识达成效率与所述达成共识的日志带宽正相关,也就是说,在其他信息保持不变的情况下,主机与多个备机之间达成共识的日志带宽越高,则共识达成效率越高。
9.其中,共识达成效率可以与达成共识的时间开销有关,在一种实现中,所述共识达成效率与所述达成共识的时间开销负相关,也就是说,在其他信息保持不变的情况下,主机与多个备机之间达成共识的时间开销越高,则共识达成效率越低。
10.其中,在获取到共识达成效率之后,可以基于共识达成效率来确定主机的数据流量信息,其中所述数据流量信息用于控制所述主机接收所述客户端注入的数据的流量,且所述流量与所述共识达成效率正相关,也就是说,在其他信息保持不变的情况下,主机与多个备机之间的共识达成效率越高,则所述主机接收所述客户端注入的数据的流量越高。
11.本技术实施例中,根据共识算法的特点,以共识达成效率(例如包括达成共识的时延、端到端达成共识的日志带宽等)为控制目标,来确定并控制客户端的业务注入流量,控制效果确定、稳定。
12.现有技术中(例如mysql group peplication)基于配额进行流量控制,所有节点周期性相互传递各自的队列统计等信息,每个节点根据收到的队列统计信息计算处理后进行流量控制。mysql group peplication大约设置有10个参数,需要针对不同场景进行调参,而本技术实施例中可以直接通过历史的日志数据来进行数据传输流量的大小控制,不需要调参,易于实施。
13.在一种可能的实现中,所述方法还包括:获取历史采样时间段内所述主机与所述m个备机之间达成共识的多个日志的信息,所述多个日志的信息包括所述多个日志的日志大小;根据所述多个日志的日志大小以及所述历史采样时间段的长度,确定所述共识操作的带宽。具体的,可以按照一定历史采样时间周期(例如1秒)进行采样,采样一个周期内每条达成共识的日志的大小、每条达成共识的日志从开始写入时刻到达成共识时刻的时间开销。并基于历史采样时间周期内每条达成共识的日志的大小以及历史采样时间周期的时间长度来计算得到共识的日志带宽,该共识的日志带宽可以记为bw1,示例性的,该共识的日志带宽bw1可以等于该历史采样时间周期内达成共识的日志大小之和与历史采样时间周期的时长的除法结果。
14.在一种可能的实现中,所述方法还包括:获取历史采样时间段内所述主机与所述m个备机之间达成共识的多个日志的信息,所述多个日志的信息包括所述多个日志中每个日志达成共识的时间开销;根据所述多个日志中每个日志达成共识的时间开销,确定所述共识操作的时间开销。具体的,可以按照一定历史采样时间周期(例如1秒)进行采样,采样一个周期内每条达成共识的日志的大小、每条达成共识的日志从开始写入时刻到达成共识时刻的时间开销。并基于历史采样时间周期内每条达成共识的日志的时间开销均值来计算上述达成共识的时间开销,例如可以记为lat。
15.在一种可能的实现中,所述方法还包括:获取在进行所述主机与所述m个备机之间的日志备份时,所述m个备机的日志回放带宽;所述基于所述共识达成效率确定所述主机的
数据流量信息,包括:基于所述共识达成效率和所述日志回放带宽,确定所述主机的数据流量信息,其中,所述流量与所述日志回放带宽正相关。
16.在一种可能的实现中,所述获取在进行所述主机与所述m个备机之间的日志备份时,所述m个备机的日志回放带宽,包括:获取历史采样时间段内所述主机与所述m个备机之间达成共识,且完成数据回放的多个日志的信息,所述历史采样时间段内所述主机与所述m个备机之间达成共识,且完成数据回放的多个日志的信息包括所述完成数据回放的多个日志的日志大小;根据所述多个日志的日志大小以及所述历史采样时间段的长度,确定所述日志回放带宽。
17.其中,日志回放可以指将日志应用到数据系统中。
18.在一种可能的实现中,可以获取历史采样时间段内所述主机与所述m个备机之间达成共识,且完成数据回放的多个日志的信息,所述完成数据回放的多个日志的信息包括所述完成数据回放的多个日志的日志大小,并根据所述多个日志的日志大小以及所述历史采样时间段的长度,确定所述日志回放带宽。
19.示例性的,在主机给其他备机复制日志时,其他备机可以回复确认ack消息,并在ack消息中携带该备机已经完成回放的日志index,主机可以获取所有备机的已回放日志index,结合每条日志的大小,即可得到在采样周期内系统整体日志回放带宽,记为bw2。
20.在一种可能的实现中,所述历史采样时间段为当前时刻之前的多个采样周期中,与所述当前时刻之间的时间间隔小于阈值的采样周期;或者,所述历史采样时间段为当前时刻之前的多个采样周期。
21.例如,当前时刻之前包括采样周期1、采样周期2、采样周期3、采样周期4、采样周期5、采样周期6、采样周期7、采样周期8、采样周期9,其中,采样周期1为与当前时刻在时间上最近的采样周期,则上述历史采样时间段可以为采样周期1,历史采样时间段还可以为周期1、采样周期2、采样周期3、采样周期4、采样周期5、采样周期6、采样周期7、采样周期8以及采样周期9的并集或者是并集中的一个子集,这里并不限定。
22.其中,阈值可以与一个采样周期的时间长度有关,例如阈值可以为一个采样周期或者一个采样周期的倍数,当阈值为一个采样周期时,则历史采样时间段为当前时刻之前的多个采样周期中与所述当前时刻之间的时间间隔最小的采样周期,应理解,阈值的具体本技术并不限定,阈值设定的越小,历史采样时间段的采样周期数量越小,阈值设定的越大,则历史采样时间段的采样周期数量越大。
23.在一种可能的实现中,所述数据流量信息可以包括流量控制方向信息,以及流量控制步长信息,所述流量控制方向信息用于指示所述主机接收所述客户端注入的数据的流量的变化方向(例如可以指示流量变大还是变小),所述流量控制步长信息用于指示所述主机接收所述客户端注入的数据的流量的变化数值,进而可以基于数据的流量的变化方向以及流量控制步长信息来确定主机接收所述客户端注入的数据的流量,进而基于该数据流量信息可以控制主机接收所述客户端注入的数据的流量。
24.第二方面,本技术提供了一种数据流量控制装置,应用于数据库系统,所述数据库系统包括主机,所述主机与m个备机以及客户端通讯连接,所述m为正整数,所述装置包括:
25.获取模块,用于获取在进行所述主机与所述m个备机之间的日志备份时的共识达成效率,所述共识达成效率与如下信息的至少一种有关:达成共识的日志带宽以及达成共
识的时间开销;
26.数据流量确定模块,用于基于所述共识达成效率确定所述主机的数据流量信息,其中,所述数据流量信息用于控制所述主机接收所述客户端注入的数据的流量,且所述流量与所述共识达成效率正相关。
27.在一种可能的实现中,所述共识达成效率与所述达成共识的日志带宽正相关,所述共识达成效率与所述达成共识的时间开销负相关。
28.在一种可能的实现中,所述获取模块,还用于:
29.获取历史采样时间段内所述主机与所述m个备机之间达成共识的多个日志的信息,所述多个日志的信息包括所述多个日志的日志大小;
30.根据所述多个日志的日志大小以及所述历史采样时间段的长度,确定所述共识操作的带宽。
31.在一种可能的实现中,所述获取模块,还用于:
32.获取历史采样时间段内所述主机与所述m个备机之间达成共识的多个日志的信息,所述多个日志的信息包括所述多个日志中每个日志达成共识的时间开销;
33.根据所述多个日志中每个日志达成共识的时间开销,确定所述共识操作的时间开销。
34.在一种可能的实现中,所述获取模块,还用于:
35.获取在进行所述主机与所述m个备机之间的日志备份时,所述m个备机的日志回放带宽;
36.所述数据流量确定模块,具体用于:
37.基于所述共识达成效率和所述日志回放带宽,确定所述主机的数据流量信息,其中,所述流量与所述日志回放带宽正相关。
38.在一种可能的实现中,所述获取模块,具体用于:
39.获取历史采样时间段内所述主机与所述m个备机之间达成共识,且完成数据回放的多个日志的信息,所述历史采样时间段内所述主机与所述m个备机之间达成共识,且完成数据回放的多个日志的信息包括所述完成数据回放的多个日志的日志大小;
40.根据所述多个日志的日志大小以及所述历史采样时间段的长度,确定所述日志回放带宽。
41.在一种可能的实现中,所述历史采样时间段为当前时刻之前的多个采样周期中,与所述当前时刻之间的时间间隔小于阈值的采样周期;或者,所述历史采样时间段为当前时刻之前的多个采样周期。
42.在一种可能的实现中,所述数据流量信息包括流量控制方向信息,以及流量控制步长信息,所述流量控制方向信息用于指示所述主机接收所述客户端注入的数据的流量的变化方向,所述流量控制步长信息用于指示所述主机接收所述客户端注入的数据的流量的变化数值。
43.第三方面,本技术提供了一种数据流量控制装置,可以包括处理器,处理器和存储器耦合,存储器存储有程序指令,当存储器存储的程序指令被处理器执行时实现上述第一方面以及任一所述的方法。对于处理器执行第一方面的各个可能实现方式中执行的步骤,具体均可以参阅第一方面,此处不再赘述。
44.第四方面,本技术提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面任一所述的方法。
45.第五方面,本技术提供了一种电路系统,所述电路系统包括处理电路,所述处理电路配置为执行上述第一方面以及任一所述的方法。
46.第六方面,本技术提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面任一所述的方法。
47.第七方面,本技术提供了一种芯片系统,该芯片系统包括处理器,用于实现上述各方面中所涉及的功能,例如,发送或处理上述方法中所涉及的数据和/或信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存服务器或通信设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。
48.本技术实施例提供了一种数据流量控制方法,应用于数据库系统,所述数据库系统包括主机,所述主机与m个备机以及客户端通讯连接,所述m为正整数,所述方法包括:获取在进行所述主机与所述m个备机之间的日志备份时的共识达成效率,所述共识达成效率与如下信息的至少一种有关:达成共识的日志带宽以及达成共识的时间开销;基于所述共识达成效率确定所述主机的数据流量信息,其中,所述数据流量信息用于控制所述主机接收所述客户端注入的数据的流量,且所述流量与所述共识达成效率正相关。本技术实施例中,根据共识算法的特点以最优共识达成效率(例如包括端到端达成共识的时延、端到端达成共识的日志带宽等)为控制目标,自适应控制业务注入的流量,控制效果确定、稳定,且不需要调参,易于实施。
附图说明
49.图1a为数据库系统的一架构示意图;
50.图1b为本技术实施例提供的分布式数据库系统的一架构示意图;
51.图1c为本技术实施例提供的分布式数据库系统的另一架构示意图;
52.图1d为本技术实施例提供的一种应用架构示意;
53.图1e为本技术实施例的提供的一种系统架构示意;
54.图2为本技术实施例提供的一种数据流量控制方法的流程示意;
55.图3为本技术实施例提供的一种数据流量控制方法的流程示意;
56.图4为本技术实施例提供的一种控制量的确定示意;
57.图5为本技术实施例示出的一种数据流量控制装置的结构示意;
58.图6为本技术提供的一种计算机可读存储介质示意;
59.图7为本技术提供的一种计算机设备的示意。
具体实施方式
60.下面结合附图,对本技术的实施例进行描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术的发展和新场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
61.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别
类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。在本技术中出现的对步骤进行的命名或者编号,并不意味着必须按照命名或者编号所指示的时间或逻辑先后顺序执行方法流程中的步骤,已经命名或者编号的流程步骤可以根据要实现的技术目的变更执行次序,只要能达到相同或者相类似的技术效果即可。
62.本技术实施例提供的方法可应用于图1a所示的数据库系统(database system)100中,该数据库系统100与应用服务器300通信连接,以便为应用服务器300提供数据库服务。应用服务器300与客户端200通信连接,客户端200通常为部署在用户设备上的应用程序,客户端200通过向应用服务器300发起服务请求,以实现特定功能,比如下载或上传数据。客户端200相关的数据存储在数据库系统100中,应用服务器300在响应客户端200的服务请求过程中,如何需要操作客户端200相关的数据(比如查询数据、增加数据、更新数据和删除数据等),可以通过向数据库系统100发送操作请求来实现。
63.图1a示出了数据库系统100的一种典型的逻辑架构,根据图1a,数据库系统100包括数据库110和数据库管理系统(database management system,dbms)130。
64.其中,数据库110是存储在数据存储器(data storage)120中的有组织的数据集合,即按照特定的数据模型组织、存储和使用的相关联的数据集合。根据组织数据所使用的数据模型的不同,数据可分为多种类型,比如关系型数据(relational data)、图(graph)数据、时序(time series)数据等。关系型数据是使用关系模型建模的数据,通常表示为表,表中的行表示一个对象或实体的相关值的集合。图数据,简称为“图”,用于表示对象或实体之间的关系,比如社交关系。时间序列数据,简称时序数据,是按时间顺序记录和索引的数据列,用于描述一个对象在时间维度上的状态变化信息。
65.数据库管理系统130是数据库系统的核心,是用于组织、存储以及维护数据的系统软件。客户端200可以通过数据库管理系统130访问数据库110,数据库管理员也通过数据库管理系统进行数据库的维护工作。数据库管理系统130提供多种功能,供客户端200建立,修改和查询数据库,其中,客户端200可以为应用程序,或者运行应用程序的用户设备。数据库管理系统130所提供的功能可以包括但不限于以下几项:(1)数据定义功能,数据库管理系统130提供数据定义语言(data definition language,ddl)来定义数据库110的结构,ddl用于刻画数据库框架,并可以被保存在数据字典中;(2)数据存取功能,数据库管理系统130提供数据操纵语言(data manipulation language,dml),实现对数据库110的基本存取操作,比如检索、插入、修改和删除;(3)数据库运行管理功能,数据库管理系统130提供数据控制功能对数据库110运行进行有效地控制和管理,以确保数据正确有效;(4)数据库的建立和维护功能,包括数据库初始数据的载入,数据库的转储、恢复、重组织,系统性能监视、分析等功能;(5)数据库的传输,数据库管理系统提供处理数据的传输,以实现客户端与数据库管理系统之间的通信,通常与操作系统协调完成。
66.数据库存储器120包括但不限于固态硬盘(solid state drives,ssd)、磁盘阵列、云存储或其他类型的非瞬态计算机可读存储介质。
67.在本技术实施例中,客户端200可以向应用服务器300发起服务请求,应用服务器300中部署有数据服务,用于响应客户端200发起的服务请求。在一个实施例中,应用服务器300上部署的数据服务可以对客户端200接入的合法性进行校验,校验通过之后记录会话,将客户端200发起的服务请求转化为对数据库110的数据操作请求,比如查询语句。进一步地,数据服务可以对不同客户端200占用的系统资源进行实时统计和控制。
68.应理解,所属领域的技术人员可以理解一个数据库系统可能包括比图1a中所示的部件更少或更多的组件,或者包括与图1a所示组件不同的组件,图1a仅仅示出了与本发明实施例所公开的实现方式更加相关的组件。
69.下面结合图1b介绍本技术提供的一种应用服务器300的实施例。
70.应用服务器300实现的功能可以包括但不限于接入控制、会话管理、数据管理、资源监控、存储管理等。其中,接入控制可以对客户端接入的合法性以及带宽进行控制。会话管理,可以对接入成功的客户端进行会话管理。数据管理,可以将客户端的服务请求转化为对数据库的操作请求。资源监控,可以针对不同客户端占用的系统资源进行实时统计和控制。存储管理,可以将对数据库的操作请求转化为数据库系统支持或者可执行的操作请求,比如数据库查询语句(简称“查询”),该查询可以为结构化查询语言(structured query language,sql)查询。需要说明的是,应用服务器300将服务请求转化为数据库系统支持或者可执行的查询,可以一次完成,也可以分多次完成,具体的转化过程属于本领域现有技术。
71.本技术实施例提供的数据库系统可以为分布式数据库系统(distributed database system,ddbs),例如大规模并行处理(massively parallel processor,mpp)架构的数据库系统。下面结合图1c和图1d介绍ddbs。
72.图1c为采用共享磁盘(shared-storage)架构的分布式数据库系统示意图,包括一个或多个协调节点(coordinator node,cn),多个数据节点(datanode,dn),当然,该ddbs还可以包括其他组件,如:全局事务管理器(global transaction mangement,gtm),cn和dn之间通过网络通道来通信。cn可以根据接收到的查询,比如来自应用服务器的查询,生成该查询对应的执行计划,以及基于执行计划,将该查询分发给相应的dn去执行。cn还可以基于dn的执行结果,生成查询结果。在一个实施例中,网络通道可以由交换机、路由器和网关等网络设备组成的。cn和dn共同实现数据库管理系统的功能,为客户端提供数据库的检索、插入、修改和删除等服务。在一个实施例中,每个cn和dn上部署有数据库管理系统。共享数据存储器中存储有可供多个dn共享的数据,dn可以通过网络通道对数据存储器中的数据执行读写操作。共享数据存储器可以为共享磁盘阵列。分布式数据库系统中的cn和dn可以为物理机,比如数据库服务器,也可以为运行在抽象硬件资源上的虚拟机(virtual machine,vm)或容器(container)。在一个实施例中,cn和dn为虚拟机或容器,网络通道为虚拟交换网络,该虚拟交换网络包括虚拟交换机。cn和dn中部署的数据库管理系统为dbms实例(instance),该dbms实例可以是进程或线程,这些dbms配合完成数据库关系系统的功能。在另一个实施例中,cn和dn为物理机,网络通道包括一个或多个交换机,交换机为存储区网络(storage area network,san)交换机、以太网交换机,光纤交换机或其它物理交换设备。
73.图1d为采用无共享(shared-nothing)架构的分布式数据库系统示意图,每个dn具有各自独享的硬件资源(如cpu、内存、数据存储器等),cn和dn之间通过网络通道来通信,该
网络通道可以参阅上述图1c部分的相应介绍进行理解。该体系下,数据将根据数据库模型和应用特点被分配到各个dn上,查询任务将被cn分割成若干部分,在多个dn上并行执行,彼此协同计算,作为整体提供数据库服务,所有通信功能都在一个高宽带网络互联体系上实现。如同图1c所描述的shared-storage架构的分布式数据库系统一样,这里的cn和dn既可以是物理机,也可以是虚拟机。
74.在本技术所有实施例中,数据库系统的数据存储器(data storage)包括但不限于固态硬盘(solid state drives,ssd)、磁盘阵列或其他类型的非瞬态计算机可读介质。图1c-图1d中虽未示出数据库,应理解,数据库存储在数据存储器中。所属领域的技术人员可以理解一个数据库系统可能包括比图1a-图1d中所示的部件更少或更多的组件,或者包括与图1a-图1d中所示组件不同的组件,图1a-图1d仅仅示出了与本技术实施例所公开的实现方式更加相关的组件。但所属领域的技术人员可理解成一个分布式数据库系统可包含任何数量的cn和dn。各cn和dn的数据库管理系统功能可分别由运行在各cn和dn上的软件、硬件和/或固件的适当组合来实现。
75.本技术实施例中,分布式数据库系统可以为应用开发者提供应用程序(app)的部署服务,具体的,应用程序可以部署在分布式数据库系统中的节点,比如虚拟机中,虚拟机可以包括一个或多个数据节点dn,以及相应的数据存储器(例如可以是图1c中的共享数据存储器,也可以是图1d中的数据存储器),应用程序可以发送服务请求至应用服务器,应用服务器对服务请求进行处理,例如,将应用程序的服务请求转化为数据库系统支持或可执行的一个或多个数据操作请求,并将数据操作请求发送至分布式数据库系统。响应于数据操作请求,分布式数据库系统中与该应用程序对应的dn对数据存储器中的数据进行操作。
76.如图1e所示,图1e为本技术实施例的应用架构图,如图1e所示,应用架构可以包括:主机、备机1以及备机2(应理解,还可以包括更多的备机,图1e以两个备机示意),一个或多个客户端(例如图1e中的客户端1和客户端2)可以向主机注入业务流量,数据库基于共识算法进行主备日志复制,将日志同步给备机1和备机2。由于网络拥塞或物理距离等原因,主机和备机间网络时延可能较大。客户端可能会高并发地向数据库注入流量。
77.应理解,图1e示出的场景只是一个示例,只要是基于共识算法的数据库主备复制场景都可以应用本技术实施例中的技术方案。
78.图2为本技术实施例提供的一种数据流量控制方法的流程示意,本技术实施例提供的数据流量控制方法可以应用于数据库系统,所述数据库系统包括主机,所述主机与m个备机以及客户端通讯连接,所述m为正整数,如图2所示,所述方法可以包括:
79.201、获取在进行所述主机与所述m个备机之间的日志备份时的共识达成效率,所述共识达成效率与如下信息的至少一种有关:达成共识的日志带宽以及达成共识的时间开销。
80.其中,步骤201的执行主体可以为主机,也就是主机获取在进行所述主机与所述m个备机之间的日志备份时的共识达成效率,或者,步骤201的执行主体可以为主机数据库中的其他计算节点,这里并不限定。
81.其中,共识达成效率可以理解为进行主备日志复制时主机与备机之间达成共识的效率。
82.其中,达成共识可以理解为,主机收到了多个备机发送的针对于某一条日志的确
认ack,当发送上述确认ack的备机以及主机的数量超过当前主备机系统中主机和备机的总数量的一半(或者是其他阈值),则可以认为针对于该日志主备机之间达成了共识,例如主备机系统中包括一个主机和两个备机,则当主机自身完成了共识,且主机接收到至少一个备机发送的确认ack,则可以认为该主备机之间达成了共识,又例如,主备机系统中包括一个主机和四个备机,则当主机自身完成了共识,且主机接收到至少两个备机发送的确认ack,则可以认为该主备机之间达成了共识。
83.其中,共识达成效率可以与达成共识的日志带宽有关,在一种实现中,所述共识达成效率与所述达成共识的日志带宽正相关,也就是说,在其他信息保持不变的情况下,主机与多个备机之间达成共识的日志带宽越高,则共识达成效率越高。
84.在一种可能的实现中,可以在数据库系统中的主机基于共识算法进行日志复制时,分别记录每条日志的开始写入时刻、日志大小、以及达成共识的时刻。开始写入时刻是业务注入流量到主机后产生该条日志的时刻,达成共识的时刻是主机复制该条日志到各个备机,各个备机接受日志后回复确认ack,主机收到超过半数的备机确认ack的时刻。
85.在一种可能的实现中,可以获取历史采样时间段内所述主机与所述m个备机之间达成共识的多个日志的信息,所述多个日志的信息包括所述多个日志的日志大小;根据所述多个日志的日志大小以及所述历史采样时间段的长度,确定所述共识操作的带宽。
86.具体的,可以按照一定采样时间周期(例如1秒)进行采样,采样一个周期内每条达成共识的日志的大小、每条达成共识的日志从开始写入时刻到达成共识时刻的时间开销。并基于历史采样时间周期内每条达成共识的日志的大小以及历史采样时间周期的时间长度来计算得到共识的日志带宽,该共识的日志带宽可以记为bw1,示例性的,该共识的日志带宽bw1可以等于该历史采样时间周期内达成共识的日志大小之和与历史采样时间周期的时长的除法结果。
87.其中,共识达成效率可以与达成共识的时间开销有关,在一种实现中,所述共识达成效率与所述达成共识的时间开销负相关,也就是说,在其他信息保持不变的情况下,主机与多个备机之间达成共识的时间开销越高,则共识达成效率越低。
88.在一种可能的实现中,可以获取历史采样时间段内所述主机与所述m个备机之间达成共识的多个日志的信息,所述多个日志的信息包括所述多个日志中每个日志达成共识的时间开销,根据所述多个日志中每个日志达成共识的时间开销,确定所述共识操作的时间开销。
89.具体的,可以按照一定采样时间周期(例如1秒)进行采样,采样一个周期内每条达成共识的日志的大小、每条达成共识的日志从开始写入时刻到达成共识时刻的时间开销。并基于历史采样时间周期内每条达成共识的日志的时间开销均值来计算上述达成共识的时间开销,例如可以记为lat。
90.在一种可能的实现中,所述共识达成效率可以与达成共识的日志带宽有关,在一种可能的实现中,所述共识达成效率可以与达成共识的时间开销有关,在一种可能的实现中,所述共识达成效率可以与达成共识的日志带宽以及达成共识的时间开销有关。
91.在一种可能的实现中,所述历史采样时间段为当前时刻之前的多个采样周期中,与所述当前时刻之间的时间间隔小于阈值的采样周期;或者,所述历史采样时间段为当前时刻之前的多个采样周期。
92.例如,当前时刻之前包括采样周期1、采样周期2、采样周期3、采样周期4、采样周期5、采样周期6、采样周期7、采样周期8、采样周期9,其中,采样周期1为与当前时刻在时间上最近的采样周期,则上述历史采样时间段可以为采样周期1,历史采样时间段还可以为周期1、采样周期2、采样周期3、采样周期4、采样周期5、采样周期6、采样周期7、采样周期8以及采样周期9的并集或者是并集中的一个子集,这里并不限定。
93.202、基于所述共识达成效率确定所述主机的数据流量信息,其中,所述数据流量信息用于控制所述主机接收所述客户端注入的数据的流量,且所述流量与所述共识达成效率正相关。
94.本技术实施例中,在获取到共识达成效率之后,可以基于共识达成效率来确定主机的数据流量信息,其中所述数据流量信息用于控制所述主机接收所述客户端注入的数据的流量,且所述流量与所述共识达成效率正相关,也就是说,在其他信息保持不变的情况下,主机与多个备机之间的共识达成效率越高,则所述主机接收所述客户端注入的数据的流量越高。
95.在一种可能的实现中,所述数据流量信息还可以基于备机的日志回放带宽来确定,具体的,可以获取在进行所述主机与所述m个备机之间的日志备份时,所述m个备机的日志回放带宽,进而可以基于所述共识达成效率和所述日志回放带宽,确定所述主机的数据流量信息,其中,所述流量与所述日志回放带宽正相关,也就是说,在其他信息保持不变的情况下,多个备机的日志回放带宽越高,则所述主机接收所述客户端注入的数据的流量越高。
96.其中,日志回放可以指将日志应用到数据系统中。
97.在一种可能的实现中,可以获取历史采样时间段内所述主机与所述m个备机之间达成共识,且完成数据回放的多个日志的信息,所述完成数据回放的多个日志的信息包括所述完成数据回放的多个日志的日志大小,并根据所述多个日志的日志大小以及所述历史采样时间段的长度,确定所述日志回放带宽。
98.示例性的,在主机给其他备机复制日志时,其他备机可以回复确认ack消息,并在ack消息中携带该备机已经完成回放的日志index,主机可以获取所有备机的已回放日志index,结合每条日志的大小,即可得到在采样周期内系统整体日志回放带宽,记为bw2。
99.在一种可能的实现中,所述历史采样时间段为与当前时刻之前且相邻的一个时间段;或者,所述历史采样时间段为与所述当前时刻之前的多个时间段。
100.在一种可能的实现中,所述数据流量信息可以包括流量控制方向信息,以及流量控制步长信息,所述流量控制方向信息用于指示所述主机接收所述客户端注入的数据的流量的变化方向(例如可以指示流量变大还是变小),所述流量控制步长信息用于指示所述主机接收所述客户端注入的数据的流量的变化数值,进而可以基于数据的流量的变化方向以及流量控制步长信息来确定主机接收所述客户端注入的数据的流量,进而基于该数据流量信息可以控制主机接收所述客户端注入的数据的流量。
101.示例性的,参照图3,可以可以记录一定数量的历史采样周期(或者是历史相邻的一个采样周期)的端到端达成共识的时间开销(lat)、日志带宽(bw1)、日志回放带宽(bw2),并记录一定数量的历史控制量(ctrl_val)、控制方向(direction)、控制步长(step)。之后,根据本次采样周期lat、bw1、bw2的值,结合历史周期的结果,计算新的控制方向(new_
direction)、控制步长(new_step),最终计算出新的控制量(new_ctrl_val),用于自适应控制业务注入的流量。
102.例如可以如图4所示,图4表示记录的一定数量的历史采样结果lat、bw1、bw2和历史控制量crtl_val、控制方向direction、控制步长step,以及本采样周期的采样结果new_lat、new_bw1、new_bw2。初始时可以给控制方向direction和控制量ctrl_val分别设置一个初值。控制方向direction可分正向和负向,新的控制方向new_direction可以基于如下方式获得:根据最新的lat、bw1、bw2采样结果和历史结果做比较,如果性能变差了则改变控制方向,否则保持原来的控制方向。其中,新的控制步长new_step可以根据最新的lat、bw1、bw2采样结果和历史结果的差距程度计算,并结合历史控制量crtl_val的大小进行调整。其中,新控制量new_ctrl_val可以取历史控制量+新控制方向*新控制步长进行计算。
103.具体的,实测在10ms网络时延业务场景下,应用本发明方案后,10ms业务tps性能可以提升10倍以上。
104.其中,可以参照表1,如表1为效果验证的结果:
105.表1
[0106] 10ms时业务tps性能无流控方案7386本发明方案103487
[0107]
现有技术在做流量控制时基本都是基于队列统计信息来做的,通过队列统计信息进行流控的方法需要配置较多参数,不同场景需要调参,控制效果不确定。本技术实施例中,根据共识算法的特点以最优共识达成效率(例如包括端到端达成共识的时延、端到端达成共识的日志带宽等)为控制目标,自适应确定并控制客户端的业务注入流量,控制效果确定、稳定,现有技术中(例如mysql group peplication)基于配额进行流量控制,所有节点周期性相互传递各自的队列统计等信息,每个节点根据收到的队列统计信息计算处理后进行流量控制。mysql group peplication大约设置有10个参数,需要针对不同场景进行调参,而本技术实施例中可以直接通过历史的日志数据来进行数据传输流量的大小控制,不需要调参,易于实施。
[0108]
上文结合图2至图4对本技术实施例提供的数据处理方法进行了详细介绍,下面将结合附图从功能单元的角度对本技术实施例提供的数据处理装置进行介绍。
[0109]
参照图5,图5为本技术实施例提供的一种数据流量控制装置的结构示意,应用于数据库系统,所述数据库系统包括主机,所述主机与m个备机以及客户端通讯连接,所述m为正整数,如图5所示,所述装置500可以包括:
[0110]
获取模块501,用于获取在进行所述主机与所述m个备机之间的日志备份时的共识达成效率,所述共识达成效率与如下信息的至少一种有关:达成共识的日志带宽以及达成共识的时间开销;
[0111]
关于获取模块501的描述可以参照步骤201的描述,这里不再赘述。
[0112]
数据流量确定模块502,用于基于所述共识达成效率确定所述主机的数据流量信息,其中,所述数据流量信息用于控制所述主机接收所述客户端注入的数据的流量,且所述流量与所述共识达成效率正相关。
[0113]
关于数据流量确定模块502的描述可以参照步骤202的描述,这里不再赘述。
[0114]
在一种可能的实现中,所述共识达成效率与所述达成共识的日志带宽正相关,所述共识达成效率与所述达成共识的时间开销负相关。
[0115]
在一种可能的实现中,所述获取模块501,还用于:
[0116]
获取历史采样时间段内所述主机与所述m个备机之间达成共识的多个日志的信息,所述多个日志的信息包括所述多个日志的日志大小;
[0117]
根据所述多个日志的日志大小以及所述历史采样时间段的长度,确定所述共识操作的带宽。
[0118]
在一种可能的实现中,所述获取模块501,还用于:
[0119]
获取历史采样时间段内所述主机与所述m个备机之间达成共识的多个日志的信息,所述历史采样时间段内所述主机与所述m个备机之间达成共识的多个日志的信息包括所述多个日志中每个日志达成共识的时间开销;
[0120]
根据所述多个日志中每个日志达成共识的时间开销,确定所述共识操作的时间开销。
[0121]
在一种可能的实现中,所述获取模块501,还用于:
[0122]
获取在进行所述主机与所述m个备机之间的日志备份时,所述m个备机的日志回放带宽;
[0123]
所述数据流量确定模块502,具体用于:
[0124]
基于所述共识达成效率和所述日志回放带宽,确定所述主机的数据流量信息,其中,所述流量与所述日志回放带宽正相关。
[0125]
在一种可能的实现中,所述获取模块501,具体用于:
[0126]
获取历史采样时间段内所述主机与所述m个备机之间达成共识,且完成数据回放的多个日志的信息,所述完成数据回放的多个日志的信息包括所述完成数据回放的多个日志的日志大小;
[0127]
根据所述多个日志的日志大小以及所述历史采样时间段的长度,确定所述日志回放带宽。
[0128]
在一种可能的实现中,所述历史采样时间段为当前时刻之前的多个采样周期中,与所述当前时刻之间的时间间隔小于阈值的采样周期;或者,所述历史采样时间段为当前时刻之前的多个采样周期。
[0129]
在一种可能的实现中,所述数据流量信息包括流量控制方向信息,以及流量控制步长信息,所述流量控制方向信息用于指示所述主机接收所述客户端注入的数据的流量的变化方向,所述流量控制步长信息用于指示所述主机接收所述客户端注入的数据的流量的变化数值。
[0130]
本技术实施例提供了一种数据流量控制装置,应用于数据库系统,所述数据库系统包括主机,所述主机与m个备机以及客户端通讯连接,所述m为正整数,所述装置可以包括:获取模块,用于获取在进行所述主机与所述m个备机之间的日志备份时的共识达成效率,所述共识达成效率与如下信息的至少一种有关:达成共识的日志带宽以及达成共识的时间开销;数据流量确定模块,用于基于所述共识达成效率确定所述主机的数据流量信息,其中,所述数据流量信息用于控制所述主机接收所述客户端注入的数据的流量,且所述流量与所述共识达成效率正相关。本技术根据共识算法的特点以最优共识达成效率(例如包
architecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0135]
在本技术的另一实施例中,还提供一种芯片系统,该芯片系统包括处理器,用于支持注入时序数据的装置或查询时序数据的装置实现上述图2实施例所描述的数据流量控制方法。在一种可能的设计中,芯片系统还可以包括存储器,存储器用于管理应用程序的数据的装置必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
[0136]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术实施例的范围。
[0137]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0138]
在本技术实施例所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0139]
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0140]
另外,在本技术实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0141]
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术实施例各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0142]
以上,仅为本技术实施例的具体实施方式,但本技术实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术实施例的保护范围之内。因此,本技术实施例的保护范围应以权利要求的保护范围为准。