CN111666092A - 服务提供方法、装置、设备及计算机可读存储介质 - Google Patents

服务提供方法、装置、设备及计算机可读存储介质 Download PDF

Info

Publication number
CN111666092A
CN111666092A CN202010547509.3A CN202010547509A CN111666092A CN 111666092 A CN111666092 A CN 111666092A CN 202010547509 A CN202010547509 A CN 202010547509A CN 111666092 A CN111666092 A CN 111666092A
Authority
CN
China
Prior art keywords
service
version information
target
terminal
server
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.)
Pending
Application number
CN202010547509.3A
Other languages
English (en)
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.)
Tencent Technology Shanghai Co Ltd
Original Assignee
Tencent Technology Shanghai 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 Tencent Technology Shanghai Co Ltd filed Critical Tencent Technology Shanghai Co Ltd
Priority to CN202010547509.3A priority Critical patent/CN111666092A/zh
Publication of CN111666092A publication Critical patent/CN111666092A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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/51Discovery or management thereof, e.g. service location protocol [SLP] or web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请提供了一种服务提供方法、装置、设备及计算机可读存储介质;方法包括:接收终端针对目标服务发送的服务请求消息;服务请求消息携带目标服务的当前版本信息;在提供目标服务的至少两个服务进程中,确定与当前版本信息匹配的目标进程;利用目标进程为终端提供目标服务。通过本申请,能够在目标服务进行版本更迭时,服务器仍可以为终端提供目标服务,提高用户的使用体验。

Description

服务提供方法、装置、设备及计算机可读存储介质
技术领域
本申请涉及通信技术,尤其涉及一种服务提供方法、装置、设备及计算机可读存储介质。
背景技术
服务器为用户终端提供各种服务,服务器与用户终端存在大量的数据交互,但是服务器通常会存在系统升级、服务器版本更新、定期维护等各种需要进行数据更新的情况。传统的服务提供方案中,服务器在准备进行升级的期间,不允许新的终端连接至服务器,在当前连接到服务器的各终端结束在线服务时,服务器立即断开与各终端之间的连接,并进行停机更新。可以看出,传统的服务器更新方案中,不仅服务器更新时间长,且更新过程导致服务中断,影响用户体验。
发明内容
本申请实施例提供一种服务提供方法、装置、设备及计算机可读存储介质,能够在服务器更新过程中,为用户提供服务,提升用户体验。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种方法,包括:
接收终端针对目标服务发送的服务请求消息;服务请求消息携带目标服务的当前版本信息;
在提供目标服务的至少两个服务进程中,确定与当前版本信息匹配的目标进程;
利用目标进程为终端提供目标服务。
在一些实施例中,所述在提供所述目标服务的至少两个服务进程中,确定与所述当前版本信息匹配的目标进程,包括:根据路由策略,在至少两个服务进程中确定与当前版本信息匹配的目标进程,其中:路由策略,包括:获取目标服务对应的进程集合;进程集合包括至少两个服务进程;将进程集合中与当前版本信息匹配的服务进程确定为目标进程。
在一些实施例中,所述至少两个服务进程包括具有第一版本信息的第一进程和具有第二版本信息的第二进程;所述将所述进程集合中与所述当前版本信息匹配的服务进程确定为所述目标进程,包括:若当前版本信息与第一版本信息匹配,确定第一进程为目标进程;若当前版本信息与第二版本信息匹配,确定第二进程为目标进程;若当前版本信息与第一版本信息不匹配,且与第二版本信息不匹配,拒绝服务请求消息。
在一些实施例中,所述方法还包括:获取用于新增第三进程的第一触发指令;第一触发指令包括第三进程的版本信息、端口信息;根据第一触发指令调整路由策略。
在一些实施例中,所述利用所述目标进程为所述终端提供所述目标服务,包括:发送携带目标进程的域名信息及端口信息的反馈消息至终端,以使终端通过目标进程的域名信息及端口信息与服务器建立连接;通过连接为终端提供目标服务。
在一些实施例中,所述方法还包括:接收至少两个服务进程中每一服务进程按照预设频率发送的心跳消息;心跳消息包括服务进程中各终端对应的版本信息;统计每一版本信息对应的处于目标服务中的第一终端数量,并输出第一向量;第一向量用于表征每一版本信息对应的第一终端数量之间的大小关系。
在一些实施例中,所述方法还包括:接收终端的登录请求;登录请求包括当前版本信息;确定终端对应的目标版本信息;若目标版本信息与当前版本信息匹配,与终端建立连接;若目标版本信息与当前版本信息不匹配,发送版本变更消息至终端,以使终端变更至目标版本信息;与变更版本后的终端建立连接。
在一些实施例中,所述至少两个服务进程与至少两个版本信息存在对应关系;所述确定所述终端对应的目标版本信息,包括:获取预设的第二向量和第三向量;第二向量用于表征每一版本信息对应的预设的第二终端数量之间的大小关系;第三向量用于表征每一版本信息对应的处于登录状态中的第三终端数量之间的大小关系;根据第二向量和第三向量确定终端对应的目标版本信息。
在一些实施例中,所述方法还包括:获取携带第四向量的第二触发指令;第二触发指令用于将第二向量调整至第四向量;根据第二向量和第四向量,在至少两个版本信息中将需要减少终端数量的版本信息,确定为至少一个待修正版本信息;断开与至少一个待修正版本信息对应的部分终端之间的连接。
在一些实施例中,所述断开与所述至少一个待修正版本信息对应的部分终端之间的连接,包括:获取至少一个待修正版本信息对应的至少一个待修正终端;若待修正终端不处于目标服务中,则断开与待修正终端之间的连接;若待修正终端处于目标服务中,则在结束目标服务后,断开与待修正终端之间的连接。
在一些实施例中,所述服务器包括大区服务器、匹配服务器和对局服务器,接收终端针对目标服务发送的服务请求消息,包括:大区服务器接收终端发送的服务请求消息,在服务请求消息合法的情况下,将服务请求消息发送至匹配服务器;在提供目标服务的至少两个服务进程中,确定与当前版本信息匹配的目标进程,包括:匹配服务器在提供目标服务的至少两个服务进程中,确定与当前版本信息匹配的目标进程;利用目标进程为终端提供目标服务,包括:对局服务器利用目标进程为终端提供目标服务。
本发明实施例提供一种服务提供装置,所述装置包括:
接收模块,用于接收终端针对目标服务发送的服务请求消息;服务请求消息携带目标服务的当前版本信息,
确定模块,用于在提供目标服务的至少两个服务进程中,确定与当前版本信息匹配的目标进程;
服务模块,用于利用目标进程为终端提供目标服务。
本申请实施例提供一种设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的方法。
本申请实施例具有以下有益效果:
本申请实施例通过在服务器中同时部署提供目标服务的至少两个服务进程,其中,至少两个服务进程与至少两个版本信息对应,在终端发送不同版本信息对应的服务请求消息时,可以根据携带的当前版本信息确定与当前版本信息匹配的目标进程,并提供当前版本信息的目标服务,使得服务器在原始服务器架构下同时为终端提供不同版本信息对应的目标服务,因此,在版本服务更迭期间,本申请实施例中的服务提供方法可以在不中断提供原始版本的目标服务的同时,提供另一版本的目标服务,实现了不停机更新,提升用户体验。
附图说明
图1是本申请实施例提供的服务提供系统的一个可选的架构示意图;
图2是本申请实施例提供的服务提供设备的结构示意图;
图3A是本申请实施例提供的服务提供方法的一个可选的流程示意图;
图3B是本申请实施例提供的服务提供方法的一个可选的流程示意图;
图3C是本申请实施例提供的服务提供方法的一个可选的流程示意图;
图3D是本申请实施例提供的服务提供方法的一个可选的流程示意图;
图4是本申请实施例提供的一种可选的服务器整体架构示意图;
图5是本申请实施例提供的一种可选的服务器整体架构示意图;
图6是本申请实施例提供的服务提供方法的一个可选的匹配开局流程示意图;
图7是本申请实施例提供的服务提供方法的一个可选的匹配开局流程示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使在本实施例中描述的本申请实施例能够以除了在在本实施例中图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
(1)大区服务器(Zone Server):玩家直接连接的服务器,用户游戏中所有非单局操作的处理。
(2)对局服务器,即PVP服务器(PVP Server):玩家对战游戏单局服务器,负责单局玩家连接保持,以及业务逻辑的处理。
(3)匹配服务器(Match Server):用户开始单局匹配时,用于撮合单局的服务器进程。
在服务器为用户提供各项服务的相关技术中,可以在服务器的共享内存中对服务数据进行缓存,在服务器更新之后,可以直接提取共享内存中缓存的服务数据,不需要在数据库中读取服务数据,提升服务器更新时的处理能力。例如,在游戏服务中,基于性能和数据安全的考虑,服务器会在本机共享内存中对一些玩家数据进行缓存,这样在服务器进程重启以及玩家操作时,就不需要从数据库读取,直接操作本机共享内存缓存数据即可。这种方法降低了跨机操作,同时减少了数据库的查询效率(访问磁盘比较慢),因此可以有效提升服务器的处理能力。
相关技术的方案存在以下问题:(1)在玩法逻辑发生变化或新增一些特性时,通常会涉及到缓存数据结构的变化,因此需要停掉服务器进程并清理缓存,然后再更新至新的服务器,即服务器停服更新,这也是目前游戏更新的一种主流方式,在停服更新时,服务器无法为用户提供相应的服务;(2)在一些纯粹的服务器故障修复(BUGFIX)时,虽然只是更改一小部分数据结构,但仍需停服更新,严重影响用户体验;(3)停服更新通常需要选择在游戏在线低峰期的时候如凌晨等,运维操作和人力成本也相对比较高。
本申请实施例提供一种服务提供方法、装置、设备和计算机可读存储介质,能够在服务版本变化时,仍可以为用户提供服务,在最大程度上保证在用户无感知的情况实现服务版本的变化,提高用户体验;同时,本申请实施例在服务版本变化过程中,无需额外的服务器投入,仍可以为用户提供服务,设备成本更低。下面说明本申请实施例提供的电子设备的示例性应用。
参见图1,图1是本申请实施例提供的服务提供系统100的一个可选的架构示意图,终端400(示例性示出了终端400-1和终端400-2)通过网络300连接服务器200,网络300可以是广域网或者局域网,又或者是二者的组合。图1还示出了服务器200可以为服务器集群,该服务器集群包括服务器200-1至200-3,同样地,服务器200-1至200-3可以是实体机器,也可以是利用虚拟化技术(如容器技术及虚拟机技术等)构建的虚拟机器,本申请实施例对此不做限定,当然,在本实施例中也可使用单个服务器来进行服务的提供。
在一些实施例中,服务器200用于接收终端400通过网络300针对目标服务发送的服务请求消息;服务请求消息携带目标服务的当前版本信息;服务器200在提供目标服务的至少两个服务进程中,确定与当前版本信息匹配的目标进程;服务器200利用目标进程为终端400提供目标服务。
在一些实施例中,终端400用于通过网络300向服务器200发送针对目标服务的服务请求消息;该服务请求消息携带目标服务的当前版本信息。该服务请求消息用于指示服务器200在提供目标服务的至少两个服务进程中,确定与当前版本信息匹配的目标进程,并利用目标进程为终端400提供目标服务。在图形界面410(示例性示出了图形界面410-1和图形界面410-2)显示目标服务对应的服务数据。
参见图2,图2是本申请实施例提供的服务提供设备500的结构示意图,图2所示的服务提供设备500包括:至少一个处理器510、存储器550、至少一个网络接口520和用户接口530。服务提供设备500中的各个组件通过总线系统540耦合在一起。可理解,总线系统540用于实现这些组件之间的连接通信。总线系统540除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统540。
处理器510可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口530包括使得能够呈现媒体内容的一个或多个输出装置531,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口530还包括一个或多个输入装置532,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器550包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器550旨在包括任意适合类型的存储器。存储器550可选地包括在物理位置上远离处理器510的一个或多个存储设备。
在一些实施例中,存储器550能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统551,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块552,用于经由一个或多个(有线或无线)网络接口520到达其他计算设备,示例性的网络接口520包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
显示模块553,用于经由一个或多个与用户接口530相关联的输出装置531(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块554,用于对一个或多个来自一个或多个输入装置532之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的图像处理装置可以采用软硬件结合的方式实现,作为示例,本申请实施例提供的图像处理装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的图像处理方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific IntegratedCircuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
在一些实施例中,本申请实施例提供的服务提供装置可以采用软件方式实现,图2示出了存储在存储器550中的服务提供装置555,其可以是程序和插件等形式的软件,包括以下软件模块:接收模块5551、确定模块5552、服务模块5553、调整模块5554、输出模块5555和登录模块5556,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。
将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的装置可以采用硬件方式实现,作为示例,本申请实施例提供的装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的。。方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex ProgrammableLogic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
将结合本申请实施例提供的终端的示例性应用和实施,说明本申请实施例提供的服务提供方法。
参见图3A,图3A是本申请实施例提供的服务提供方法的一个可选的流程示意图,将结合图3A示出的步骤进行说明。
在步骤101中,终端向服务器发送针对目标服务的服务请求消息;服务请求消息携带目标服务的当前版本信息。
在一些实施例中,该服务器可以用于为至少一个终端提供目标服务,在向任意一个终端提供目标服务之前,该终端可以预先与服务器建立连接,也可以不与该服务器建立连接,本申请实施例对此不作限定,在终端需要使用目标服务时,会向服务器发送携带当前版本信息的服务请求消息。
在本实施例中,该目标服务可以为邮件服务、游戏服务、云存储服务和云计算服务等任意一种网络服务,在服务器对终端提供目标服务的过程中,会与该终端产生数据交互。
在一些实施例中,服务器可以提供不同版本信息对应目标服务,终端在请求使用目标服务时,会在服务请求消息中携带当前版本信息,以使服务器在不同版本信息对应的目标服务中确定当前版本信息对应的目标服务提供给终端。以目标服务为邮件服务举例,若服务器可以提供两个版本信息对应的邮件服务,即A版本的邮件服务和B版本对应的邮件服务,终端可以发送针对邮件服务的服务请求消息时,选择需要的当前版本信息,若该当前版本信息为A版本,则服务器在接收到携带A版本的服务请求消息后,向终端提供A版本的邮件服务。
其中,可以采用以下方式实现在服务请求消息携带目标服务的当前版本信息:(1)在发送服务请求消息时,通过交互式界面获取用户在多个不同版本信息中选择的当前版本信息,发送携带该当前版本信息的服务请求消息至服务器;(2)对于目标服务,终端侧设置有该目标服务对应的本地客户端,通过获取本地客户端的支持的版本信息确定当前版本信息,发送携带该当前版本信息的服务请求消息至服务器;(3)终端侧显示不同版本信息的目标服务对应的选项,在用户选择当前版本信息对应的选项后,终端发送携带该当前版本信息的服务请求消息至服务器。
在步骤102中,服务器接收终端针对目标服务发送的服务请求消息;服务请求消息携带目标服务的当前版本信息。
在本实施例中,和上述终端向服务器发送针对目标服务的服务请求消息的步骤相同,服务器在接收到终端发送的服务请求消息后,会解析该服务请求消息中携带的当前版本信息。
在步骤103中,服务器在提供目标服务的至少两个服务进程中,确定与当前版本信息匹配的目标进程。
在一些实施例中,服务器可以提供不同版本信息的目标服务,不同版本信息的目标服务对应不同的服务进程,即至少两个服务进程与至少两个版本信息存在对应关系。同一服务进程提供同一版本信息的目标服务,由于存在至少两个服务进程可以提供同一版本信息的目标服务,因此,同一版本信息的目标服务可以对应不同的服务进程。以目标服务为邮件服务为例,服务器可以包括提供该邮件服务的P1进程和P2进程,其中,P1进程对应A版本信息,P2进程对应B版本信息,在当前版本信息为A版本信息时,将P1进程确定为目标进程;在上述实施例的基础上,若服务器还包括对应A版本信息的P3进程,在当前版本信息为A版本信息时,可以通过负载均衡算法在P1进程和P3进程中选择一个进程作为目标进程。
在步骤104中,服务器利用目标进程为终端提供目标服务。
在一些实施例中,服务器中的每一服务进程均可以同时为一个或多个终端提供目标服务,在确定目标进程后,可以在该目标进程中创建一个子进程,利用该子进程为终端提供目标服务。
在一些实施例中,可以通过这样的方式来实现上述的服务器利用目标进程为终端提供目标服务:服务器发送携带目标进程的域名信息及端口信息的反馈消息至终端,以使终端通过目标进程的域名信息及端口信息与服务器建立连接;服务器通过连接为终端提供目标服务。
在本实施例中,该服务器中所有服务进程的域名信息与该服务器的域名相同,对于不同的服务进程,会设置不同的端口信息。在确定目标进程后,服务器会将该域名信息和目标进程对应的端口信息封装成反馈消息,将该反馈消息发送至终端。终端在接收到该反馈消息后,会对其进行解析并得到该域名信息和端口信息,终端会通过该域名信息找到服务器,并通过端口信息找到目标进程,并通过目标进程与服务器建立连接。服务器通过建立的连接为终端提供目标服务。
在一些实施例中,在任意步骤之间,还包括:服务器接收至少两个服务进程中每一服务进程按照预设频率发送的心跳消息;心跳消息包括服务进程中各终端对应的版本信息;服务器统计每一版本信息对应的处于目标服务中的第一终端数量,并输出第一向量;第一向量用于表征每一版本信息对应的第一终端数量之间的大小关系。
在本实施例中,服务器中每一服务进程均按照预设频率产生心跳消息,心跳消息可以用于表征各服务进程是否存活。在一个实施例中,若未接收到任意一个服务进程产生的心跳消息,则判定该服务进程未正常工作;在另一个实施例中,若连续N(由运维人员设置)次未接收到任意一个服务进程产生的心跳消息,则判定该服务进程未正常工作。其中,若判定一个服务进程未正常工作,则不会将该服务进程判定为目标进程,在该服务进程重新产生心跳消息时,可以将该服务进程判定为目标进程。
在本实施例中,任意一个服务进程产生的心跳消息可以携带该服务进程的版本信息,和处于该服务进程中(即处于目标服务中)的终端数量。服务器在获取到所有心跳消息后,会统计每一版本信息对应的第一终端数量。根据各版本信息对应的第一终端数量可以得到用于表征每一版本信息对应的第一终端数量之间的大小关系的第一向量。该第一向量由每一版本信息对应的比例数值组成,每一版本信息对应的比例数值的大小表征该版本信息的第一终端数量相对于其他版本信息的大小。以目标服务为邮件服务为例,服务器可以包括提供该邮件服务的P1进程、P2进程和P3进程,P1进程和P3进程对应A版本信息,P2进程对应B版本信息,其中,P1进程产生的心跳消息携带了A版本信息和处于P1进程中的终端数量20,P2进程产生的心跳消息携带了B信息和处于P2进程中的终端数量30,P3进程产生的心跳消息携带了A版本信息和处于P3进程中的终端数量20,则可以统计A版本对应的第一终端数量为20+20=40,B版本对应的第一终端数量为30,以预设的版本信息顺序,A版本至B版本,可以确定第一向量为[4,3]。此时,该第一向量可以表征,处于A版本对应的第一终端数量与B版本对应的第一终端数量的之间的比例关系为4比3。通过本实施例的服务提供方法,可以使运维人员实时掌握处于目标服务中的各个版本信息对应的第一终端数量所占的比例。
在一些实施例中,服务器包括大区服务器、匹配服务器和对局服务器,可以通过这样的方式来实现上述的服务器接收终端针对目标服务发送的服务请求消息:大区服务器接收终端发送的服务请求消息,在服务请求消息合法的情况下,将服务请求消息发送至匹配服务器;可以通过这样的方式来实现上述的在提供目标服务的至少两个服务进程中,确定与当前版本信息匹配的目标进程:匹配服务器在提供目标服务的至少两个服务进程中,确定与当前版本信息匹配的目标进程;可以通过这样的方式来实现上述的利用目标进程为终端提供目标服务:对局服务器利用目标进程为终端提供目标服务。
在本实施例中,以目标服务为游戏服务为例,该服务器可以为包括大区服务器、匹配服务器和对局服务器的服务器集群,终端向大区服务器发送针对目标服务的服务请求消息,该服务请求消息为针对游戏服务的匹配请求,大区服务器在接收到该匹配请求后,会检查该匹配请求是否合法,在该匹配请求合法的情况下,将该匹配请求发送至匹配服务器。匹配服务器在接收到该匹配请求后,会将其放入对应的匹配队列,按照该匹配队列的执行顺序直到处理该匹配请求后,会在提供游戏服务的至少两个服务进程中确定与该匹配请求中携带的当前版本信息匹配的目标进程。对局服务器利用匹配服务器中确定的目标进程为终端提供游戏服务。
通过本申请实施例对于图3A的上述示例性实施可知,本申请实施例通过在服务器中同时部署提供目标服务的至少两个服务进程,其中,至少两个服务进程与至少两个版本信息对应,在终端发送不同版本信息对应的服务请求消息时,可以根据携带的当前版本信息确定与当前版本信息匹配的目标进程,并提供当前版本信息的目标服务,使得服务器在原始服务器架构下同时为终端提供不同版本信息对应的目标服务,因此,在版本服务更迭期间,本申请实施例中的服务提供方法可以在不中断提供原始版本的目标服务的同时,提供另一版本的目标服务,实现了不停机更新,提升用户体验。
在一些实施例中,参见图3B,图3B是本申请实施例提供的方法的一个可选的流程示意图,基于图3A,图3A示出的步骤103可更新为步骤203,在步骤203中,根据路由策略,在至少两个服务进程中确定与当前版本信息匹配的目标进程,其中:路由策略,包括:获取目标服务对应的进程集合;进程集合包括至少两个服务进程;将进程集合中与当前版本信息匹配的服务进程确定为目标进程。
在本实施例中,至少两个服务进程与至少两个版本信息对应,每一服务进程均对应唯一一个版本信息,因此,在进程集合包括至少两个服务进程的情况下,该进程集合可以提供至少两个版本信息对应的目标服务。在确定与当前版本信息匹配的目标进程过程中,服务器可以根据该当前版本信息在该进程集合中尝试获取与该当前版本信息对应的服务进程,若可以获取到至少一个与该当前版本信息匹配的服务进程,则利用负载均衡算法在该至少一个匹配的服务进程中确定目标进程;若不能获取到任意一个与该当前版本信息匹配的服务进程,则拒绝该服务请求消息。
在一些实施例中,至少两个服务进程包括具有第一版本信息的第一进程和具有第二版本信息的第二进程,可以通过这样的方式来实现上述的将进程集合中与当前版本信息匹配的服务进程确定为目标进程:若当前版本信息与第一版本信息匹配,确定第一进程为目标进程;若当前版本信息与第二版本信息匹配,确定第二进程为目标进程;若当前版本信息与第一版本信息不匹配,且与第二版本信息不匹配,拒绝服务请求消息。
在本实施例中,以进程集合包括具有第一版本信息的第一进程和具有第二版本信息的第二进程为例,若当前版本信息与第一版本信息匹配,确定第一进程为目标进程;若当前版本信息与第二版本信息匹配,确定第二进程为目标进程;若当前版本信息与第一版本信息不匹配,且与第二版本信息不匹配,拒绝服务请求消息。
基于图3A,在步骤104之后,还包括步骤105。
在步骤105中,服务器获取用于新增第三进程的第一触发指令;第一触发指令包括第三进程的版本信息、端口信息;服务器根据第一触发指令调整路由策略。
在本实施例中,该第一触发指令可以是运维人员通过与服务器连接的输入装置输入的,在接收到该第一触发指令后,服务器解析该第一触发指令,并得到第三进程的版本信息和端口信息,根据第三进程的版本信息和端口信息调整上述路由策略。其中,可以通过这样的方式实现根据第一触发指令调整路由策略:将所述第三进程添加至所述进程集合,并设置第三进程与其版本信息之间的对应关系。在调整路由策略之后,服务器在接收到其他终端发送的针对目标服务的服务请求消息时,若该服务请求消息中携带的当前版本信息只与第三进程的版本信息相匹配,则将该第三进程确定为目标进程。在利用目标进程为该其他终端提供目标服务时,会将第三进程对应的端口信息发送至该其他终端。在其他实施例中,该第一触发指令还包括第三进程的域名信息,该域名信息可以为部署该第三进程的服务器的域名信息,对应的,在利用目标进程为该其他终端提供目标服务时,除了会将第三进程对应的端口信息发送至该其他终端,还需要发送第三进程对应的域名信息。
在本实施例中,以目标服务为游戏服务为例,该服务器可以为包括大区服务器、匹配服务器和对局服务器的服务器集群,可以通过这样的方式来实现上述步骤:匹配服务器根据路由策略,在至少两个服务进程中确定与当前版本信息匹配的目标进程;其中:路由策略,包括:匹配服务器获取目标服务对应的进程集合;进程集合包括至少两个服务进程;匹配服务器将进程集合中与当前版本信息匹配的服务进程确定为目标进程。匹配服务器获取用于新增第三进程的第一触发指令;第一触发指令包括第三进程的版本信息、端口信息;匹配服务器根据第一触发指令调整路由策略。
通过本申请实施例对于图3B的上述示例性实施可知,本申请实施例通过在服务器中设置进程集合,利用该进程集合中每一个服务进程与版本信息的对应关系,确定与当前版本信息对应的目标进程,可以提升目标进程的查找效率,提升目标服务的服务质量;并且,由于设置了进程集合,在新增进程的过程中,可以将新增的进程直接放入该进程结合,在设置该新增进程的版本信息,域名信息和端口信息后,即可完成路由策略的调整,为服务器架构提供了较高的灵活性。
在一些实施例中,参见图3C,图3C是本申请实施例提供的方法的一个可选的流程示意图,基于图3A,在步骤101之前,还包括步骤301至步骤307。
在步骤301中,终端向服务器发送登录请求。
在本实施例中,在服务器为终端提供目标服务时,需要终端先登录至服务器,终端在登录状态中才能向服务器发送服务请求消息。本实施例描述的是终端在登录该服务器的过程。
其中,登录请求中携带了当前版本信息,可以采用以下方式实现在登录请求中携带当前版本信息:(1)在发送登录请求时,通过交互式界面获取用户在多个不同版本信息中选择的当前版本信息,发送携带该当前版本信息的登录请求至服务器;(2)对于目标服务,终端侧设置有该目标服务对应的本地客户端,通过获取本地客户端的支持的版本信息确定当前版本信息,发送携带该当前版本信息的登录请求至服务器;(3)终端侧显示不同版本信息的目标服务对应的选项,在用户选择当前版本信息对应的选项后,终端发送携带该当前版本信息的登录请求至服务器。
在步骤302中,服务器接收终端的登录请求;登录请求包括当前版本信息。
在本实施例中,和上述终端向服务器发送登录请求的步骤相同,服务器在接收到终端发送的登录请求后,会解析该登录请求中携带的当前版本信息。
在步骤303中,服务器确定终端对应的目标版本信息。
在本实施例中,服务器中存储有预设的版本控制规则,根据该版本控制规则可以确定终端对应的目标版本信息,该版本控制规则可以为以下规则中的任意一种:
(1)服务器中预先设置了各版本信息之间终端数量的标准比例,在获取到该登录请求时,获取当前各个版本信息中每一版本信息对应的终端数量,该终端数量可以为处于登录状态的终端数量,也可以为处于目标服务中的终端数量。得到各版本信息中超出标准比例的版本信息及未达到标准比例的版本信息,在未达到该标准比例的版本信息中任意选择一种版本信息作为目标版本信息。以存在A版本信息和B版本信息共两种版本信息为例,服务器预先设置了A版本信息和B版本信息之间终端数量的标准比例为0.5:0.5,在获取到该登录请求时,A版本信息对应的终端数量为66,B版本信息对应的终端数量为50,此时A版本信息和B版本信息之间终端数量的比例为0.51:0.49,可以看出,B版本信息未达到标准比例,因此,将B版本信息作为终端对应的目标版本信息。
(2)该登录请求还可以携带用户的唯一标识,该唯一标识可以为由英文字符、数字字符和中文字符等字符中的一种或几种的组合所确定。
可以将版本控制规则设置为根据唯一标识的字符数确定与字符数对应的版本信息作为目标版本信息,即,服务器可以根据该登录请求中携带的唯一标识的字符数确定该终端对应目标版本信息。以存在A版本信息和B版本信息共两种版本信息为例,字符数小于等于10的唯一标识对应A版本信息,字符数大于10的唯一标识对应B版本信息,当登录请求中携带的唯一标识为12字符数时,其对应的目标版本信息为B版本信息;
还可以将版本控制规则设置为根据唯一标识的首位字符的字符类型确定与字符类型对应的版本信息作为目标版本信息,即,服务器可以根据该登录请求中携带的唯一标识首位字符的字符类型确定该终端对应目标版本信息。以存在A版本信息和B版本信息共两种版本信息为例,首位字符为英文字符的唯一标识对应A版本信息,首位字符不是英文字符的唯一标识对应B版本信息,当登录请求中携带的唯一标识首位字符为英文字符时,其对应的目标版本信息为A版本信息。
在一些实施例中,可以通过这样的方式来实现上述的服务器确定终端对应的目标版本信息:获取预设的第二向量和第三向量;第二向量用于表征每一版本信息对应的预设的第二终端数量之间的大小关系;第三向量用于表征每一版本信息对应的处于登录状态中的第三终端数量之间的大小关系;根据第二向量和第三向量确定终端对应的目标版本信息。
在本实施例中,预设的第二向量为确定目标版本信息的标准向量,由运维人员根据实际需求预先设置,该第二向量用于表征每一版本信息对应的预设的第二终端数量之间的大小关系,也就是说,通过设置每一版本信息在第二向量中的数值,控制每一版本信息对应的终端数量相当于其他版本信息对应的终端数量的大小关系。该第二向量由每一版本信息对应的比例数值组成,每一版本信息对应的比例数值的大小表征该版本信息的第二终端数量相对于其他版本信息的大小。以存在A版本信息和B版本信息共两种版本信息为例,预设的第二向量为[0.25,0.75],可以表示可以通过该第二向量,将A版本信息对应的第二终端数量与B版本信息对应的第二终端数量之间的大小关系(大小比例)控制在1:3。
在本实施例中,该第三向量为在接收终端的登录请求时,每一版本信息对应的目前处于登录状态的第三终端数量之间的大小关系。该第三向量由每一版本信息对应的比例数值组成,每一版本信息对应的比例数值的大小表征该版本信息的第三终端数量相对于其他版本信息的大小。以存在A版本信息和B版本信息共两种版本信息为例,在接收到终端的登录请求时,服务器会获取当前处于登录状态的且版本信息为A版本信息的第二终端数量19,和当前处于登录状态的且版本信息为B版本信息的第二终端数量60,此时,该第三向量可以表示为[0.24,0.76]。
在本实施例中,通过比较第二向量和第三向量,可以确定第三向量中至少一个版本信息对应的比例数值未达到第二向量设定的比例数值,在该至少一个版本信息中确定目标版本信息。继承上述实施例的举例,预设的第二向量为[0.25,0.75],第三向量为[0.24,0.76],可以看出,A版本信息对应的比例数值未达到第二向量中设定的比例数值,因此,将目标版本信息确定为A版本信息。
在步骤304中,若目标版本信息与当前版本信息匹配,服务器与终端建立连接。
在步骤305中,若目标版本信息与当前版本信息不匹配,服务器发送版本变更消息至终端。
在步骤306中,终端变更至目标版本信息。
在步骤307中,服务器与变更版本后的终端建立连接。
在本实施例中,以目标服务为游戏服务为例,该服务器可以为包括大区服务器、匹配服务器、对局服务器和版本服务器的服务器集群,可以通过这样的方式来实现上述步骤:终端向版本服务器发送登录请求;版本服务器接收终端的登录请求;版本服务器确定终端对应的目标版本信息;若目标版本信息与当前版本信息匹配,版本服务器指示大区服务器与终端建立连接;若目标版本信息与当前版本信息不匹配,版本服务器发送版本变更消息至终端;终端变更至目标版本信息;版本服务器指示大区服务器与变更版本后的终端建立连接。
通过本申请实施例对于图3C的上述示例性实施可知,本申请实施例在接收到登录请求时,通过比较当前版本信息与目标版本信息,可以实现对处于登录状态的第三终端数量进行控制;同时,通过预设的第二向量和当前时刻获取的第三向量确定终端对应的目标版本信息,可以按照预设的第二向量控制每一版本信息对应的处于登录状态的第三终端数量,实现了在版本更迭过程中,对各个版本信息对应终端数量的实时控制,进而实现了版本灰度更新的效果。
在一些实施例中,参见图3D,图3D是本申请实施例提供的方法的一个可选的流程示意图,基于图3C,任意步骤之间,还包括步骤401至步骤403。
在步骤401中,获取携带第四向量的第二触发指令;第二触发指令用于将第二向量调整至第四向量。
在本实施例中,该第二触发指令可以是运维人员通过与服务器连接的输入装置输入的,在接收到该第二触发指令后,服务器解析该第二触发指令,并得到第四向量,根据第四向量调整该第二向量。通过本步骤,运维人员可以根据实际需求,控制各版本信息对应的终端的登录比例。该第四向量与该第二向量的组成个事项相同,由每一版本信息对应的比例数值组成,每一版本信息对应的比例数值的大小表征该版本信息的第二终端数量相对于其他版本信息的大小。
在步骤402中,根据第二向量和第四向量,在至少两个版本信息中将需要减少终端数量的版本信息,确定为至少一个待修正版本信息。
在本实施例中,在将该第二向量调整至第四向量后,每一版本信息对应的比例数值均可能发生变化,至少存在一个比例数值变大的版本信息和至少一个比例数值变小的版本信息,将该至少一个比例数值变小的版本信息确定为需要减少终端数量的至少一个待修正版本信息。其中,各版本信息对应的比例数值表征该版本信息对应的终端数量在总终端数量中所占的比例,在一个版本信息对应的比例数值变大后,会存在至少一个版本信息对应的比例数值变小,同样的,在一个版本信息对应的比例数值变小后,会存在至少一个版本信息对应的比例数值变大。对于比例数值变小的版本信息,及待修正版本信息,为了响应于该第二触发指令,需要将该待修正版本信息对应的终端数量减少。
在步骤403中,断开与至少一个待修正版本信息对应的部分终端之间的连接。
在本实施例中,为了减少该待修正版本信息对应的终端数量,可以采用断开该待修正版本信息对应的一部分终端的连接。其中,可以采用随机的方式断开与特定数量的待修正版本信息的终端之间的连接。
在一些实施例中,步骤403可以通过步骤4031至步骤4033实现。
在步骤4031中,获取至少一个待修正版本信息对应的至少一个待修正终端。
在步骤4032中,若待修正终端不处于目标服务中,则断开与待修正终端之间的连接;
在步骤4033中,若待修正终端处于目标服务中,则在结束目标服务后,断开与待修正终端之间的连接。
在本实施例中,至少一个待修正版本信息对应的至少一个待修正终端均处于登录状态,在各待修正终端中,会存在一部分待修正终端正处于目标服务中,也会存在一部分待修正终端未处于目标服务中,通过先断开不处于目标服务的待修正终端之间的连接,且在处于目标服务中的待修正终端结束目标服务后,断开与待修正终端之间的连接。可以在不影响用户使用体验的前提下,对每个版本信息对应的终端数量进行控制。其中,每断开一定数量的待修正终端之后,会实时获取当前时刻的第一向量,在该第一向量与调整后的第二向量(第四向量)之间的误差小于预设误差阈值时,停止断开与待修正终端之间的连接的步骤。
在本实施例中,以目标服务为游戏服务为例,该服务器可以为包括大区服务器、匹配服务器、对局服务器和版本服务器的服务器集群,可以通过这样的方式来实现上述步骤:匹配服务器获取携带第四向量的第二触发指令;第二触发指令用于将第二向量调整至第四向量;匹配服务器根据第二向量和第四向量,在至少两个版本信息中将需要减少终端数量的版本信息,确定为至少一个待修正版本信息,匹配服务器获取至少一个待修正版本信息对应的至少一个待修正终端,并在对局服务器中查询各待修正终端的服务状态;若待修正终端不处于目标服务中,则匹配服务器发送断开指令至大区服务器,以使大区服务器断开与待修正终端之间的连接;若待修正终端处于目标服务中,则匹配服务器实时获取对局服务器中各待修正终端的服务状态,在待修正终端结束目标服务后,匹配服务器发送断开指令至大区服务器,以使大区服务器断开与待修正终端之间的连接。
通过本申请实施例对于图3D的上述示例性实施可知,本申请实施例可以根据第二触发指令对预设的第二向量进行调整,可以实现版本更迭过程中对各个版本信息对应的终端数量的控制,进而可以实现版本回滚的效果。并且,由于对不同服务状态下的终端进行分别处理,可以保证目标服务的服务质量,提升用户侧的体验。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。为了便于理解,以提供不同版本的游戏服务进行举例说明。
在网络游戏中,基于性能和数据安全的考虑,服务器会在本机共享内存中对一些玩家数据进行缓存,这样在服务器进程重启以及玩家操作时,就不需要从数据库读取,直接操作本机共享内存缓存数据即可。这种方法降低了跨机操作,同时减少了数据库的查询效率(访问磁盘比较慢),因此可以有效提升服务器的处理能力。但由此引入的一个新的问题时,即在玩法逻辑发生变化或新增一些特性时,通常会涉及到缓存数据结构的变化,因此需要停掉进程并清理缓存,然后再更新至新的服务器,即我们常说的服务器停服更新,这也是目前游戏更新的一种主流方式。这种更新方式用户侧的感知不是很友好,特别是在一些纯粹的服务器BUGFIX时。另外,因为是停机更新,所以通常需要选择在游戏在线低峰期的时候如凌晨等,运维操作和人力成本也相对比较高。
在一些实施例中,设计了一种基于版本控制的服务器不停机更新方案,有以下优点:
1)服务器更新不需要停机,用户无感知,体验较优。
2)服务器采用滚动更新的方式,发布后滚动更新过程由用户操作触发自动切换,不需要人力干预,运维和人力成本低。
3)服务器更新过程中不需要额外的服务器投入,运营的机器成本低。
4)同时适用于分区分服和全区全服游戏。
在现阶段的网络游戏服务中(以一款全球同服的FPS游戏为例),架构如图4所示。其中,整个服务器架构中会有一个公共服务集群,包括除了PVP(对局)服务器之外的其他所有服务,如匹配服务器、监控服务器以及数据存储服务器等,而玩家通过负载均衡和大区服务器连接,由大区服务器访问公共服务集群的其他服务器。负责单局战斗的PVP服务器有独立的集群,且每台PVP服务器上会平行部署多个进程,因为PVP服务是CPU密集型的,所以多个进程有助力利用多核处理能力,而玩家通过负载均衡和PVP服务器直连,游戏中复杂的单局逻辑在PVP服务器上进行,因此PVP服务器和大区服务器是更新比较频繁的模块。玩家在进行单局匹配时,会把匹配请求发送到大区服务器上,经过大区服务器转发到匹配服务器进行撮合,撮合成功后分配一个PVP服务器给到客户端,客户端再向指定的PVP服务器发起连接,连续建立后后续的单局行为由PVP服务器负载。
在现有技术方案中,存在以下缺点:
1)PVP服务器负责较为复杂的单局业务逻辑处理,逻辑特性的更新上线以及BUGFIX都会涉及PVP服务器的更新,按照现有技术方案,如果更新涉及缓存数据结构的变化,就需要停服发布,对用户体验非常不友好。
2)在发布过程中,如果出现新版本的PVP服务器运行中有问题需要回退版本,需要再次停服更新,不能做到快速回退。
3)发布过程是一次性完成,无法做到新、老版本PVP服务器并存,进行灰度更新,例如无法先切换一定比例的用户到新版本的PVP服务器,等观察稳定后再全量所有用户到新版本的PVP服务器。
在本实施例中,会重点以PVP服务器的更新为例,对上述缺点进行解决,以下详细阐述本申请的技术方案。
请参考图5所示的本申请实施例提供一种服务器整体架构示意图。其中:
大区服务器为玩家直接连接的服务器,用户游戏中所有非单局操作的处理,本方案中讨论的匹配请求就是经过大区服务器转发给匹配服务器的。
匹配服务器为玩家进行匹配撮合的服务器,内部按IDC(Internet Data Center,互联网数据中心)划分多个匹配队列,其中新加坡和硅谷为两个核心队列,对于非核心队列而言(包括圣保罗、法兰克福),在低谷期时,会合并到核心队列中进行匹配。硅谷可以覆盖南北美以及部分欧洲,新加坡可以覆盖亚洲以及部分欧洲。
PVP服务器为玩家进行单局游戏的服务器,在各个IDC部署集群。
Monitor(监控)服务器为上报与监控服务器,用于监控数据分析、告警,目前用Grafana和Prometheus搭建,在本架构中主要用于分析PVP和PVPSP各版本的用户数情况,常用于灰度发现时观察灰度进度。其中,Grafana为一款采用go语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具;Prometheus为一款开源的系统监控和告警工具包。
如图5所示,各PVP服务器包括两组进程:PVP进程和PVPSP进程。其中,PVP进程和PVPSP进程对应不同的版本信息在本申请中PVP进程和PVPSP进程为提供目标服务(在本实施例中为游戏服务)的两种不同版本对应的进程,以PVP进程和PVPSP进程为例,在匹配服务器上管理的配置格式如下:
Figure BDA0002541260710000181
Figure BDA0002541260710000191
从上面配置可以看出,共有3台PVP服务器,分别是101.0.1.1\2\3,每台服务器部署了两个PVP进程以及两个PVPSP进程,分别绑定了10001\10002和10003\10004端口,匹配服务器会根据客户端上传的版本号,来选择请求转发给PVP进程或者是PVPSP进程。
在本实施例中,各PVP服务器均引入PVPSP进程,与PVP进程同步部署,同时,在匹配服务器中设置ClientVersion(客户端版本)为1001的PVP进程列表和ClientVersion为1002的PVPSP进程列表。其中,PVP进程列表用于管理与登记各PVP服务器中的PVP进程,PVPSP进程列表用于管理与登记各PVP服务器中的PVPSP进程。
在本实施例中的版本号采用区间式,以上面配置为例,[10001,100010)会转到PVP进程,[10010,正无穷)会转发到PVPSP进程这样的配置方式非常灵活。
请参阅图6所示的本申请实施例提供一种可选的匹配开局流程示意图。其中:
在步骤601中,客户端登录上报版本号到大区服务器,登记在本地缓存中。
在步骤602中,客户端发布匹配,请求先到达大区服务器,验证请求合法。
在步骤603中,大区服务器验证请求合法后转到匹配服务器进行匹配撮合。
在步骤604中,判断客户端版本号,并转发至PVP进程或PVPSP进程。
在本实施例中,匹配服务器管理两组进程,根据客户端版本号选择撮合用户到其中一组服务进程中。其中,无论转发至PVP进程或PVPSP进程,PVP服务器需要定时上报每一进程当前服务客户端的版本号,以实现心跳响应。
在步骤605中,开局成功。
请参阅图7所示的本申请实施例提供一种可选的匹配开局流程示意图。其中:
在步骤701中,客户端向大区服务器发送匹配请求。
在步骤702中,大区服务器检查该匹配请求的合法性,在满足合法性的情况下,将该匹配请求转发至匹配服务器。
在步骤703中,匹配服务器在接收到该匹配请求后,会将该匹配请求放入对应的匹配队列。按照队列执行顺序,直到开始处理该匹配请求时,执行步骤704。
在步骤704中,匹配服务器管理两组进程,根据匹配请求中携带的客户端版本选择撮合用户到哪一组服务进程。
在步骤705中,如果客户端版本号对应PVPSP进程,则请求PVPSP进程创建单局。
在步骤706中,如果客户端版本号对应PVPSP进程,则请求PVPSP进程创建单局。
在步骤707中,PVP服务器中的PVP进程单局创建成功,并返回PVP进程的域名和端口至匹配服务器。
在步骤708中,PVP服务器中的PVPSP进程单局创建成功,并返回PVPSP进程的域名和端口至匹配服务器。
在步骤709中,匹配服务器将接收到的域名和端口转发至大区服务器。
在步骤710中,大区服务器将接收到的域名和端口转发至客户端。
在步骤711中,对应于步骤705和步骤707,客户端连接PVP进程开始单局。
在步骤712中,PVP进程返回连接成功,通知客户端可以发后续请求。
在步骤713中,对应于步骤706和步骤708,客户端连接PVPSP进程开始单局。
在步骤714中,PVPSP进程返回连接成功,通知客户端可以发后续请求。
在一些实施例中,本申请实施例中路由规则是由访问模块来进行管理,比如PVP进程和PVPSP进程的规则在匹配服务器上进行管理,同时PVP进程和PVPSP进程的负载均衡、心跳检测、故障踢除、服务发现也是由匹配服务器进入管理,这里也可以引入一些开源组件来进行管理,例如采用zookeeper,可以把路由表保存在zookeeper中,同时用zookeeper来进行心跳检测服务进程的存活。另外在监控平台的选型上,也可以用其他的开源组件进行替换,或者是自行搭建(实现难度较低),不局限于现有方案。
采用本申请实施例提供的服务提供方法,可以产生以下有益效果和创新点。
(1)任何一个服务器模块,都可以通过设置不同版本号实现两组进程同时部署,由访问模块的前端访问者,根据路由规则控制访问请求转发到对应类别的进程,从而实现了服务器模块不停机更新。
(2)同一个功能模块的两组进程会在同一台服务器上部署,服务器资源共用,通过路由规则控制将用户从老版本的服务器过渡到新版本的服务器,整个发布过程不需要额外投入机器成本,成本低。
(3)支持灰度发布和回滚,同时这个功能也可以用于服务器的扩容和缩容,给服务器架构提供了很大的灵活性。
(4)通过Monitor Server收集各个模块的访问比例,可以精确的掌握访问模型,在灰度过程中特别有效。
下面继续说明本申请实施例提供的服务提供装置555的实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器550的服务提供装置555中的软件模块可以包括:
接收模块5551,用于接收终端针对目标服务发送的服务请求消息;服务请求消息携带目标服务的当前版本信息,
确定模块5552,用于在提供目标服务的至少两个服务进程中,确定与当前版本信息匹配的目标进程;
服务模块5553,用于利用目标进程为终端提供目标服务。
在一些实施例中,确定模块5552还用于根据路由策略,在至少两个服务进程中确定与当前版本信息匹配的目标进程,其中:路由策略,包括:获取目标服务对应的进程集合;进程集合包括至少两个服务进程;将进程集合中与当前版本信息匹配的服务进程确定为目标进程。
在一些实施例中,至少两个服务进程包括具有第一版本信息的第一进程和具有第二版本信息的第二进程,确定模块5552还用于若当前版本信息与第一版本信息匹配,确定第一进程为目标进程;若当前版本信息与第二版本信息匹配,确定第二进程为目标进程;若当前版本信息与第一版本信息不匹配,且与第二版本信息不匹配,拒绝服务请求。
在一些实施例中,服务提供装置555还包括调整模块5554,用于获取用于新增第三进程的第一触发指令;第一触发指令包括第三进程的版本信息、端口信息;根据第一触发指令调整路由策略。
在一些实施例中,服务模块5553,还用于发送携带目标进程的域名信息及端口信息的反馈消息至终端,以使终端通过目标进程的域名信息及端口信息与服务器建立连接;通过连接为终端提供目标服务。
在一些实施例中,服务提供装置555还包括输出模块5555,用于接收至少两个服务进程中每一服务进程按照预设频率发送的心跳消息;心跳消息包括服务进程中各终端对应的版本信息;统计每一版本信息对应的处于目标服务中的第一终端数量,并输出第一向量;第一向量用于表征每一版本信息对应的第一终端数量之间的大小关系。
在一些实施例中,服务提供装置555还包括登录模块5556,用于接收终端的登录请求;登录请求包括当前版本信息;确定终端对应的目标版本信息;若目标版本信息与当前版本信息匹配,与终端建立连接;若目标版本信息与当前版本信息不匹配,发送版本变更消息至终端,以使终端变更至目标版本信息;与变更版本后的终端建立连接。
在一些实施例中,至少两个服务进程与至少两个版本信息存在对应关系,登录模块5556,还用于获取预设的第二向量和第三向量;第二向量用于表征每一版本信息对应的预设的第二终端数量之间的大小关系;第三向量用于表征每一版本信息对应的处于登录状态中的第三终端数量之间的大小关系;根据第二向量和第三向量确定终端对应的目标版本信息。
在一些实施例中,调整模块5554还用于获取携带第四向量的第二触发指令;第二触发指令用于将第二向量调整至第四向量;根据第二向量和第四向量,在至少两个版本信息中将需要减少终端数量的版本信息,确定为至少一个待修正版本信息;断开与至少一个待修正版本信息对应的部分终端之间的连接。
在一些实施例中,调整模块5554还用于获取至少一个待修正版本信息对应的至少一个待修正终端;若待修正终端不处于目标服务中,则断开与待修正终端之间的连接;若待修正终端处于目标服务中,则在结束目标服务后,断开与待修正终端之间的连接。
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的方法,例如,如图3A、图3B、图3C或图3D示出的方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
综上所述,通过本申请实施例能够实现以下技术效果:
(1)通过在服务器中同时部署提供目标服务的至少两个服务进程,其中,至少两个服务进程与至少两个版本信息对应,在终端发送不同版本信息对应的服务请求消息时,可以根据携带的当前版本信息确定与当前版本信息匹配的目标进程,并提供当前版本信息的目标服务,使得服务器在原始服务器架构下同时为终端提供不同版本信息对应的目标服务,不需要额外投入机器成本,成本低。
(2)在版本服务更迭期间,本申请实施例中的服务提供方法可以在不中断提供原始版本的目标服务的同时,提供另一版本的目标服务,实现了不停机更新,提升用户体验。
(3)本申请实施例通过在服务器中设置进程集合,可以提升目标进程的查找效率,提升目标服务的服务质量,为服务器架构提供了较高的灵活性。
(4)本申请实施例可以实现对处于登录状态的第三终端数量进行控制;同时,可以按照预设的第二向量控制每一版本信息对应的处于登录状态的第三终端数量,实现了在版本更迭过程中,对各个版本信息对应终端数量的实时控制,进而实现了版本灰度更新的效果。
(5)本申请实施例可以根据第二触发指令对预设的第二向量进行调整,可以实现版本更迭过程中对各个版本信息对应的终端数量的控制,进而可以实现版本回滚的效果。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

Claims (10)

1.一种服务提供方法,其特征在于,包括:
接收终端针对目标服务发送的服务请求消息;所述服务请求消息携带所述目标服务的当前版本信息;
在提供所述目标服务的至少两个服务进程中,确定与所述当前版本信息匹配的目标进程;
利用所述目标进程为所述终端提供所述目标服务。
2.根据权利要求1所述的方法,其特征在于,所述在提供所述目标服务的至少两个服务进程中,确定与所述当前版本信息匹配的目标进程,包括:
根据路由策略,在所述至少两个服务进程中确定与所述当前版本信息匹配的目标进程,其中:
所述路由策略,包括:获取所述目标服务对应的进程集合;所述进程集合包括所述至少两个服务进程;将所述进程集合中与所述当前版本信息匹配的服务进程确定为所述目标进程。
3.根据权利要求2所述的方法,其特征在于,所述至少两个服务进程包括具有第一版本信息的第一进程和具有第二版本信息的第二进程;所述将所述进程集合中与所述当前版本信息匹配的服务进程确定为所述目标进程,包括:
若所述当前版本信息与所述第一版本信息匹配,确定所述第一进程为所述目标进程;
若所述当前版本信息与所述第二版本信息匹配,确定所述第二进程为所述目标进程;
若所述当前版本信息与第一版本信息不匹配,且与所述第二版本信息不匹配,拒绝所述服务请求消息。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
获取用于新增第三进程的第一触发指令;所述第一触发指令包括所述第三进程的版本信息、端口信息;
根据所述第一触发指令调整所述路由策略。
5.根据权利要求1所述的方法,其特征在于,所述利用所述目标进程为所述终端提供所述目标服务,包括:
发送携带所述目标进程的域名信息及端口信息的反馈消息至所述终端,以使所述终端通过所述目标进程的域名信息及端口信息与服务器建立连接;
通过所述连接为终端提供所述目标服务。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述至少两个服务进程中每一服务进程按照预设频率发送的心跳消息;所述心跳消息包括所述服务进程中各终端对应的版本信息;
统计每一所述版本信息对应的处于所述目标服务中的第一终端数量,并输出第一向量;所述第一向量用于表征每一所述版本信息对应的所述第一终端数量之间的大小关系。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述终端的登录请求;所述登录请求包括所述当前版本信息;
确定所述终端对应的目标版本信息;
若所述目标版本信息与所述当前版本信息匹配,与所述终端建立连接;
若所述目标版本信息与所述当前版本信息不匹配,发送版本变更消息至所述终端,以使所述终端变更至所述目标版本信息;与变更版本后的终端建立连接。
8.一种服务提供装置,其特征在于,包括:
接收模块,用于接收终端针对目标服务发送的服务请求消息;所述服务请求消息携带所述目标服务的当前版本信息,
确定模块,用于在提供所述目标服务的至少两个服务进程中,确定与所述当前版本信息匹配的目标进程;
服务模块,用于利用所述目标进程为所述终端提供所述目标服务。
9.一种服务提供设备,其特征在于,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于被处理器执行时,实现权利要求1至7任一项所述的方法。
CN202010547509.3A 2020-06-16 2020-06-16 服务提供方法、装置、设备及计算机可读存储介质 Pending CN111666092A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010547509.3A CN111666092A (zh) 2020-06-16 2020-06-16 服务提供方法、装置、设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010547509.3A CN111666092A (zh) 2020-06-16 2020-06-16 服务提供方法、装置、设备及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN111666092A true CN111666092A (zh) 2020-09-15

Family

ID=72388130

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010547509.3A Pending CN111666092A (zh) 2020-06-16 2020-06-16 服务提供方法、装置、设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN111666092A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115658348A (zh) * 2022-11-07 2023-01-31 北京瑞莱智慧科技有限公司 微服务调用方法、相关装置及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115658348A (zh) * 2022-11-07 2023-01-31 北京瑞莱智慧科技有限公司 微服务调用方法、相关装置及存储介质
CN115658348B (zh) * 2022-11-07 2024-05-14 北京瑞莱智慧科技有限公司 微服务调用方法、相关装置及存储介质

Similar Documents

Publication Publication Date Title
CN108234168B (zh) 一种基于业务拓扑的数据展示方法及系统
CN109729131B (zh) 一种应用请求的处理方法、装置和路由器
WO2020253079A1 (zh) 基于Jmeter的分布式性能测试方法、装置、设备及存储介质
US20070063999A1 (en) Systems and methods for providing an online lobby
WO2021104101A1 (zh) 游戏服务器架构
US7315807B1 (en) System and methods for storage area network simulation
US20090164618A1 (en) Network system and method of administrating networks
CN112100079B (zh) 基于模拟数据调用的测试方法、系统和电子设备
CN105335211B (zh) 一种基于Xen虚拟化集群的FPGA加速器调度系统及方法
CN109513206A (zh) 网络游戏的网络架构及用于网络游戏的数据转发方法
CN110995545B (zh) 云网络配置测试方法及装置
CN113760180A (zh) 存储资源管理方法、装置、设备及计算机可读存储介质
CN107370796A (zh) 一种基于Hyper TF的智能学习系统
US20220414372A1 (en) Scene detection method and apparatus, electronic device and computer storage medium
US20120072589A1 (en) Information Processing Apparatus and Method of Operating the Same
CN111666092A (zh) 服务提供方法、装置、设备及计算机可读存储介质
CN111212087A (zh) 一种登录服务器的确定方法、装置、设备及存储介质
CN114191822B (zh) 一种测试方法、装置、计算机设备、存储介质和产品
US9928097B1 (en) Methods, systems, and computer readable mediums for defining and updating a virtual computing system comprising distributed resource components
CN112783790A (zh) 一种应用程序测试方法和装置
US6404430B1 (en) Virtual space information processor
CN114257614B (zh) 一种多业务模式的医院大数据平台系统及资源调度方法
CN105978746B (zh) 游戏服务器集群系统及提高游戏空间服务方法
KR100389687B1 (ko) 네트워크를 이용한 온라인 게임용 서버시스템
JPH1027146A (ja) 通信処理装置及び通信処理方法

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