一种流量调拨方法和装置与流程

文档序号:13427058阅读:298来源:国知局
本公开涉及网络
技术领域
,特别涉及一种流量调拨方法和装置。
背景技术
:在许多大型网站的技术架构中,来自客户端(可以称为前端)的业务请求要发送至服务端(可以称为后端)的服务器集群进行处理。可以使用负载均衡技术进行流量调拨,这里的流量调拨可以是将前端的众多业务请求按照某种负载均衡算法分配到服务器集群中的各个服务器,使得业务请求能够比较平均的到达服务器,以充分利用服务器资源并且不出现过载。一种常见的流量调拨方式,可以是在前端和后端之间设置负载均衡集群(balancecluster),该集群可以将前端的业务请求以请求(request)为单位或者以客户端(client)为单位,按照负载均衡算法依次轮流的分配给各个服务器。服务端的处理结果可以直接反馈至客户端。技术实现要素:有鉴于此,本公开提供一种流量调拨方法和装置,以在客户端流量不均匀的情况下,仍然保证服务端的负载均衡和服务性能。具体地,本说明书一个或多个实施例是通过如下技术方案实现的:第一方面,提供一种流量调拨方法,所述方法由位于客户端的微负载均衡器执行,所述方法包括:接收所述客户端发送的业务请求;根据负载均衡算法,将所述业务请求分配到服务器列表中的其中一个服务器处理,所述服务器列表包括:用于处理所述客户端的业务请求的至少两个服务器;接收所述服务器返回至所述客户端的业务处理结果,并将所述业务处理结果发送至对应的所述客户端。第二方面,提供一种流量调拨方法,所述方法包括:确定服务器列表,所述服务器列表包括:分配至客户端的至少两个服务器,所述服务器用于处理所述客户端的业务请求;将所述服务器列表发送至位于所述客户端的微负载均衡器,以使得所述微负载均衡器将所述客户端的业务请求分配至所述服务器列表中的各个服务器。第三方面,提供一种流量调拨装置,所述装置包括:请求接收模块,用于接收所述客户端发送的业务请求;请求分配模块,用于根据负载均衡算法,将所述业务请求分配到服务器列表中的其中一个服务器处理,所述服务器列表包括:用于处理所述客户端的业务请求的至少两个服务器;结果反馈模块,用于接收所述服务器返回至所述客户端的业务处理结果,并将所述业务处理结果发送至对应的所述客户端。第四方面,提供一种流量调拨装置,所述装置包括:列表确定模块,用于确定服务器列表,所述服务器列表包括:分配至客户端的至少两个服务器,所述服务器用于处理所述客户端的业务请求;列表发送模块,用于将所述服务器列表发送至位于所述客户端的微负载均衡器,以使得所述微负载均衡器将所述客户端的业务请求分配至所述服务器列表中的各个服务器。第五方面,提供一种流量调拨设备,所述设备包括存储器、处理器,以及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行指令时实现以下步骤:接收所述客户端发送的业务请求;根据负载均衡算法,将所述业务请求分配到服务器列表中的其中一个服务器处理,所述服务器列表包括:用于处理所述客户端的业务请求的至少两个服务器;接收所述服务器返回至所述客户端的业务处理结果,并将所述业务处理结果发送至对应的所述客户端。第六方面,提供一种流量调拨设备,所述设备包括存储器、处理器,以及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行指令时实现以下步骤:确定服务器列表,所述服务器列表包括:分配至客户端的至少两个服务器,所述服务器用于处理所述客户端的业务请求;将所述服务器列表发送至位于所述客户端的微负载均衡器,以使得所述微负载均衡器将所述客户端的业务请求分配至所述服务器列表中的各个服务器。本说明书一个或多个实施例的流量调拨方法和装置,通过设置客户端的微负载均衡器,使得负载均衡器集群仍然可以通过客户端(client)为单位来为客户端分配服务器,不需要客户端的每个请求都经过集群的处理,由此可以节省通信开销,可以为客户端提供更加稳定和持续的服务,保证服务性能;并且,客户端可以在获取分配的服务器列表的基础上,以请求(request)为单位进行流量调拨,使得客户端的流量可以较为均衡的到达列表中的各个服务器,实现较好的负载均衡的效果。附图说明为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本说明书一个或多个实施例提供的流量调拨的系统架构图;图2为本说明书一个或多个实施例提供的服务器列表的获取流程;图3为本说明书一个或多个实施例提供的客户端流量调拨的流程;图4~图8为本说明书一个或多个实施例提供的流量调拨效果示意图;图9为本说明书一个或多个实施例提供的一种流量调拨装置的结构示意图;图10为本说明书一个或多个实施例提供的一种流量调拨装置的结构图;图11为本说明书一个或多个实施例提供的一种流量调拨装置的结构图。具体实施方式为了使本
技术领域
的人员更好地理解本说明书一个或多个实施例中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是一部分实施例,而不是全部的实施例。基于本说明书一个或多个实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。流量调拨可以是将前端发生的众多业务请求,按照某种负载均衡算法,轮流依次的分配至后端的服务器进行处理,以使得业务请求能够比较平均的到达服务器,使得服务器资源能够被充分利用。例如,在一些大型网站的技术架构中,网站每天可以接收到大量的用户操作的业务请求,这些请求可以通过流量调拨被不同的后端处理器进行处理。参见图1的示例,客户端可以包括“客户端-1(client_1)”、“客户端-2(client_2)”等多个客户端,该客户端例如可以是运行在智能手机或者个人电脑上的网站客户端。服务端可以包括“服务器-1(server_1)”、“服务器-2(server_2)”等多个服务器。这些服务器可以处理来自客户端的业务请求,例如,当用户在网站客户端进行操作时,可以触发展示网页内容的业务请求,该请求可以发送至服务端的其中一个服务器进行处理,并将处理结果反馈至客户端展示。本例子中,对客户端的业务请求进行流量调拨,可以由图1中的负载均衡器集群(balancecluster)11和微负载均衡器(microbalancer)12配合执行。其中,两者在流量调拨中的作用如下:负载均衡器集群11:可以包括多个负载均衡器,各个负载均衡器都可以负责为客户端分配用于处理业务请求的服务器,分配的策略即负载均衡算法。这里的分配服务器,可以是提前将服务器地址发送至客户端,客户端可以依据服务器地址将业务请求发送至服务器。此外,需要注意的是,负载均衡器集群11在分配服务器时,可以是以客户端(client)为单位,比如,为client_1分配一些可以用于处理该客户端-1的业务请求的服务器,为client_2分配另一些可以用于处理该客户端-2的业务请求的服务器。并且,负载均衡器集群11在为客户端分配服务器时,可以是分配包括至少两个服务器的服务器列表(server_list)。微负载均衡器12:在一个例子中,该微负载均衡器12可以嵌入在客户端。如图1中所示,客户端-2(client_2)中嵌入了一个微负载均衡器(microbalancer)12,其他的客户端中每个客户端都可以嵌入该微负载均衡器12。一方面,微负载均衡器12可以代替客户端向负载均衡器集群11请求分配服务器,并接收负载均衡器集群11为该客户端分配的服务器地址。另一方面,微负载均衡器12还可以在负载均衡器集群11分配的服务器列表的基础上,对客户端的业务请求进行以请求(request)为单位的流量调拨,比如,将客户端的其中一个业务请求分配至server_1处理,将该客户端的另一个业务请求分配至server_2处理。微负载均衡器12为客户端的业务请求分配对应处理的服务器,同样可以是依据负载均衡算法。如上描述,负载均衡器集群11以客户端为单位分配对应的服务器,以及微负载均衡器12以请求为单位分配对应的服务器,都可以是依据负载均衡算法。本例子并不限制具体采用何种负载均衡算法,如下的描述中以轮询调度算法为例进行说明。本例子的流量调拨方法,微负载均衡器12由负载均衡器集群11获取服务器列表的过程,可以异步于对客户端的业务请求进行流量调拨的过程。下面的描述中,将先说明服务器列表的获取过程,再说明依据该列表调拨流量的过程。图2是一个例子中的服务器列表的获取流程,可以包括:在步骤200中,微负载均衡器向负载均衡器集群发送服务器请求。本步骤中,服务器请求用于请求所述负载均衡器集群分配与客户端对应的服务器,所分配的服务器可以用来处理所述客户端的业务请求。例如,假设负载均衡器集群为client_1分配了服务器server_2,那么来自该client_1的业务请求可以交由server_2进行业务处理。在一个例子中,微负载均衡器向负载均衡器集群发送服务器请求的时间,可以是每隔单位时间长度向负载均衡器集群发送该请求。例如,在某个时刻,微负载均衡器向负载均衡器集群发送了上述的服务器请求,经过单位时间长度t后,微负载均衡器可以再次发送服务器请求,以刷新上次的服务器列表,即负载均衡器集群可以定期刷新向客户端侧的微负载均衡器发送的服务器列表。此外,负载均衡集群还可以根据客户端的要求,推送符合条件的服务器列表给微负载均衡器。上述的客户端要求可以是客户端确定自己所需的服务器规格,比如,需要高性能的服务器,或者需要距离较近的服务器,负载均衡集群根据客户端要求选择服务器推送给微负载均衡器。还可以是由负载均衡集群决定将哪些服务器推送给客户端。并且,在推送时,可以是负载均衡集群定期向微负载均衡器推送服务器列表以刷新,还可以是不定期刷新。在其他的例子中,也可以保持微负载均衡器的服务器列表相对稳定,负载均衡器集群可以在列表中的部分服务器故障或者负载较高时,刷新列表,更换其他的服务器。或者,也可以采用其他的服务器列表刷新方式。此外,微负载均衡器在发送服务器请求时,可以携带用于标识客户端的客户端身份标识。例如,图1中的client_2对应的微负载均衡器12在向负载均衡器集群11发送服务器请求时,可以携带client_2的客户端身份标识,以请求负载均衡器集群11分配用于处理client_2的业务请求的服务器。当然,负载均衡器集群11在确定服务器列表时的依据信息,可以不仅限于客户端身份标识,也可以包括其他的因素,比如,服务器的负载和可用性。在步骤202中,负载均衡器集群根据所述服务器请求,确定服务器列表,所述服务器列表包括:分配至所述客户端的至少两个服务器。本步骤中,负载均衡器集群在确定服务器列表中的各个服务器时,可以依据多方面因素,例如,服务器请求中携带的客户端身份标识,或者服务器本身的可用性和负载情况,或者服务器距离客户端的远近,等。在一个例子中,同一业务场景中的客户端可能存在优先级差异,比如,内部的客户端享有更多的服务器资源。这种情况下,服务器可以是被内部和外部的客户端共享,那么可以根据客户端身份标识,验证客户端的身份是内部客户端(可以是与服务端属于同一业务系统的客户端),则将更多的服务器资源提供给该内部客户端,以优先满足该内部客户端的资源需求。在另一个例子中,还可以根据服务器距离客户端的远近,将距离客户端身份标识对应的客户端较近的服务器分配给该客户端,以降低调用链路的通信开销。在又一个例子中,还可以根据服务器的负载情况,将当前负载较低的服务器分配给客户端,以避免单台服务器连接过多的客户端而造成管理负担和资源消耗压力太大。此外,负载均衡器集群确定的服务器列表中,可以包括不同规格的服务器,比如,可以包括8核的服务器,或者4核的服务器,一台8核的服务器可以相当于两台4核的服务器。同一台服务器也可以服务于多种业务场景,即同一台服务器可以连接多个客户端。并且,负载均衡器集群分配的多台服务器也可以是逻辑服务器,可以位于同一台物理服务器上。在步骤204中,将所述服务器列表发送至所述微负载均衡器。本步骤中,负载均衡器集群可以将服务器列表(server_list)发送至微负载均衡器,以使得微负载均衡器将对应的客户端的业务请求分配至列表中的各个服务器,分配的方式可以是依据负载均衡算法。在一个例子中,当微负载均衡器嵌入在客户端时,相当于是将一部分流量调拨处理本地化。这种情况下,为了防止由于客户端不可信引入的安全问题,可以对微负载均衡器和负载均衡器集群之间的通信过程进行加密,通过加密传输将所述服务器列表传输至微负载均衡器。另外,负载均衡器集群还可以在返回服务器列表时执行动态返回策略,比如,当微负载均衡器每隔一段时间向负载均衡器集群请求刷新服务器列表时,负载均衡器集群可以改变列表中服务器的数量,或者改变服务器的规格等级等,动态变换反馈至客户端的服务器。通过上述图2所示的流程,微负载均衡器可以由负载均衡器集群获取服务器列表,列表中包括分配至客户端的各个服务器的服务器地址,使得微负载均衡器可以根据该列表,对客户端流量进行流量调拨,在列表中的各个服务器之间实现流量的分摊和均衡。参见如下图3所示的流程,该图3示例了客户端流量调拨的过程,微负载均衡器获得了服务器列表后,可以根据该列表对客户端的业务请求进行流量调拨。该方法可以包括:在步骤300中,微负载均衡器接收客户端发送的业务请求。请继续结合参见图1所示,例如,在某一个时间段t,客户端client_2在这段时间内的所有业务请求request_1_t都提交到对应该客户端的微负载均衡器12。在该时间段t内的业务请求可以有很多个。在步骤302中,微负载均衡器通过负载均衡算法,将所述业务请求分配到服务器列表中的其中一个服务器。本步骤中,微负载均衡器由负载均衡器集群获取的服务器列表中,可以包括负载均衡器集群分配至客户端client_2的至少两个服务器。比如,图1中示例了server_1、server_2和server_3位于对应client_2的服务器列表中。微负载均衡器可以根据列表,对request_1_t中的每个请求做分发,比如,将其中的request_1_1提交到server_1进行处理,将request_1_2提交到server_2处理,将request_1_3提交到server_3处理。在步骤304中,接收所述服务器返回至所述客户端的业务处理结果,并将所述业务处理结果发送至对应的所述客户端。本步骤中,各个服务器返回至客户端的业务处理结果,可以由微负载均衡器接收,客户端可以由对应的微负载均衡器中获得结果。比如,图1中的server_2可以将处理结果反馈至微负载均衡器12,client_2可以由该微负载均衡器12获得上述反馈的业务处理结果。通过图3所示的流量调拨过程,可以达到如下效果:一方面,由负载均衡器集群的角度看,仍然是以客户端(client)为单位来为客户端分配服务器,不需要客户端的每个请求都经过集群的处理,由此可以节省通信开销,可以为客户端提供更加稳定和持续的服务,保证服务性能;另一方面,由客户端的角度来看,可以在获取分配的服务器列表的基础上,以请求(request)为单位进行流量调拨,使得客户端的流量可以较为均衡的到达列表中的各个服务器,实现较好的负载均衡的效果。本公开的例子中提供的流量调拨方案,可以应用于客户端流量不均的场景。例如,图1中所示的client_1、client_2等多个客户端,这些客户端之间的流量差异可以较大,或者单个客户端在不同时间段的流量非常不均匀。这种情况下就可以使用上述的流量调拨方法,那么由于微负载均衡器可以对客户端本地的流量按照请求为单位进行均衡的分配,可以实现负载均衡的效果,并且也不会对负载均衡集群侧造成较大的压力,保持了系统性能的稳定。如下的图4至图8,示例了将本公开的流量调拨方案应用于客户端流量不均场景时所实现的效果。在该例子中,假设每个客户端的流量是服从平均流量为λ=10的泊松分布(方差也等于λ)的随机流量。客户端和服务器的数量设定为10,连续模拟一万个时间单位,按照上述的流量调拨方案,各个客户端都由嵌入在客户端的微负载均衡器对该一万个时间单位的流量进行调拨。其中,图4至图8中的server_list_len可以是列表的长度,比如,当列表中有两个服务器时,该server_list_len可以等于2。各个图中的横轴表示其中一个服务器单位时间内接收到的业务请求数量,纵轴表示该业务请求数量的发生频次(该单位时间内的发生次数)。通过图4至图8,以server_list_len为参数,观察服务器集群中的其中一个服务器随着server_list_len的取值变化,而产生的服务器负载压力和负载均衡效果的变化。表1图标参数变化server_list_len最小值最大值平均值方差1024101023191053418103.55516102.510515101.8当server_list_len=1时,如图4所示,每个客户端每次通过微负载均衡器只可以向1个服务器发送请求,服务端的负载情况也近似呈现泊松分布。其中包括很多远高于平均值10的尖刺流量。当server_list_len=2时,如图5所示,每个客户端每次通过微负载均衡器可以向两个服务器发送请求。可以看出流量分布的方差从之前的10迅速减小到了5,从图形上表现为曲线更加往中心聚集,命中平均流量的频率大大增加。并且,尖刺流量减少。图6至图8依次为server_list_len等于3、5、10的表现曲线,可以看到,当server_list_len的取值逐渐增大时,从server_list_len=5到server_list_len=10(即全部服务器都返回给客户端),方差从2.5缩小到1.8,曲线仍然会逐渐向中心聚集。并且,尖刺流量仍然在逐渐减少。此外,对于服务器列表中的服务器数量的确定,可以综合兼顾流量均衡、系统整体性能、服务质量和安全等多方面因素。比如,当服务器列表中的服务器的数量达到一定数值时,再往上增加服务器数目也不会显著的大幅提升负载均衡的效果时,可以选择适当降低列表中的服务器数量,以降低链接资源消耗,比如,同样数量的客户端链接较少数量的服务器时,将消耗较少的链接资源。而且,可以尽量避免返回服务端的全部服务器在列表中,以避免可能造成的安全隐患。由上述图4至图8还可以看到,通过设置微负载均衡器,大大减小了对服务器集群的尖刺流量冲击,减小了流量分布方差,在相同的sla(servicelevelagreement,服务水平协议)指标下,可以节省大量集群处理资源。为了实现上述的流量调拨方法,本说明书一个或多个实施例提供了一种流量调拨装置,如图9所示,该装置可以应用于微负载均衡器,该装置可以包括:请求接收模块91、请求分配模块92和结果反馈模块93。请求接收模块91,用于接收所述客户端发送的业务请求;请求分配模块92,用于根据负载均衡算法,将所述业务请求分配到服务器列表中的其中一个服务器处理,所述服务器列表包括:用于处理所述客户端的业务请求的至少两个服务器;结果反馈模块93,用于接收所述服务器返回至所述客户端的业务处理结果,并将所述业务处理结果发送至对应的所述客户端。在一个例子中,如图10所示,该装置还可以包括:列表接收模块94,用于接收负载均衡器集群发送的所述服务器列表。为了实现上述的流量调拨方法,本说明书一个或多个实施例还提供了一种流量调拨装置,如图11所示,该装置可以应用于负载均衡器集群,可以包括:列表确定模块1101和列表发送模块1102。列表确定模块1101,用于确定服务器列表,所述服务器列表包括:分配至客户端的至少两个服务器,所述服务器用于处理所述客户端的业务请求;列表发送模块1102,用于将所述服务器列表发送至位于所述客户端的微负载均衡器,以使得所述微负载均衡器将所述客户端的业务请求分配至所述服务器列表中的各个服务器。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。上述方法实施例所示流程中的各个步骤,其执行顺序不限制于流程图中的顺序。此外,各个步骤的描述,可以实现为软件、硬件或者其结合的形式,例如,本领域技术人员可以将其实现为软件代码的形式,可以为能够实现所述步骤对应的逻辑功能的计算机可执行指令。当其以软件的方式实现时,所述的可执行指令可以存储在存储器中,并被设备中的处理器执行。例如,对应于上述流量调拨方法,本说明书一个或多个实施例同时提供一种流量调拨设备,该设备可以包括处理器、存储器、以及存储在存储器上并可在处理器上运行的计算机指令,所述处理器通过执行所述指令,用于实现如下步骤:接收所述客户端发送的业务请求;根据负载均衡算法,将所述业务请求分配到服务器列表中的其中一个服务器处理,所述服务器列表包括:用于处理所述客户端的业务请求的至少两个服务器;接收所述服务器返回至所述客户端的业务处理结果,并将所述业务处理结果发送至对应的所述客户端。例如,对应于上述流量调拨方法,本说明书一个或多个实施例还提供一种流量调拨设备,该设备可以包括处理器、存储器、以及存储在存储器上并可在处理器上运行的计算机指令,所述处理器通过执行所述指令,用于实现如下步骤:确定服务器列表,所述服务器列表包括:分配至客户端的至少两个服务器,所述服务器用于处理所述客户端的业务请求;将所述服务器列表发送至位于所述客户端的微负载均衡器,以使得所述微负载均衡器将所述客户端的业务请求分配至所述服务器列表中的各个服务器。上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。本领域内的技术人员应明白,本说明书一个或多个实施例可提供为方法、系统、或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于服务端设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1