CN108431782B - 使用金丝雀分析确定服务器侧行为的客户端侧影响的技术 - Google Patents

使用金丝雀分析确定服务器侧行为的客户端侧影响的技术 Download PDF

Info

Publication number
CN108431782B
CN108431782B CN201680075600.1A CN201680075600A CN108431782B CN 108431782 B CN108431782 B CN 108431782B CN 201680075600 A CN201680075600 A CN 201680075600A CN 108431782 B CN108431782 B CN 108431782B
Authority
CN
China
Prior art keywords
request
time
canary
mapping
modification
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
CN201680075600.1A
Other languages
English (en)
Other versions
CN108431782A (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.)
Netflix Inc
Original Assignee
Netflix Inc
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 Netflix Inc filed Critical Netflix Inc
Publication of CN108431782A publication Critical patent/CN108431782A/zh
Application granted granted Critical
Publication of CN108431782B publication Critical patent/CN108431782B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/42Centralised routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/368Test management for test version control, e.g. updating test cases to a new software version
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1014Server selection for load balancing based on the content of a request
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

在本发明的一个实施例中,粘性金丝雀路由器将与服务相关联的每个请求路由到实现对服务的修改的金丝雀服务器群集或不实现修改的基线服务器群集。粘性金丝雀路由器实现映射算法,该映射算法基于当前时间、路由的时间窗口、和请求的特征来确定每个请求的路由。注意,映射算法可以被实现为使得,针对持续时间等于时间窗口的时间段,粘性金丝雀路由器以一致的方式将从特定设备接收到的所有请求路由到金丝雀群集或基线群集。如此配置,粘性金丝雀路由器能够分析客户端与金丝雀服务器的交互的大致完整部分,从而促进识别改变的客户端侧影响。

Description

使用金丝雀分析确定服务器侧行为的客户端侧影响的技术
相关申请的交叉引用
本申请要求于2015年10月23日提交的序列号为14/922,101的美国专利申请的权益,其通过引用合并于此。
技术领域
本发明的实施例一般地涉及计算机科学,并且更具体地涉及使用金丝雀(canary)分析确定服务器侧行为的客户端侧影响的技术。
背景技术
许多服务提供商通过客户端-服务器架构(其中客户通过客户端设备请求服务,并且作为响应,服务器提供服务)来提供服务。例如,Netflix是一家为客户提供点播流媒体视频的服务提供商。客户通过客户端设备提交请求(例如,请求播放特定视频),Netflix服务器响应于请求来执行软件以将视频传送到客户端设备。客户可以使用任意受支持的客户端设备(例如,视频游戏控制台、电视机、手持设备等)来输入请求。
作为改善客户体验的一部分,服务提供商经常部署引入新功能、改进现有功能、和/或修复缺陷的软件更新。更具体地,服务提供商将软件更新“推送”到服务器,并且随后服务器执行更新的软件。为了确保客户体验不受软件更新的不利影响,服务提供商通常会采用各种测试方法在部署软件更新之前验证软件更新。然而,通过所有客户端工作流程在所有受支持类型的客户端设备上手动测试软件更新通常非常困难且耗时(如果不是不可能的话)。例如,Netflix点播流媒体视频服务支持众多蓝光光盘播放器、众多平板电脑、众多移动电话、众多高清晰度电视接收器、众多家庭影院系统、众多机顶盒、众多视频游戏控制台等等。因此,使用每种受支持类型的客户端设备彻底测试软件更新所需的时间长度是不可接受的。此外,如果在部署软件更新之前没有检测到并且校正由软件更新引入的缺陷,则客户体验可能会降级。
在降低由软件更新引入的未检测到的缺陷的影响的一种方法中,一些服务提供商使用称为金丝雀分析的部署过程。在金丝雀分析中,服务提供商向相对较小比例的“金丝雀”服务器推送软件更新,而相对大比例的“基线(baseline)”服务器保持不变-执行基线(即,未更新的)软件。因为仅在有限数量的服务器上测试软件更新,所以如果软件更新引入了缺陷,则与相对较少的客户端设备相关的相对较小比例的请求会受到影响。
随着金丝雀服务器和基线服务器的运行,服务提供商测量服务器的运行情况以评估软件更新的效果。通常,这种测量的结果被称为“服务器侧度量”。通过将与金丝雀服务器相关联的服务器侧度量和与基线服务器相关联的服务器侧度量进行比较,服务提供商可以检测指示由软件更新引入的一个或多个缺陷的异常。例如,假设软件更新引入了额外的延迟。在金丝雀分析期间,服务器侧度量可以指示与金丝雀服务器相关的延迟显著超过与基线服务器相关的延迟。在做出该确定之后,服务提供商可以在将最终软件更新推送到所有服务器之前修改软件更新以消除额外的延迟。
然而,虽然金丝雀分析可以检测金丝雀服务器的操作中的异常,从而减轻与部署软件更新相关联的风险,但是由软件更新引入的一些缺陷可以逃避通过上述金丝雀分析过程的检测。具体地,在金丝雀分析期间,基线软件的可用性可能会掩盖软件更新对客户端设备操作的影响。例如,假设特定客户端设备发出由金丝雀服务器接收到的请求,然后金丝雀服务器执行更新的软件以生成对请求的响应。此外,假设与更新的软件相关联的缺陷导致金丝雀服务器发生故障,使得特定客户端设备不能解释响应。在传统金丝雀分析过程中,特定客户端设备将重新尝试请求,并且因为实现该服务的服务器中相对较少的服务器是金丝雀服务器,所以基线服务器很可能会接收到该第二请求。基线服务器将执行基线软件,并且因此正确处理第二请求以生成对第二请求的响应。因为特定客户端设备将能够正确解释对第二请求的响应,所以服务器侧度量将不会指示与软件更新相关联的问题。因此,缺陷将有效地逃避检测。
服务器行为对客户端设备的操作的这类未检测到的影响(本文称为服务器侧行为的客户端侧影响)可以包括数据差异、格式改变、空服务器响应等。在操作中,如果引入未检测到的缺陷的软件更新通过了金丝雀分析,则服务提供商可能最终将软件更新推送到所有服务器,而不知道该缺陷。因为基线软件将不再可用,软件更新中的缺陷可能会对跨多种类型的客户端设备的客户体验产生负面影响。
如前所述,本领域需要的是用于在对(在服务器机器上执行的)软件的改变进行测试时检测缺陷的更有效的技术。
发明内容
本发明的一个实施例阐述了一种用于在执行金丝雀分析时路由请求的计算机实现的方法。该方法包括基于第一请求的至少一个特征、与第一请求相关联的时间、和路由的时间窗口来计算第一映射;确定第一映射是否指示第一请求将与对通过服务器提供的服务的修改相关联;以及基于第一映射是否指示第一请求将与修改相关联,将第一请求路由到实现修改的第一服务器或不实现修改的第二服务器。
公开的用于路由请求的技术的一个优点是,服务提供商可以利用这些技术来全面地分析服务的修改对客户体验和服务器行为两者的影响。具体地,为了监控修改的客户端侧影响,服务提供商可以配置时间窗口,使得来自客户端设备子集的请求被一致地路由到实现针对大致完整客户端会话的修改的服务器。因为被包括在子集中的客户端设备在时间窗口的持续时间内不能访问没有进行修改的服务,所以服务提供商可以收集使得服务提供商能够分析修改对客户端设备的影响的度量。
附图说明
能够详细理解本发明的上述特征的方式可以是,通过参考实施例(其中一些在附图中示出)来获得上面简要总结的本发明的更具体描述。然而,要注意的是,附图仅示出了本发明的典型实施例,因此不应被视为限制本发明的范围,因为本发明可以允许其他等效实施例。
图1A是被配置为实现本发明的一个或多个方面的系统的概念图;
图1B是根据本发明的各种实施例的图1A的服务提供商基础设施的更详细图示;
图2是根据本发明的各种实施例的图1B的粘性金丝雀路由器(sticky canaryrouter)的更详细的图示;
图3是根据本发明的各种实施例的由图2的粘性金丝雀路由器实现的路由的示例;以及
图4是根据本发明的各种实施例的用于在执行与服务相关联的软件更新的金丝雀分析时路由请求的方法步骤的流程图。
具体实施方式
在以下描述中,阐述了许多具体细节以提供对本发明更透彻的理解。然而,本领域技术人员显而易见的是,可以在没有这些具体细节中的一个或多个的情况下实施本发明。
系统概述
图1A是被配置为实现本发明的一个或多个方面的系统100的概念图。如图所示,系统100包括但不限于云102(例如,封装的共享资源、软件、数据等),该云102连接到能够与云102进行交互的各种客户端设备。这类客户端设备包括但不限于,台式计算机108、膝上型计算机106、智能电话104、智能电视109、游戏控制台107、平板电脑105、电视连接设备(未示出)、手持设备(未示出)、和流式娱乐设备(未示出)。
云102可以包括配置有任意数量(包括零)的中央处理单元(CPU)112、图形处理单元(GPU)114、存储器116等的任意数量的计算实例110。在操作中,CPU 112是计算实例110的主处理器,该CPU 112控制和协调计算实例110中包括的其他组件的操作。具体地,CPU 112发布控制GPU 114的操作的命令。GPU 114结合了针对图形和视频处理进行优化的电路,包括例如视频输出电路。在各种实施例中,GPU 114可以与计算实例110的一个或多个其他元件集成。存储器116存储由计算实例110的CPU 112和GPU 114使用的内容,例如,软件应用程序和视听数据。在操作中,云102从客户端设备(例如,膝上型计算机110)接收输入客户端信息,一个或多个计算实例110对客户端信息进行操作,并且云102将经处理的信息发送到客户端设备。
在替代实施例中,云102可以用任意类型的云计算环境来代替。在其他实施例中,系统100可以包括代替云102的任意分布式计算机系统。在其他实施例中,系统100不包括云102,替代地,系统100包括实现任意数量的处理单元(例如,以任何形式组合的中央处理单元和/或图形处理单元)的单个计算单元。
通常,包括在云102中的计算实例110被配置为实现执行一个或多个应用的一个或多个服务器。如图所示,计算实例1101-110N被配置作为被包括在服务器提供商基础设施118中的服务器。
图1B是根据本发明的各种实施例的图1A的服务提供商基础设施118的更详细图示。如图所示,服务提供商基础设施118包括但不限于,边缘服务群集120、生产(production)群集140、基线群集150、和金丝雀群集160。边缘服务群集120、生产群集140、基线群集150、和金丝雀群集160包括被配置作为服务器的一个或多个计算实例110。为了说明的目的,包括在生产群集140中的服务器在本文中被称为生产服务器,包括在基线群集150中的服务器在本文中被称为基线服务器,并且包括在金丝雀群集160中的服务器在本文中被称为金丝雀服务器。
在操作中,客户端设备发出作为与在服务提供商基础设施118中实现的服务进行交互的客户端会话的一部分的请求。响应于请求,包括在服务提供商基础结构188中的服务器执行软件并且发布对请求的响应。每个客户端会话包括旨在完成一个或多个相关任务的一组行为。例如,假设服务是视频分配服务,并且客户端设备是膝上型计算机106。客户端会话可以包括,从客户端加载由被包括在服务提供商基础设施118中的服务器生成的图形用户界面(GUI)的时间直到客户端选择视频以用于播放的时间期间,由膝上型计算机106向服务提供商基础设施118发出的请求。
在操作中,边缘服务群集120充当实现服务的服务器的网关。其中,边缘服务群集120接收来自客户端设备的请求,并且将请求路由到执行实现服务的软件的服务器。通常,作为改善客户体验的一部分,服务提供商会定期更改与服务相关联的软件。更具体地,服务提供商推送修改了由服务器实现的软件的软件更新。通常,服务提供商试图在推送软件更新之前,检测由与服务相关联的软件更新引入的任何缺陷。然而,通常大量支持的客户端设备类型和/或大量客户端工作流程使得综合测试不可行。为此,边缘服务群集120被配置为实现金丝雀分析。
作为金丝雀分析的一部分,在接收到请求时,边缘服务群集120将请求路由到生产群集140、基线群集150、或金丝雀群集160中的一个。生产群集140和基线群集150中的每一个包括执行与服务相关联的没有软件更新的软件以发出对请求的响应的服务器。为了说明的目的,与服务相关联的没有软件更新的软件在本文中被称为“基线服务软件”。相反,金丝雀群集160包括执行与服务相关联的软件更新以发出对请求的响应的服务器。为了说明的目的,与服务相关联的软件更新在本文中被称为“服务软件更新”。如本领域技术人员将认识到的,在一些实施例中,除了基线软件之外,与服务相关联的软件更新可以被应用以创建聚合服务软件更新。为了说明的目的,服务软件更新和聚合服务软件更新在本文中都被称为服务软件更新。
当包括在基线群集150和金丝雀群集160中的服务器执行请求时,边缘服务群集120通过一个或多个金丝雀度量来捕捉和分析服务器和/或客户端设备的操作。金丝雀度量被设计为促进检测由服务软件更新引入的不期望影响。例如,金丝雀度量可以反映但不限于,服务器错误的数量和/或类型、由服务器引入的延迟、服务器的负载、CPU 112的动态等等。通常,针对每个金丝雀度量,边缘服务群集120将与基线群集160相关联的值和与金丝雀群集170相关联的值进行比较,以识别指示在金丝雀群集170中实现的服务软件更新可能对客户体验产生负面影响的任何异常。
边缘服务群集120可以以任何技术上可行的方式捕捉和分析金丝雀度量。例如,在一些实施例中,边缘服务群集120可以结合事件流处理系统(未示出)来进行操作以分析响应流和设备日志。更具体地,边缘服务群集120可以“标记”边缘服务群集120路由到基线群集150或金丝雀群集160的每个请求。事件流处理系统可以被配置为基于标记的请求的标识特征(例如,标识发出请求的客户端设备的电子序列号(ESN))来识别标记的请求并且将设备日志和响应流关联。
基于对金丝雀度量的分析,边缘服务群集120向服务提供商提供关于任何识别的异常或错误的金丝雀数据。金丝雀数据可以包括关于异常或错误的任意类型的信息,包括但不限于,客户端设备类型、受影响请求比例等。基于金丝雀数据,服务提供商可以确定是否扩大服务软件更新的推送或者“撤回”服务软件更新。服务提供商可以以任何技术上可行的方式撤回服务软件更新。例如,服务提供商可以重新配置任意数量的服务器来执行基线服务软件(代替服务软件更新)。在一些实施例中,服务提供商可以推送校正识别的异常或错误的新服务软件更新。服务提供商可以以任何技术上可行的方式分析金丝雀数据。例如,在一些实施例中,服务提供商可以配置自动金丝雀分析(ACA)工具来解释金丝雀数据。
然而,如果服务提供商确定金丝雀数据不指示在金丝雀群集160中实现的服务软件更新可能对客户体验产生负面影响,则服务提供商可以将服务软件更新推送到附加服务器,从而增加金丝雀群集160的大小。最终,如果金丝雀数据继续指示在金丝雀群集160中实现的服务软件更新不对客户体验产生负面影响,则服务提供商可以将服务软件更新推送到生产-将被包括在生产群集140中的服务器配置为执行服务软件更新(代替基线服务软件)。
此外,在一些实施例中,边缘服务群集120可以提供使得服务提供商能够修改金丝雀分析的应用编程接口(API)。例如,这样的API可以使得服务提供商能够获取金丝雀数据、开始金丝雀分析、停止金丝雀分析、配置金丝雀分析等等。在其他实施例中,如果边缘服务群集120检测到指示在金丝雀群集160中实现的服务软件更新可能对客户体验产生负面影响的异常,则边缘服务群集120可以自动停止金丝雀分析,从而限制改变的影响。
一般来说,金丝雀度量的质量会影响金丝雀分析的有效性。更具体地,如果软件服务更新中包括的一个或多个缺陷未反映在金丝雀度量中,则服务提供商可能将包括缺陷的软件服务更新推送到生产群集140。随后,这些缺陷可能会对不可接受的数量的客户产生负面影响。传统边缘服务群集降低金丝雀度量的质量的一个限制是由传统边缘服务群集实现的随机路由过程。
传统边缘服务群集通常将请求的相对小的随机采样路由到金丝雀群集160。因为基线软件仍然可用并且由包括在基线群集150和生产群集140中的服务器执行,所以随机采样过程可能掩盖服务软件更新对客户端设备的操作的影响。具体地,金丝雀度量可能不会反映出归因于被包括在金丝雀群集160和基线群集150中的服务器的行为之间的差异的对客户端设备的操作的不利影响。服务器行为对客户端设备的操作的这类未检测到的影响(本文中称为服务器侧行为的客户端侧影响)可以包括数据差异、格式改变、空服务器响应等。
例如,假设金丝雀群集160包括6个金丝雀服务器,基线群集150包括6个基线服务器,并且生产群集140包括988个生产服务器。在客户端会话期间,如果客户端设备发出30个请求,并且传统边缘服务群集路由请求,则其中一个金丝雀服务器处理其中一个请求的可能性大约为3%。此外,假设传统边缘服务群集将第一请求路由到金丝雀服务器。金丝雀服务器执行服务软件更新,但是与服务软件更新相关联的缺陷使得金丝雀服务器发生故障并且发出客户端设备不能解释的对第一请求的响应。作为响应,假设客户端设备通过发出第二请求来重新尝试请求。
如果传统边缘服务群集路由第二请求,则其中一个金丝雀服务器处理第二请求的可能性大约为0.09%。如果基线服务器或生产服务器中的一个服务器处理第二请求并且执行基线软件以生成对第二请求的第二响应,则客户端设备将能够正确地解释该第二响应。因此,金丝雀度量不会指示问题,并且在服务提供商将改变推送到生产群集140之前,缺陷可能不会被检测到。在服务提供商将改变推送到生产群集140之后,如果客户端设备发出第一请求,则生产群集140将执行服务软件更新,并且客户端设备将不能正确地解释响应(不管重新尝试多少次)。因此,客户体验会降低。
为了能够在金丝雀分析期间检测到改变的这类客户端侧影响,边缘服务群集120包括粘性金丝雀路由器130。一般地,粘性金丝雀路由器130在有限量的时间内将从小比例的客户端设备接收到的请求一致地路由到金丝雀群集160或基线群集150以用于金丝雀分析。有限量的时间在本文中被称为生存时间(TTL),并且通常被选择用于捕捉大致完整的客户端会话。TTL在本文中也被称为路由的时间窗口。边缘服务群集120将剩余请求路由到生产群集140。粘性金丝雀路由器130可以以任何技术上可行的方式实现。例如,在一些实施例中,粘性金丝雀路由器130可以被实现为被包括在边缘服务群集120中的一个或多个过滤器。
在操作中,针对持续时间等于TTL的时间段,粘性金丝雀路由器130将来自客户端设备的较小子集的请求路由到金丝雀群集160,并且将来自客户端设备的不同较小子集的请求路由到基线群集150。针对持续时间等于TTL的后续时间段,粘性金丝雀路由器130将来自客户端设备的另一较小子集的请求路由到金丝雀群集160,并且将来自客户端设备的不同较小子集的请求路由到基线群集150。粘性金丝雀路由器130继续该过程,将来自客户端设备的不同子集的请求路由到金丝雀群集160或基线群集,直到完成金丝雀分析。粘性金丝雀路由器130可以被配置为基于任何技术上可行的标准(例如,总时间)来终止金丝雀分析。
仅出于解释的目的,针对给定TTL,粘性金丝雀路由器130针对其将请求路由至金丝雀群集160的客户端设备的较小子集在本文中被称为“金丝雀客户端设备”。类似地,针对给定TTL,粘性金丝雀路由器130针对其将请求路由到基线群集150的客户端设备的较小子集在本文中被称为“基线客户端设备”。剩余客户端设备在本文中被称为“生产客户端设备”。随着时间的推移,被称为金丝雀客户端设备的客户端设备集合、被称为基线客户端设备的客户端设备集合、和被称为生产客户端设备的客户端设备集合可以发生改变。
有利地,通过一致地路由基于相关联的客户端设备的请求,粘性金丝雀路由器130使得边缘服务群集120能够获得金丝雀度量,该金丝雀度量准确且全面地反映针对整个客户端会话的与金丝雀群集160的交互。因此,通过传统金丝雀分析未检测到的改变的客户端侧影响可以通过金丝雀度量来确定。具体地,如果改变产生不期望的客户端侧影响,则金丝雀度量通常反映与金丝雀客户端设备相关联的调用模式(call pattern)不同于与基线客户端设备相关联的调用模式。
具体地,因为粘性金丝雀路由器130在TTL的持续时间内将从金丝雀客户端设备接收到的请求与基线软件隔离,所以基线软件不掩盖服务软件更新对金丝雀客户端设备的影响。例如,假设TTL是九十秒,并且金丝雀客户端设备发出第一请求,粘性金丝雀路由器130将该第一请求路由到金丝雀群集160。包括在金丝雀群集160中的金丝雀服务器执行服务软件更新,并且与服务软件更新相关联的缺陷使得金丝雀服务器发生故障,并且发出客户端设备不能解释的对第一请求的响应。作为响应,假设客户端设备通过发出第二请求来重新尝试请求。粘性金丝雀路由器130将该第二请求路由到金丝雀群集160,并且金丝雀服务器执行服务软件更新。服务软件更新包括缺陷,因此,客户端设备无法解释金丝雀服务器对第二请求的响应。
客户端设备可以在九十秒的TTL内继续重新尝试请求,但是因为粘性金丝雀130在TTL期间不会将从客户端设备接收到的任何请求路由到基线群集150或生产群集140,所以客户端设备将无法成功运行。值得注意的是,由于包括在服务软件更新中的缺陷,由金丝雀群集160接收到的请求的数量可能大大超过由基线群集150接收到的请求的数量。因为数量的增加将反映在金丝雀度量中,所以服务提供商可以通过粘性金丝雀分析来检测包括在服务软件更新中的缺陷,撤回服务软件更新,并且修复缺陷。
此外,因为粘性金丝雀路由器130被配置为在有限的TTL内将仅较小比例的客户端设备路由到金丝雀群集160,所以金丝雀测试对客户体验的影响被最小化。例如,粘性金丝雀路由器130可以被配置为在10秒的TTL内将来自3%的客户端设备的请求路由到金丝雀群集160。在十秒之后,粘性金丝雀路由器130可以在接下来的十秒内将来自不同的3%的客户端设备的请求路由到金丝雀群集160,以此类推,金丝雀测试时间总共为两分钟。因此,包括在服务软件更新中的任何缺陷对每个客户端设备的影响将被限制为10秒。
注意,本文描述的技术是说明性的而不是限制性的,并且可以在不偏离本发明的更广泛的精神和范围的情况下进行改变。具体地,粘性金丝雀路由器130可以实现任意算法,使得粘性金丝雀路由器130能够基于任意技术上可行的标准并且在任意时间长度内将请求一致地路由到金丝雀群集160或基线群集150。例如,在替代实施例中,金丝雀路由器130可以基于设备标识符、客户端标识符、电子序列号(ESN)、会话标识符、或请求的任意其他特征,来选择要路由到金丝雀群集160的请求。在一些实施例中,金丝雀路由器130可以将来自在特定客户端设备上执行的一个会话的请求路由到金丝雀群集160,并且将来自在特定客户端设备上执行的其他会话的请求路由到生产群集140。
此外,在一些实施例中,系统100不包括边缘服务群集120,并且粘性金丝雀路由器130被实现为独立路由应用。在替代实施例中,包括在粘性金丝雀路由器130中的功能可以被包括在任意单元或应用中,并且可以以任意技术可行的方式来实现。在各种实施例中,粘性金丝雀路由器130可以以软件、硬件或它们的任意组合来实现。在一些实施例中,服务软件更新可以用改变实现修改的服务器的功能的任意类型的修改来代替。例如,在一些实施例中,服务软件更新可以用包括任意数量和组合的软件更新、数据更新、脚本更新、模板更新等等的服务更新来代替。
粘性金丝雀路由
图2是根据本发明的各种实施例的图1的粘性金丝雀路由器130的更详细图示。如图所示,粘性金丝雀路由器130包括但不限于,设备散列242、时间散列246、和路由散列248。在操作中,粘性金丝雀路由器130接收一个或多个请求210,并且基于一个或多个路由配置220来处理每个请求210。粘性金丝雀路由器130然后与边缘服务群集120协作以将每个请求路由到金丝雀群集160、基线群集150、或生产群集140中的一个。
如图所示,请求210包括但不限于,请求标识符(ID)212、客户端ID 214、和设备ID216。请求ID 212、客户端ID 214、和设备ID 216可以以任何技术上可行的方式来指定,并且遵守本领域已知的任何约定。例如,设备ID 216可以是包括与设备序列号串联的设备类型的字符串。在替代实施例中,请求210可以包括标识与请求相关联的任意数量的特征的任意数量和类型的信息。例如,在一些实施例中,请求210可以包括电子序列号(ESN)和会话标识符。
粘性金丝雀路由器130通过路由配置220被配置。每个路由配置220包括但不限于,设备类型222、路由226、每百万比率(rate per million,RPM)232、生存时间(TTL)234、和种子236。设备类型222指定设备的类型,例如,
Figure GDA0003199750740000121
(PS3)、或最佳分辨率音频可视集成架构互联网视频链接(BIVL)电视。路由226指定路由配置220是与金丝雀群集160相关联还是与基线群集150相关联。每百万比率(RPM)232指定从设备类型222的客户端设备接收到的、将被路由到由路由226指定的群集的请求210的比例。TTL 234指定时间段的持续时间,在该时间段的持续时间内客户端设备的特定子集基于设备ID 216被路由到由路由226指定的群集。最后,种子236是针对每个路由配置220唯一的值,并且被选择以确保粘性金丝雀路由器130根据路由配置220路由的客户端设备子集在路由配置220之间不同。
值得注意的是,路由配置220使得被包括在粘性金丝雀路由器130中的功能能够基于各种逻辑考虑被微调。在一些实施例中,路由配置220可以基于设备类型222来标准化请求路由260。例如,BIVL电视远不如PS3那么普遍。因此,为了确保充分测试BIVL电视,与BIVL电视相关联的路由配置220可以包括1,000的RPM 232,并且与PS3相关联的路由配置220可以包括10的RPM 232。路由配置220可以以任意技术上可行的方式并且以任意格式被生成。例如,在一些实施例中,事件流处理系统可以创建设备类型222的相对排名分布,并且服务提供商可以基于该排名分布来确定RPM 232。在其他实施例中,TTL 232可以根据路由配置220被微调,以大致捕捉与不同设备类型222相关联的不同客户端流的完整会话。
在操作中,在接收到请求210时,粘性金丝雀路由器130基于设备ID216来确定发出请求210的客户端设备的类型。随后,粘性金丝雀路由器130执行一个或多个比较操作以识别包括是“金丝雀”的路由226和匹配客户端设备的类型的设备类型222的路由配置220。粘性金丝雀路由器130然后基于设备ID 216和识别的“金丝雀”路由配置220来确定是否将请求210路由到金丝雀群集160。
如果粘性金丝雀路由器130确定不将请求210路由到金丝雀群集160,则粘性金丝雀路由器130执行比较操作以识别包括是“基线”的路由226和匹配客户端设备的类型的设备类型222的路由配置220。粘性金丝雀路由器130然后基于设备ID 216和识别的“基线”路由配置220来确定是否将请求210路由到基线群集150。如图所示,包括在与设备类型222“设备A”相关联的“金丝雀”路由配置220(1)中的种子236不同于包括在与设备类型222“设备A”相关联的“基线”路由配置220(2)中的种子236。
如果粘性金丝雀路由器130确定不将请求210路由到金丝雀路由群集260或基线群集250,则边缘服务群集210根据在边缘服务群集210中实现的默认路由对请求210进行路由-通常路由到生产群集140。以这种方式,粘性金丝雀路由器130和边缘服务群集210协作来路由所有请求210。
作为基于特定路由配置220来确定是否路由请求210的一部分,粘性金丝雀路由器130计算设备散列242、时间散列246、和路由散列248。更具体地,基于设备ID 216,粘性金丝雀路由器130计算出一致的设备散列242。在操作中,无论路由配置220如何,粘性金丝雀路由器130都针对从特定客户端设备接收到的所有请求210计算出设备散列值242的相同值。相比之下,粘性金丝雀路由器130针对从不同客户端设备接收到的两个请求210计算出设备散列242的两个不同值。因此,在一些替代实施例中,粘性金丝雀路由器130可以在识别金丝雀路由配置220之前计算设备散列242。粘性金丝雀路由器130可以以针对设备ID 216的每个值确定性地返回一致的值的任意技术上可行的方式来计算设备散列242。例如,在一些实施例中,粘性金丝雀路由器130可以对设备ID 216执行散列操作或循环冗余校验(CRC)操作。
基于TTL 234和种子236,粘性金丝雀路由器130被配置为针对等于TTL 234的持续时间一致地计算时间散列246。例如,如果TTL 234是九十秒并且种子236是“金丝雀种子”,则粘性金丝雀路由器130可以针对九十秒将时间散列246计算为“第一金丝雀时间段”。随后,针对接下来的九十秒,粘性金丝雀路由器130可以将时间散列246计算为“第二金丝雀时间段”等等。因为可以针对每个路由配置220分别定义种子236,所以时间散列246可以基于路由配置220而不同(无论路由配置220的TTL234是否相等)。
粘性金丝雀路由器130可以以任意技术上可行的方式计算时间散列246,其中针对特定种子236,确保时间散列246针对持续时间等于TTL234的时间段是一致的值。例如,如图所示,粘性金丝雀路由器130可以实现以下等式:
1.时间散列246=floor(current_time_since_epoch()/TTL 234)*种子236
TTL 234通过网络时间协议(NTP)进行同步,该NTP确保服务器时间跨服务器、群集、和区域是一致的。因此,等式1跨服务器和服务器群集是有效的。
粘性金丝雀路由器130利用设备散列242和时间散列246来计算路由散列248。通常,针对设备ID 216和路由配置220,粘性金丝雀路由器130被配置为在持续时间等于TTL234的时间间隔期间一致地计算路由散列248的单个唯一值。粘性金丝雀路由器130可以以符合路由散列248的前述特征的任意技术上可行的方式来计算路由散列248。例如,如图所示,粘性金丝雀路由器130可以对设备散列242和时间散列246执行散列操作,例如,散列列表操作。在替代实施例中,粘性金丝雀路由器130可以对设备散列242和时间散列246执行CRC操作。在其他实施例中,粘性金丝雀路由器130可以执行设备散列242和时间散列246之间的乘法操作。
在计算针对请求210的路由散列248之后,粘性金丝雀路由器130基于RPM 232确定是否路由请求210。具体地,粘性金丝雀路由器130对路由散列248和值一百万执行模操作(modulo operation)以确定模数。粘性金丝雀路由器130然后将模数与RPM 232进行比较。如果模数小于RPM232,则粘性金丝雀路由器130基于被包括在路由配置220中的路由226来路由请求210。例如,如果路由226的值是“金丝雀”,则粘性金丝雀路由器130将请求210路由到金丝雀群集160。
值得注意的是,针对由给定TTL 324指定的时间窗口,路由散列240的一致的值确保粘性金丝雀路由器130针对每个客户端设备提供“粘性”路由。更具体地,针对给定TTL324,粘性金丝雀路由器130将从金丝雀客户端设备接收到的请求210路由到金丝雀群集160,并且将从基线客户端设备接收到的请求210路由到基线群集150。边缘服务群集120将从剩余客户端设备(生产客户端设备)接收到的请求210路由到生产群集140。此外,RPM 232控制金丝雀客户端设备和基线客户端设备相对于客户端设备总数的比例。以这种方式,粘性金丝雀路由器130在TTL的持续时间内将从金丝雀客户端设备接收到的请求与基线软件隔离。因此,基线软件不会掩盖服务软件更新对金丝雀客户端设备的影响。
图3是根据本发明的各种实施例的由图2的粘性金丝雀路由器120生成的路由的示例。图3的上下文是从客户端设备305接收请求210,并且基于路由配置220(图3中未示出),粘性金丝雀路由器130将每个请求210路由到金丝雀群集160、基线群集150、或生产群集140中的一个。
仅出于解释的目的,请求210被认为在被包括在路由配置220中的TTL 234内由粘性金丝雀路由器120接收。因此,粘性金丝雀路由器120以一致的方式将从特定客户端设备305接收到的所有请求210路由到金丝雀群集160、基线群集150、或生产群集140。更具体地,如图所示,粘性金丝雀路由器120将从客户端设备305(3)和305(5)接收到的所有请求210路由到金丝雀群集160。相比之下,粘性金丝雀路由器120将从客户端设备305(4)和305(M)接收到的所有请求210路由到基线群集150。粘性金丝雀路由器120将从剩余客户端设备305接收到的所有请求210传递到边缘服务群集120,并且边缘服务群集120将这些请求210路由到生产群集140。
图4是根据本发明的各种实施例的用于在执行与服务相关联的软件更新的金丝雀分析时路由请求的方法步骤的流程图。虽然参考图1-3的系统描述了方法步骤,但是本领域技术人员将理解,被配置为以任意顺序实现方法步骤的任意系统都落入本发明的范围内。
如图所示,方法400在步骤402处开始,其中粘性金丝雀路由器130接收路由配置220。针对每个设备类型222,粘性金丝雀路由器130接收两个路由配置220。与金丝雀群集260相关联的路由配置由值为“金丝雀”的路由226指示。相比之下,与基线群集250相关联的路由配置220由值为“基线”的路由226指示。在步骤404处,粘性金丝雀路由器130接收请求210。请求210包括发出请求210的客户端设备305的设备ID 216。在步骤406处,粘性金丝雀路由器130基于设备ID 216来计算设备散列242。
在步骤408处,粘性金丝雀路由器130选择包括是“金丝雀”的路由226和匹配客户端设备305的类型的设备类型222的路由配置220。粘性金丝雀路由器130可以以任意技术上可行的方式获得客户端设备305的类型。例如,在一些实施例中,客户端设备的类型嵌入在设备ID 216中。在步骤410处,粘性金丝雀路由器130基于当前时间、包括在选择的路由配置220中的TTL 234、和包括在选择的路由配置中的种子236来计算时间散列246。如前所述,粘性金丝雀路由器130可以以任意技术上可行的方式来计算时间散列246,其中针对种子236,确保时间散列246针对持续时间等于TTL 234的时间段是一致的值。
在步骤412处,粘性金丝雀路由器130对设备散列242和时间散列246执行散列操作以计算路由散列248。值得注意的是,针对设备ID 216和选择的路由配置220,粘性金丝雀路由器130被配置为在持续时间等于TTL 234的时间间隔期间一致地计算路由散列248的单个唯一值。在步骤414处,粘性金丝雀路由器130对路由散列248和值一百万执行模操作以确定模数。粘性金丝雀路由器130然后将模数与包括在选择的路由配置220中的RPM 232进行比较。在步骤414处,如果粘性金丝雀路由器130确定模数小于RPM 232,则方法400前进到步骤416。
在步骤416处,粘性金丝雀路由器130根据选择的路由配置220来路由请求。更具体地,如果包括在选择的路由配置220中的路由226的值是“金丝雀”,则粘性金丝雀路由器130将请求路由到金丝雀群集160。相比之下,如果包括在选择的路由配置220中的路由226的值是“基线”,则粘性金丝雀路由器130将请求路由到基线群集150。方法400然后返回到步骤404,其中粘性金丝雀路由器130接收新的请求210。
然而,在步骤414处,如果粘性金丝雀路由器130确定模数不小于RPM 232,则方法400直接进行到步骤418。在步骤418处,粘性金丝雀路由器130确定选择的路由配置220是否是针对客户端设备305的设备类型的基线路由配置220。更确切地,粘性金丝雀路由器130确定路由226的值是否是“基线”。如果粘性金丝雀路由器130确定路由226的值不是“基线”,则方法400前进到步骤420。
在步骤420处,粘性金丝雀路由器130选择包括是“基线”的路由226和匹配客户端设备305的类型的设备类型222的路由配置220。方法400然后返回到步骤410,并且粘性金丝雀路由器130基于选择的基线路由配置220和客户端设备305的设备ID 216来确定是否将请求210路由到基线群集150。
然而,在步骤418处,如果粘性金丝雀路由器130确定路由226的值是“基线”,则方法400直接进行到步骤422。在步骤422处,边缘服务群集120根据在边缘服务群集120中实现的默认路由算法来路由请求210。通常,边缘服务群集120将请求210路由到生产群集140。方法400然后返回到步骤404,其中粘性金丝雀路由器130接收新的请求210。
粘性金丝雀路由器130以这种方式继续,循环执行步骤404-422,直到粘性金丝雀路由器130确定金丝雀分析已经完成。粘性金丝雀路由器130可以以任意技术上可行的方式确定金丝雀分析已经完成。例如,粘性金丝雀路由器130可以被配置为在十分钟之后终止金丝雀分析。
总之,公开的技术可以用于有效地检测由与服务相关联的软件更新引入的缺陷,同时最小化缺陷对客户端的影响。在操作中,针对每个设备类型,粘性金丝雀路由器建立金丝雀比例、基线比例、和持续时间等于预定生存时间的时间段。值得注意的是,生存时间被配置为捕捉客户端与服务交互的大致完整会话。针对特定设备类型的所有客户端设备,在特定时间段内,粘性金丝雀路由器将来自金丝雀比例的客户端设备(本文中称为金丝雀客户端设备)的请求一致地路由到执行与服务相关联的软件更新的金丝雀服务器群集。相比之下,在特定时间段内,粘性金丝雀路由器将来自基线比例的客户端设备(本文中称为基线客户端设备)的请求一致地路由到执行不包括软件更新的与服务相关联的基线软件的基线服务器群集。
值得注意的是,因为粘性金丝雀路由器在TTL的持续时间内将从金丝雀客户端设备接收到的请求与基线软件隔离,所以基线软件不掩盖服务软件更新对金丝雀客户端设备的影响。因此,来自服务器和设备的数据可以被分析以检测指示软件更新可能不利地影响任意数量和类型的客户端设备的异常。
有利地,因为粘性金丝雀路由器可以被配置为针对大致完整会话将请求路由到金丝雀服务器群集,所以相对于传统方法可以更全面地分析现有服务的改变对客户体验和服务器行为两者的影响。具体地,因为粘性金丝雀路由器在TTL的持续时间内阻止金丝雀客户端设备访问基线软件,所以客户端设备的操作可以以可测量的方式受到影响。例如,如果由软件更新引入的缺陷使得金丝雀服务器发生故障并且发出金丝雀客户端设备不能解释的对请求的响应,则金丝雀客户端设备可以在TTL的持续时间内重新尝试失败的请求。因此,由金丝雀服务器接收到的请求的数量可能大大超过由基线服务器接收到的请求的数量,从而指示与服务相关的软件更新包括缺陷。
此外,通过基于客户端设备的类型来选择金丝雀比例和/或生存时间,粘性金丝雀路由器能够基于不同设备类型的相对比例和/或不同期望会话长度来对金丝雀分析进行微调。例如,假设第一设备类型的客户端设备相对普遍,而第二设备类型的客户端设备相对较少。为了确保第二设备类型接收充分的金丝雀测试,与第二设备类型相关联的金丝雀比例可以被设置为比与第一设备类型相关联的金丝雀比例大1000倍的值。
已经出于说明的目的呈现了各种实施例的描述,但是并非旨在穷举或限于所公开的实施例。在不偏离所描述的实施例的范围和精神的情况下,许多修改和改变对于本领域的普通技术人员将是显而易见的。
本文中描述的主题的各方面在以下编号的条款中列出。
1.一种用于在执行金丝雀分析时路由请求的计算机实现的方法,方法包括:基于第一请求的至少一个特征、与第一请求相关联的时间、和路由的时间窗口来计算第一映射;确定第一映射是否指示第一请求将与对通过多个服务器提供的服务的修改相关联;以及基于第一映射是否指示第一请求将与修改相关联,将第一请求路由到实现修改的第一服务器或不实现修改的第二服务器。
2.条款1的计算机实现的方法,其中,第一请求的至少一个特征包括设备标识符,并且计算第一映射包括:对设备标识符执行第一散列操作以生成设备散列;将当前时间除以路由的时间窗口以确定时间段,其中与第一请求相关联的时间位于时间段内;对时间段执行第二散列操作以生成时间散列;以及对设备散列和时间散列执行第三散列操作以生成第一映射。
3.条款1或条款2的计算机实现的方法,其中,与第一请求相关联的时间位于第一时间段内,第一时间段的持续时间等于路由的时间窗口,并且还包括:接收第二请求,其中,第二请求的至少一个特征等于第一请求的至少一个特征;以及基于与第二请求相关联的时间是否位于第一时间段内,将第一请求路由到实现修改的第三服务器或不实现修改的第四服务器。
4.条款1-3中任一项的计算机实现的方法,其中,计算第一映射包括对第一请求的第一特征、与第一请求相关联的时间、和路由的时间窗口执行散列操作和循环冗余校验操作中的至少一个。
5.条款1-4中任一项的计算机实现的方法,其中,散列操作和循环冗余校验中的至少一个基于与修改相关联的唯一常数。
6.条款1-5中任一项的计算机实现的方法,其中,修改包括软件更新。
7.条款1-6中任一项的计算机实现的方法,其中,请求的至少一个特征包括设备标识符、客户端标识符、电子序列号、或会话标识符中的一个。
8.一种包括计算机可读存储介质的程序产品,计算机可读存储介质包括指令,指令在由处理器执行时使得处理器执行以下步骤:基于第一请求的第一特征来确定将与对服务的修改相关联的映射比例;基于第一请求的第二特征、与第一请求相关联的时间、和路由的时间窗口来计算第一映射;执行基于第一映射和映射比例的比较操作,从而确定第一映射是否指示第一请求将与修改相关联;以及基于第一映射是否指示第一请求将与修改相关联,将第一请求路由到实现修改的第一服务器或不实现修改的第二服务器。
9.条款8的程序产品,其中,计算第一映射包括对第二特征、与第一请求相关联的时间、和路由的时间窗口执行散列操作和循环冗余校验操作中的至少一个。
10.条款8或条款9的程序产品,其中,散列操作和循环冗余校验中的至少一个基于与修改相关联的唯一常数。
11.条款8-10中任一项的程序产品,其中,第二特征包括设备标识符,并且计算第一映射包括:对设备标识符执行第一散列操作以生成设备散列;将当前时间除以路由的时间窗口以确定时间段,其中与第一请求相关联的时间位于时间段内;对时间段执行第二散列操作以生成时间散列;以及对设备散列和时间散列执行第三散列操作以生成第一映射。
12.条款8-11中任一项的程序产品,其中,与第一请求相关联的时间位于第一时间段内,第一时间段的持续时间等于路由的时间窗口,并且还包括:接收第二请求,其中,第二请求的第一特征等于第一请求的第一特征;以及基于与第二请求相关联的时间是否位于第一时间段内,将第一请求路由到实现修改的第三服务器或不实现修改的第四服务器。
13.条款8-12中任一项的程序产品,其中,开始时间和结束时间之间的差等于路由的时间窗口,并且计算第一映射包括:在当前时间大于开始时间并且不大于结束时间时,将第一映射设置为等于第一散列值;或在当前时间不大于开始时间或大于结束时间时,将第一映射设置为等于第二散列值。
14.条款8-13中任一项的程序产品,其中,请求的第二特征包括设备标识符、客户端标识符、电子序列号、或会话标识符中的一个。
15.条款8-14中任一项的程序产品,其中,第一请求的第二特征指定第一请求与第一客户端设备相关联,第一客户端设备与第一设备类型相关联,并且确定第一映射是否指示请求将与修改相关联包括,执行基于第一映射和指定将与修改相关联的第一设备类型的客户端设备比例的比率的比较操作。
16.条款8-15中任一项的程序产品,还包括基于第一特征来设置路由的时间窗口。
17.一种被配置为在执行金丝雀分析时路由请求的系统,系统包括:第一服务器,第一服务器实现对服务的修改;多个服务器,多个服务器实现服务并且不实现修改;以及粘性金丝雀路由器,被配置为:基于请求的至少一个特征来计算第一映射;基于与请求相关联的时间、路由的时间窗口、和与修改相关联的唯一常数来计算第二映射;基于第一映射和第二映射来计算第三映射;确定第三映射是否指示请求将与修改相关联;以及基于第三映射是否指示请求将与修改相关联,将请求路由到第一服务器或多个服务器。
18.条款17的系统,其中,粘性金丝雀路由器被配置为通过以下操作来计算第二映射:将当前时间除以路由的时间窗口以确定时间段,其中与请求相关联的时间位于时间段内;以及将时间段和唯一常数相乘以生成第二映射。
19.条款17或条款18的系统,其中,修改包括软件更新和数据更新中的至少一个。
20.条款17-19中任一项的系统,其中,请求的至少一个特征包括设备标识符、客户端标识符、电子序列号、或会话标识符中的一个。
本实施例的各方面可以体现为系统、方法或计算机程序产品。因此,本公开的各方面可以采用完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)、或组合软件和硬件方面的实施例的形式,这些实施例在本文中通常可以被称为“电路”、“模块”或“系统”。此外,本公开的各方面可以采用体现在一个或多个计算机可读介质中的计算机程序产品的形式,该一个或多个计算机可读介质具有体现在其上的计算机可读程序代码。
可以使用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如但不限于,电子的、磁的、光学的、电磁的、红外的、或半导体系统、装置、或设备、或前述内容的任意适当组合。计算机可读存储介质的更具体的示例(非穷举列表)将包括以下内容:具有一个或多个导线的电气连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备、或前述内容的任意适当组合。在本文件的上下文中,计算机可读存储介质可以是能够包括或存储由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合使用的程序的任意有形介质。
上面参考根据本公开的实施例的方法、装置(系统)、和计算机程序产品的流程图和/或框图描述了本公开的各方面。应该理解的是,流程图和/或框图中的每个框以及流程图和/或框图中的框的组合可以通过计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机、或其他可编程数据处理装置的处理器以产生机器,使得通过计算机或其他可编程数据处理装置的处理器执行的指令,能够实现流程图和/或框图的一个或多个框中指定的功能/动作。这些处理器可以是但不限于,通用处理器、专用处理器、特定于应用的处理器、或现场可编程处理器或门阵列。
附图中的流程图和框图示出了根据本公开的各种实施例的系统、方法、和计算机程序产品的可能实现方式的架构、功能、和操作。就此,流程图或框图中的每个框可以表示包括用于实现(一个或多个)指定逻辑功能的一个或多个可执行指令的模块、段或代码部分。还应该注意的是,在一些替代实现方式中,框中提到的功能可以不按照附图中提到的顺序发生。例如,取决于涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者框有时可以以相反的顺序执行。还将注意的是,框图和/或流程图中的每个框以及框图和/或流程图中的框的组合可以由执行指定的功能或动作的基于专用硬件的系统来实现,或由专用硬件和计算机指令的组合来实现。
虽然前述内容涉及本公开的实施例,但是可以在不偏离本公开的基本范围的情况下设计本公开的其他和进一步实施例,并且本公开的范围由下面的权利要求确定。

Claims (16)

1.一种用于在执行金丝雀分析时路由请求的计算机实现的方法,所述方法包括:
基于第一请求的至少一个特征、与所述第一请求相关联的时间、和路由的时间窗口来计算第一映射;
确定所述第一映射是否指示所述第一请求将与对通过多个服务器提供的服务的修改相关联;以及
基于所述第一映射是否指示所述第一请求将与所述修改相关联,将所述第一请求路由到实现所述修改的第一服务器或不实现所述修改的第二服务器,
其中,计算所述第一映射包括对所述第一请求的第一特征、与所述第一请求相关联的时间、和所述路由的时间窗口执行散列操作或循环冗余校验操作中的至少一个,并且,
其中,散列操作或循环冗余校验操作中的所述至少一个基于与所述修改相关联的唯一常数。
2.根据权利要求1所述的计算机实现的方法,其中,所述第一请求的所述至少一个特征包括设备标识符,并且计算所述第一映射包括:
对所述设备标识符执行第一散列操作以生成设备散列;
将当前时间除以所述路由的时间窗口以确定时间段,其中与所述第一请求相关联的时间位于所述时间段内;
对所述时间段执行第二散列操作以生成时间散列;以及
对所述设备散列和所述时间散列执行第三散列操作以生成所述第一映射。
3.根据权利要求1所述的计算机实现的方法,其中,与所述第一请求相关联的时间位于第一时间段内,所述第一时间段的持续时间等于所述路由的时间窗口,并且还包括:
接收第二请求,其中,所述第二请求的至少一个特征等于所述第一请求的所述至少一个特征;以及
基于与所述第二请求相关联的时间是否位于所述第一时间段内,将所述第一请求路由到实现所述修改的第三服务器或不实现所述修改的第四服务器。
4.根据权利要求1所述的计算机实现的方法,其中,所述修改包括软件更新。
5.根据权利要求1所述的计算机实现的方法,其中,请求的至少一个特征包括设备标识符、客户端标识符、电子序列号、或会话标识符中的一个。
6.一种包括指令的计算机可读存储介质,所述指令在由处理器执行时使得所述处理器执行以下步骤:
基于第一请求的第一特征来确定将与对服务的修改相关联的映射比例;
基于所述第一请求的第二特征、与所述第一请求相关联的时间、和路由的时间窗口来计算第一映射;
执行基于所述第一映射和所述映射比例的比较操作,从而确定所述第一映射是否指示所述第一请求将与所述修改相关联;以及
基于所述第一映射是否指示所述第一请求将与所述修改相关联,将所述第一请求路由到实现所述修改的第一服务器或不实现所述修改的第二服务器,
其中,计算所述第一映射包括对所述第二特征、与所述第一请求相关联的时间、和所述路由的时间窗口执行散列操作或循环冗余校验操作中的至少一个,并且
其中,散列操作或循环冗余校验操作中的所述至少一个基于与所述修改相关联的唯一常数。
7.根据权利要求6所述的计算机可读存储介质,其中,所述第二特征包括设备标识符,并且计算所述第一映射包括:
对所述设备标识符执行第一散列操作以生成设备散列;
将当前时间除以所述路由的时间窗口以确定时间段,其中与所述第一请求相关联的时间位于所述时间段内;
对所述时间段执行第二散列操作以生成时间散列;以及
对所述设备散列和所述时间散列执行第三散列操作以生成所述第一映射。
8.根据权利要求6所述的计算机可读存储介质,其中,与所述第一请求相关联的时间位于第一时间段内,所述第一时间段的持续时间等于所述路由的时间窗口,并且还包括:
接收第二请求,其中,所述第二请求的第一特征等于所述第一请求的所述第一特征;以及
基于与所述第二请求相关联的时间是否位于所述第一时间段内,将所述第一请求路由到实现所述修改的第三服务器或不实现所述修改的第四服务器。
9.根据权利要求6所述的计算机可读存储介质,其中,开始时间和结束时间之间的差等于所述路由的时间窗口,并且计算所述第一映射包括:
在当前时间大于所述开始时间并且不大于所述结束时间时,将所述第一映射设置为等于第一散列值;或
在所述当前时间不大于所述开始时间或大于所述结束时间时,将所述第一映射设置为等于第二散列值。
10.根据权利要求6所述的计算机可读存储介质,其中,请求的第二特征包括设备标识符、客户端标识符、电子序列号、或会话标识符中的一个。
11.根据权利要求6所述的计算机可读存储介质,其中,所述第一请求的所述第二特征指定所述第一请求与第一客户端设备相关联,所述第一客户端设备与第一设备类型相关联,并且确定所述第一映射是否指示请求将与所述修改相关联包括,执行基于所述第一映射和比率的比较操作,该比率指定将与所述修改相关联的所述第一设备类型的客户端设备比例。
12.根据权利要求6所述的计算机可读存储介质,还包括基于所述第一特征来设置所述路由的时间窗口。
13.一种被配置为在执行金丝雀分析时路由请求的系统,所述系统包括:
第一服务器,所述第一服务器实现对服务的修改;
多个服务器,所述多个服务器实现所述服务并且不实现所述修改;以及
粘性金丝雀路由器,被配置为:
基于请求的至少一个特征来计算第一映射;
基于与所述请求相关联的时间、路由的时间窗口、和与所述修改相关联的唯一常数来计算第二映射,其中,计算所述第二映射包括对与所述请求相关联的时间、和所述路由的时间窗口执行散列操作或循环冗余校验操作中的至少一个,并且其中,散列操作或循环冗余校验操作中的所述至少一个基于所述唯一常数;
基于所述第一映射和所述第二映射来计算第三映射;
确定所述第三映射是否指示所述请求将与所述修改相关联;以及
基于所述第三映射是否指示所述请求将与所述修改相关联,将所述请求路由到所述第一服务器或所述多个服务器。
14.根据权利要求13所述的系统,其中,所述粘性金丝雀路由器被配置为通过以下操作来计算所述第二映射:
将当前时间除以所述路由的时间窗口以确定时间段,其中与所述请求相关联的时间位于所述时间段内;以及
将所述时间段和所述唯一常数相乘以生成所述第二映射。
15.根据权利要求13所述的系统,其中,所述修改包括软件更新和数据更新中的至少一个。
16.根据权利要求13所述的系统,其中,所述请求的所述至少一个特征包括设备标识符、客户端标识符、电子序列号、或会话标识符中的一个。
CN201680075600.1A 2015-10-23 2016-10-18 使用金丝雀分析确定服务器侧行为的客户端侧影响的技术 Active CN108431782B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/922,101 2015-10-23
US14/922,101 US11616719B2 (en) 2015-10-23 2015-10-23 Techniques for determining client-side effects of server-side behavior using canary analysis
PCT/US2016/057521 WO2017070108A1 (en) 2015-10-23 2016-10-18 Techniques for determining client-side effects of server-side behavior using canary analysis

Publications (2)

Publication Number Publication Date
CN108431782A CN108431782A (zh) 2018-08-21
CN108431782B true CN108431782B (zh) 2021-12-07

Family

ID=57227114

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680075600.1A Active CN108431782B (zh) 2015-10-23 2016-10-18 使用金丝雀分析确定服务器侧行为的客户端侧影响的技术

Country Status (11)

Country Link
US (1) US11616719B2 (zh)
EP (1) EP3365791B1 (zh)
JP (1) JP6613373B2 (zh)
KR (1) KR102099028B1 (zh)
CN (1) CN108431782B (zh)
AU (2) AU2016341190B2 (zh)
CA (1) CA3002807C (zh)
DK (1) DK3365791T3 (zh)
MX (1) MX2018005000A (zh)
SG (1) SG11201803337XA (zh)
WO (1) WO2017070108A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017033079A (ja) * 2015-07-29 2017-02-09 富士通株式会社 ソフトウェア導入支援プログラム、ソフトウェア導入支援装置およびソフトウェア導入支援方法
CN109726099B (zh) * 2018-04-12 2024-03-19 惠商云服(北京)科技有限公司 一种应用灰度发布方法、装置及设备
US10735262B1 (en) * 2018-04-26 2020-08-04 Intuit Inc. System and method for self-orchestrated canary release deployment within an API gateway architecture
US20200057714A1 (en) * 2018-08-17 2020-02-20 Google Llc Testing data changes in production systems
US11237815B2 (en) * 2018-08-23 2022-02-01 Citrix Systems, Inc. Service pool architecture for multitenant services to support canary release
CN110333884A (zh) * 2019-06-05 2019-10-15 钛马信息网络技术有限公司 软件升级方法、分布式系统及装置
JP7300344B2 (ja) * 2019-08-29 2023-06-29 株式会社デンソーテン 管理装置、サーバシステム、および、管理方法
CN112199104B (zh) * 2020-10-10 2024-03-01 卫宁健康科技集团股份有限公司 一种软件升级方法、装置、电子设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102725763A (zh) * 2010-12-08 2012-10-10 松下电器产业株式会社 信息处理装置及信息处理方法
CN103116532A (zh) * 2011-11-16 2013-05-22 通用汽车环球科技运作有限责任公司 从嵌入式软件系统中的堆栈损坏故障中恢复
CN103853662A (zh) * 2014-02-21 2014-06-11 北京神舟航天软件技术有限公司 一种航天软件系统溢出检测和破坏限制机制

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3829125B2 (ja) * 2003-05-16 2006-10-04 株式会社コナミデジタルエンタテインメント ネットワークシステム、ネットワーク制御方法及びプログラム
JP2007287098A (ja) 2006-04-20 2007-11-01 Canon Inc ネットワークメンテンナスシステム
US8332952B2 (en) * 2009-05-22 2012-12-11 Microsoft Corporation Time window based canary solutions for browser security
CA2793537A1 (en) 2010-04-13 2011-10-20 Et International, Inc. Runspace method, system and apparatus
US9367360B2 (en) 2012-01-30 2016-06-14 Microsoft Technology Licensing, Llc Deploying a hardware inventory as a cloud-computing stamp
US8990778B1 (en) 2012-09-14 2015-03-24 Amazon Technologies, Inc. Shadow test replay service
US9225621B2 (en) * 2013-06-25 2015-12-29 Netflix, Inc. Progressive deployment and termination of canary instances for software analysis
US9979644B2 (en) * 2014-07-13 2018-05-22 Cisco Technology, Inc. Linking to content using information centric networking

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102725763A (zh) * 2010-12-08 2012-10-10 松下电器产业株式会社 信息处理装置及信息处理方法
CN103116532A (zh) * 2011-11-16 2013-05-22 通用汽车环球科技运作有限责任公司 从嵌入式软件系统中的堆栈损坏故障中恢复
CN103853662A (zh) * 2014-02-21 2014-06-11 北京神舟航天软件技术有限公司 一种航天软件系统溢出检测和破坏限制机制

Also Published As

Publication number Publication date
BR112018008094A2 (pt) 2019-01-08
AU2019246866A1 (en) 2019-10-31
MX2018005000A (es) 2018-09-21
SG11201803337XA (en) 2018-05-30
US11616719B2 (en) 2023-03-28
DK3365791T3 (da) 2021-06-21
EP3365791A1 (en) 2018-08-29
JP2018535486A (ja) 2018-11-29
AU2016341190B2 (en) 2019-07-11
CA3002807A1 (en) 2017-04-27
KR20180074723A (ko) 2018-07-03
JP6613373B2 (ja) 2019-11-27
WO2017070108A1 (en) 2017-04-27
US20170118110A1 (en) 2017-04-27
KR102099028B1 (ko) 2020-04-08
AU2016341190A1 (en) 2018-05-10
EP3365791B1 (en) 2021-04-07
CN108431782A (zh) 2018-08-21
CA3002807C (en) 2023-02-14

Similar Documents

Publication Publication Date Title
CN108431782B (zh) 使用金丝雀分析确定服务器侧行为的客户端侧影响的技术
US11159450B2 (en) Nonintrusive dynamically-scalable network load generation
US10282246B2 (en) Application error detection method for cloud streaming service, and apparatus and system therefor
US11507488B2 (en) Upstream fault detection
JP2015092354A (ja) 待ち時間を誘発することにより、分散計算サービスの弾力性を評価する方法及びシステム
CN112153410B (zh) 一种流媒体服务高并发测试方法和系统
US10769058B1 (en) Generic serverless performance testing framework
US10983903B1 (en) Enhanced automated protocol for secure application testing
US20160112285A1 (en) Apparatus and method for detecting abnormal connection
CN113014443B (zh) 一种cdn资源是否命中缓存的测试方法及其系统
CN110647458A (zh) 基于分布式测试平台的测试方法、装置及电子设备
JP2024039820A (ja) 異常検出のためのシステム、方法、及びコンピュータ可読媒体
CN116701158A (zh) 一种测试方法和装置
JP2018142206A (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
GR01 Patent grant
GR01 Patent grant