CN115552378A - 程序指令的可预测分发 - Google Patents
程序指令的可预测分发 Download PDFInfo
- Publication number
- CN115552378A CN115552378A CN202080100828.8A CN202080100828A CN115552378A CN 115552378 A CN115552378 A CN 115552378A CN 202080100828 A CN202080100828 A CN 202080100828A CN 115552378 A CN115552378 A CN 115552378A
- Authority
- CN
- China
- Prior art keywords
- tenant
- tenants
- program instructions
- parameter
- computer
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Transfer Between Computers (AREA)
Abstract
当高度参与应用服务的客户未按可预测的时间表收到可靠的功能更新时,可能会出现问题。例如,发布和更新功能可能会给云基础设施带来负担和/或可能无法正常运行。不仅与不一致的客户消息传递和潜在的服务中断相关的不可预测的功能更新,这种不可预测的更新还可能会导致随机的终端用户体验和客户对产品的不满。该方法和系统通过动态地对租户进行排名并且在将更新和发布分发给具有较高功能使用量的租户之前将更新和发布分发给具有较低功能使用量的租户来解决这些问题。租户的排名可以根据当前使用量而动态改变。通过这种方式,排名较高的租户可以在额外的回归测试后接收到对新功能和经更新的功能的访问权限。这种以质量为导向、分阶段发布功能可以实现对计算资源的负载级别管理,并为终端用户提供可预测的功能体验。
Description
背景技术
将云计算环境用于软件产品和服务已成为消费者和企业的流行趋势。企业的终端用户通过使用云计算环境上的应用服务来上传文件、共享文件,以及执行其他操作,例如协作任务。云计算环境涉及一组分布式资源,包括经由安全网络通信地互连的存储器、处理单元和数据存储。分布式计算资源可以物理地和虚拟地集成。服务器的虚拟集成使得能够为云计算环境的租户动态分配资源。这样,服务提供者通过不断评估并在托管租户的服务器之间重新分配资源,而使得租户能够无缝、并动态地扩大或缩小使用量。然而,服务提供者分发新的和经更新的软件功能也依赖于云资源。一些租户可能比其他租户对与功能发布相关联的服务中断更敏感,尤其例如是在租户积极使用这些功能的情况下。例如,服务中断可能涉及新的或经更新的功能变得不可用或对终端用户而言不可预测地执行。不可预测的功能激活或更新可能会导致终端用户体验的随机性。此外,这种不一致的部署可能会导致与客户的通信就可用功能而言不匹配,例如经由客户管理门户。与客户不可靠的通信可能会导致客户不满。因此,当在云计算环境中分发与新的和经更新的功能相关联的代码时,存在最小化服务中断和客户不满意,同时还改善客户体验的需要。
正是关于这些和其他一般考虑,已经做出了本文所公开的方面。此外,虽然可以讨论相对具体的问题,但应当理解,示例不应限于解决在本公开的背景技术或其他地方确定的具体问题。
发明内容
根据本公开,通过基于各个租户的动态排名向租户分发与功能相关联的程序指令来解决上述和其他问题。应用服务的“租户”或客户可以由软件提供者托管在云计算环境中的物理或虚拟服务器上。“功能”可以与应用服务执行的操作相关联,例如上传文件、创建列表、共享文件、认证请求、创建web部件等。传统上,功能推出由两部分组成:代码“推出”和代码“点亮”。也就是说,与功能相关联的代码首先被部署(推出)然后启用(点亮或打开)。此外,对于随机的部署的代码集,分阶段地启用功能或单击停止启用功能。例如,可以为1%、然后5%、然后10%等的租户启用功能。在每个阶段之后,可以评估启用的功能以确保代码稳定性和用户满意度。如本文所用,程序指令(或代码)的术语“分配”或“分发”是指启用或打开已部署到租户的程序指令(或代码)。
应当意识到,代码分发的早期阶段往往在完成功能评估和测试之前不太稳定。在一些方面,本公开不是将程序指令分发给随机选择的租户,而是基于租户的动态排名来分发程序指令,其中在分发给可能对服务中断更敏感(例如,由于高的功能使用量)的排名较高的租户之前,将代码分发给排名较低的租户。因此,本文描述的系统和方法解决了与向云计算环境的租户分发新的和经更新的软件功能相关联的服务中断和客户不满意的问题。
提供本发明内容是为了以简化形式介绍概念的选择,这将在下面的详细描述中进一步描述。本发明内容并非旨在确定所要求保护的主题的关键特征或基本特征,也不旨在用于限制所要求保护的主题的范围。示例的其他方面、特征和/或优点将部分地在以下描述中阐述,并且部分地将从描述中显而易见,或者可以通过本公开的实践来了解。
附图说明
参考以下附图描述了非限制性和非穷举性示例。
图1图示了根据本公开的方面的用于分发程序指令的示例系统的概览。
图2图示了根据本公开的方面的分发程序指令的示例方法。
图3图示了根据本公开的方面的用于分发程序指令的对租户进行排名的示例方法。
图4A-4B图示了根据本公开的方面的对租户进行排名以用于分发程序指令的示例。
图5A-5C图示了根据本公开的方面的用于对租户进行排名的参数的示例。
图6图示了根据示例系统的示例分发系统,根据本公开的方面可以利用该示例系统来实践本公开。
图7是说明可用于实践本公开的方面的计算设备的示例物理组件的框图。
图8A是可以实践本公开的方面的移动计算设备的简化图。
图8B是可以实践本公开的方面的移动计算设备的另一个简化框图。
具体实施方式
下面参考附图更全面地描述本公开的各个方面,附图形成本公开的一部分并且示出了具体的示例方面。然而,本公开的不同方面可以以许多不同的方式实施并且不应被解释为限于本文所阐述的方面;相反,提供这些方面是为了使本公开彻底和完整,并将向本领域技术人员充分传达这些方面的范围。方面可以作为方法、系统或设备来实践。因此,方面可以采取硬件实现方式、完全软件实现方式或结合软件和硬件方面的实现方式的形式。因此,下面的详细描述不应被理解为限制性的。
本公开涉及用于向云计算环境的租户分发程序指令的系统和方法。云计算环境是分布式系统,其中应用功能、存储器、数据存储和取回以及各种处理功能可以通过网络(例如,因特网或安全的内部网)彼此远程地操作。应用服务的“租户”或客户可以由软件提供者托管在分布式系统中的物理或虚拟服务器上。用于访问应用服务的软件程序指令(或代码)然后可以由软件提供者分发(或启用)到托管租户的服务器系统。事实上,基于云的应用服务已被广泛用作企业生产力工具并依赖于企业生产力工具。通过这种方式,与企业客户相关联的企业用户可以从世界任何地方进行在线协作(例如存储/共享文档、访问内部站点、列表/库)。用户可以使用各种设备访问服务,例如手机、笔记本计算机和平板计算机。应用服务一年365天,每天24小时都可以使用,具有用户维护的最短停机时间。
通常,应用服务的客户已经开始期望提供对最新的新功能的访问并且快速分发必要的修复的频繁更新。与程序指令驻留在终端用户的本地计算设备上的独立应用不同,应用服务的功能可以通过将程序指令(例如代码)分发给由云中的服务器托管的租户来不断更新。例如,这些服务器可以共同向数百万用户提供应用服务。然而,当程序指令的分发给云基础设施带来负担和/或分发的代码包含错误时,可能会出现问题。这些错误可能会突然中断对大量用户的应用服务。
在各方面,可以使用代码分发和启用过程将新功能和修复持续分发给客户(例如,租户)。然而,分布式功能一般不会同时为所有租户启用;相反,对于随机的分布的代码集,每个功能都是分阶段启用的,或者点击停止。例如,一个功能可以针对1%、5%、10%等而启用。在每个阶段之后,可以评估启用的功能以确保代码稳定性和用户满意度。在某些方面,对于启用每个功能的早期阶段,可以随机选择目标租户。然而,租户的随机选择可能导致针对租户的不可预测的功能激活,从而导致客户对应用服务的不满。当软件提供者几乎连续地向数百万用户分发新功能和修复时,这个问题会更加复杂。
本公开通过基于包括租户优先级、租户使用量、功能类型等的多种标准对租户进行动态排名来解决上述问题,以防止在分发功能发布和更新期间的服务中断和客户不满意。通常,“功能”可以与操作相关联,例如上传文件、创建列表、共享文件、验证请求、创建web部件等。因此,与功能发布或更新相关联的服务中断可能涉及终端用户执行诸如上传或共享文件等操作的能力的中断。此类中断对积极使用特定功能(例如,操作)的租户的影响大于对该功能不太积极的租户。因此,本方法和系统寻求在向具有较高功能使用量的较高优先级租户分发新的和经更新的功能之前,将新的和经更新的功能分发给具有较低功能使用量的较低优先级租户。此外,根据发布或更新的特定功能,租户的排名可以发生改变。也就是说,虽然一个租户可能针对一项功能(例如,文件共享)排名较低,但该租户可以针对另一项功能(例如,创建Web部件)排名较高。因此,与排名较高的租户相比,排名较低的租户的服务优先级级别较低,并且在使用应用服务的特定功能方面较不积极。与该功能相关的程序指令集首先分发给排名较低的租户。这样,如果有任何服务中断,这些功能使用量较低的排名较低的租户将不会受到显著影响,从而减少客户的不满。在验证新功能或经更新的功能正常运行后,程序指令集将分发给排名较高的租户。这样,在程序指令经过额外的回归测试后,排名较高的租户可以访问新功能和经更新的功能。
图1图示了根据本公开的方面的用于分发程序指令的示例系统的概览。系统100可以表示用于向云计算环境140的一个或多个租户分发程序指令的系统。
开发者102可以开发执行功能的程序指令。功能可以与操作相关联,例如上传文件、创建列表、共享文件、验证请求、创建web部件等。基于执行的操作,功能可以具有不同的功能类型(例如,上传类型、共享类型、web部件类型等)。在各方面,开发者102可以将程序指令提供给程序指令存储装置或代码存储装置120。在发布功能之后,开发者102可以分析遥测数据170,其记录终端用户104如何与功能交互。在一些情况下,开发者102可以响应于分析而更新与功能相关联的程序指令。
终端用户104可以使用计算设备来访问由软件提供者148经由云计算环境140提供的软件产品和服务。例如,每个终端用户104可以与由软件提供者148托管在云计算环境140上的租户相关联(例如,租户A 106a、租户B 106b和租户C 106c)。云计算环境140包含至少一个服务器场(server farm)146。服务器场146可以包含虚拟服务器142a/b和物理服务器144。服务器场146例如向终端用户104提供应用服务、文件共享、工作流服务。在一些方面,可以有数百万终端用户104使用通过云计算环境140可用的各种应用服务。
云计算环境140是相互连接的服务器云。服务器共同向终端用户104提供应用服务。另外或替代地,一组服务器形成服务器场146。服务器场146可以包括一个或多个应用服务。服务器场146可以包括虚拟服务器142a/b和物理服务器144。在一个或多个物理服务器144上分区的虚拟服务器142a/b可以向物理服务器中的一个或多个租户提供专用服务器的功能性(例如,处理和存储)。例如,租户A106A可以使用一组虚拟服务器142a/b中的一个虚拟服务器142a,并且租户B 106B可以使用一组虚拟服务器142a/b中的另一个虚拟服务器142b。
虚拟服务器142a/b和物理服务器144共同形成服务器场146。各个虚拟服务器142a/b和物理服务器144中的存储器可以存储用于由中央处理单元(CPU)执行的程序指令,图中未示出。程序指令的执行使功能(例如,操作)可供终端用户104使用。可以分发和安装新程序指令(例如,新代码)以提供新功能。因此,服务器场146向终端用户104提供对软件提供者148管理的软件产品和服务的访问,例如上传文件、共享文件、认证请求、创建web部件等。在一些方面,与数以千计的租户相关联的数以百万计的终端用户104可以访问通过云计算环境140可用的各种应用服务。
代码识别器110可以识别与用于分发给租户的功能相关联的程序指令集(例如,代码)。在各方面,开发者102注册用于存储在代码存储装置120中的代码。另外,开发者可以识别功能的“类型”。例如,功能可以包括“加载类型”、“共享类型”、“创建类型”、“web部件类型”等。开发者102还可以请求程序指令集的代码分发,其可以对例如新功能或对功能的更新进行编码。此后,开发者102可以请求程序指令集的代码分发(例如,启用或点亮)。代码识别器110可以将代码ID指派给程序指令集。因此,代码识别器110可以基于代码ID来识别程序指令集和功能类型。
在各方面,租户排名器112将排名指派给由软件提供者148托管的租户。排名基于与各种参数相关联的参数值。各种参数可以涉及但不限于租户如何使用应用服务、租户如何使用正在更新或发布的特定功能、以及各个租户对与应用服务相关联的新的或经更新的功能有多敏感。租户数据库122存储这样的租户信息。例如,租户信息包括租户标识符、租户名称、场ID、服务器ID、租户的服务优先级级别以及分配给租户的计算资源。在各方面,租户数据库122中的租户信息可以是相对静态的信息(例如,静态参数),即,可以仅偶尔更新的信息(例如,如果租户和软件提供者148之间的服务合同被更新)。
此外,租户排名器112基于更频繁地更新(或改变)的更多动态参数向租户指派排名。例如,服务器使用量数据库126可以存储指示各个租户的终端用户如何使用应用服务的参数。动态参数的类型可以包括但不限于:(1)每个租户的月活跃用户数,(2)每个租户的用户每秒(或其他周期)做出的请求数,(3)每个租户的高峰使用量时间段,(4)每个租户的CPU使用率,以及(5)每个租户的未完成支持查询的终端用户数。在各方面,系统100随时间推移(例如,每天、每5天、每15天等)动态地更新存储在服务器使用量数据库126中的参数的参数值。这样,由租户排名器112指派给租户的排名可以基于存储在服务器使用量数据库126中的动态参数值的改变而动态改变。
如本文所述,代码识别器10指定用于分发给租户的代码(或程序指令)。在各方面,代码识别器110还可以基于执行代码为实现的功能指定功能类型。在各方面,代码识别器110按照从开发者102接收分发代码的指示的顺序来识别用于分发的代码。在一些方面,开发者102可以将代码存储在代码存储装置120中。代码存储装置120可以通过基于代码的存储顺序对代码进行索引来存储代码。
租户排名器112基于包括但不限于以下的信息向租户指派排名:(1)与存储在代码存储装置120中的程序指令集相关联的功能信息(例如,功能类型);(2)租户数据库122中的租户信息;(3)存储在参数权重表124中的参数的加权值;(4)来自服务器使用量数据库126的各个租户的服务器使用信息。在各方面,租户排名器112识别与程序指令集相关联的功能(和/或功能类型)。该程序指令集可以引入新的功能;可替代地,例如,程序指令集可以通过修复与功能相关联的故障、增强或改变功能、或移除功能来更新现有功能。基于功能(和/或功能类型)和租户的属性,租户排名器112可以将较高的排名指派给更频繁地使用该功能(或功能类型)的那些租户,而将较低的排名指派给更不频繁地使用该功能(或功能类型)的那些租户。将代码分发给排名较低的租户首先保护更积极地使用应用服务的排名较高的租户。代码的分阶段分发提供了用来验证代码中的改变并纠正在早期分发的回归测试中发现的问题的时间。通过这种方式,更多参与这些功能的排名较高的租户会接收到更稳定的代码分发。
在一些方面,租户排名器112可以应用各种标准来对租户进行排名。标准(例如,基于算法)可以涉及通过将一组参数中的每个参数的值和权重归于每个租户来比较租户。然后,基于参数值和权重,租户排名器112可以在从低(或冷)到高(或热)的连续统一体上对每个租户进行排名。在各方面,可以根据参数来测量或指派参数的值。例如,参数可以包括但不限于:每个租户的服务优先级级别、每个租户的月平均用户数、每个租户的CPU使用率等。CPU使用率或CPU使用级别可以是基于功能类型的估计使用级别。在各方面,可以指派每个租户的服务优先级级别的值,将较高值指派给较高优先级的租户(例如,具有数千个用户和特殊服务协议的VIP或“白手套”租户),而将较低值指派给较低优先级的租户(例如,没有特殊服务协议)。可替代地,可以为每个租户测量每月平均用户。可以使用月平均用户的测量值,或者可以使用指派的值(例如,相对于所有租户的总平均月用户或其他租户的平均月用户的值)。可以基于参数可能影响租户对功能分发的敏感性的程度来指派每个参数的权重。这样,在为每个租户指派排名时,较高的权重值可以相比于其他参数而更强调特定参数。在一些情况下,甚至可以将参数归为“负”权重。在这种情况下,如果参数存在(即代码分发修复了租户遇到的功能故障),这将降低租户排名,使得租户更快地接收到代码分发。
基于指派的排名,租户排名器112可以生成排名租户列表128。在一些情况下,可以为每个新的或经更新的功能生成排名租户列表128以确定代码将如何分发给租户。在其他情况下,排名租户列表128可使用一段时间(例如,1天、5天、15天、30天)以确定新的或经更新的功能的代码将如何在该时间段期间分发给租户。应当理解,具有较高优先级服务级别的租户(例如,具有保证一定级别和服务质量的服务协议)可以比具有较低优先级服务级别的租户排名更高。这样,在避免服务中断方面具有高优先级的租户可以在经过额外的评估和测试后、在程序指令集更加稳定后接收到代码分发。类似地,具有较高月平均用户数的租户可以比具有较低月平均用户数的其他租户排名更高,从而接收到更稳定的代码分发。也就是说,具有较低的使用量的租户可能与经历服务中断的机会较少相关。此外,如果功能在代码分发的早期阶段出现故障,具有较低的使用量的租户较不可能提出投诉。类似地,当该功能在后期分发阶段更加稳定时,具有较高的使用量的租户较不可能提出投诉。在任何一种情况下,客户对应用服务的不满都会降低。
代码分发器114使用排名租户列表128并将该程序指令集提供给与选定的一组租户相关联的一个或多个虚拟服务器142a/b和/或物理服务器144。在各方面,代码分发器114可以识别托管特定租户的服务器,以便基于排名租户列表128分发程序指令。对于特定的程序指令集,代码分发器114可以向不同组的租户迭代地分发(例如,启用)相同的程序指令集,不同组的租户可以按照从低到高的排名顺序进行分组。例如,可以存在第一组租户(排名较低)、第二组租户(排名中等)和第三组租户(排名较高)。代码分发器114将该程序指令集分发给第一组租户,然后分发给第二组租户。代码分发器可以确定第一组租户对分发的程序指令集的使用是否成功。如果成功,则代码分发器114可以将该程序指令集分发给第二组租户。如果不成功,则代码分发器114可以推迟程序指令集的分发,直到开发者能够评估和更新程序指令集为止。
在各方面,如果向第一组租户分发程序指令集不成功,则开发者102可以更新分发的程序指令集。例如,在一些情况下,对于第一组租户而言可能还没有正确执行与程序指令集相关联的功能;在其他情况下,第一组租户可能出于其他原因对该功能不满意(例如,基于用户偏好而不是代码故障)。在任一情况下,可以更新程序指令集以提高功能性能或用户对该功能的满意度。在一些情况下,例如,可以基于分析遥测数据来开发对程序指令集的更新。在这种情况下,代码分发器114可以中断程序指令集的分阶段分发,并且可以随后继续将经更新的程序指令集合分阶段分发给第二组租户。此外,可以将经更新的程序指令集分发给第一组租户。
遥测数据接收器116从服务器场146中的服务器接收状态信息。状态信息测量或描述租户的终端用户104如何与应用服务的功能交互。例如,遥测数据170可以包括与终端用户如何访问应用服务相关的日志(例如,点击数据、输入查询和输出结果、成功报告或错误报告等)。在各方面,遥测数据可更新或与存储在服务器使用量数据库126中的动态参数结合使用。另外或替代地,遥测数据170可包括与执行功能的程序指令相关联的错误日志或异常。在各方面,开发者102可以接收遥测数据170以分析程序指令的性能。开发者102可以在进一步分发之前更新程序指令以纠正任何问题。
如应当意识到的,关于图1描述的各种方法、设备、应用、功能等并不旨在将系统100限制为由所描述的特定应用和功能来执行。因此,额外的控制器配置可用于实践本文中的方法和系统和/或可排除所描述的功能和应用而不背离本文所公开的方法和系统。
图2图示了根据本公开的方面的分发程序指令的示例方法。
方法200的操作的一般顺序在图2中示出。通常,方法200以开始操作202开始并且可以在选择操作218之后重复。方法200可以包括更多或更少的步骤和/或可以以与图2中所示的步骤不同的步骤顺序进行。方法200可以作为由计算机系统执行并编码或存储在计算机可读介质上的计算机可执行指令集来执行。此外,方法200可以由与处理器、ASIC、FPGA、SOC或其他硬件设备相关联的门或电路来执行。在下文中,方法200将参照结合图1、图3、图4A-B、图5A-C、图6、图7和图8A-B描述的系统、组件、设备、模块、软件、数据结构、数据功能表示、信令图、方法等来解释。
在识别操作204,可以识别程序指令集(即,或代码)以用于分发。通过将程序指令集分发给租户,可以发布、增强或替换与应用服务相关联的功能以供终端用户访问。在各方面,开发者可以将程序指令集提供给代码存储装置120。代码识别器110可以识别程序指令集并且使租户排名器112对租户进行排名以确定代码分发器114应该向其分发程序指令集的一个或多个租户。在各方面,识别操作204可以进一步识别程序指令集所涉及的功能(或功能类型)。例如,该程序指令集可以涉及应用服务的文件上传功能(或操作)。另一程序指令集可以涉及文件共享功能(或操作)。功能类型可以包括例如但不限于创建新文件、更新文件、共享文件、同时编辑文件、移动文件、重命名文件、发布文件、删除文件和取消发布文件。通过识别功能类型,租户的排名可以基于应用服务的功能,以便更有针对性地分发程序指令集,这防止过早分发给积极使用功能或特定功能类型的租户。
在确定操作206,可以确定应用服务的多个租户中的每个租户的一个或多个参数的参数值。在各方面,一个或多个参数和对应的参数值可以存储在租户数据库122或服务器使用量数据库126中的至少一个中。
在比较操作208,可以至少基于每个租户的一个或多个参数中的每个参数的参数值来比较租户。除了参数值之外,每个参数也可以与权重值相关联。这样,在对租户进行排名时,不同的参数可以具有变化的重要性。例如,较高的加权参数可以比较低的加权参数更影响租户排名。在比较租户时,参数值可以与每个租户的一个或多个参数中的每个参数的权重值组合。参数权重表124可以存储具有对应权重值的一个或多个参数。因此,每个租户可以与表示一个或多个参数的参数值的总和(如由相对应的权重值修改的)的“分数”(或总租户值)相关联。应当意识到,每个租户的分数可以基于要分发的功能(或功能类型)以及对动态参数的参数值的任何改变而动态改变。
在确定操作210,可以确定和指派租户的排名。确定租户排名可以基于对表示租户数据库122、参数权重表124和服务器使用量数据库126中存储的各种参数中的一个或多个的参数值(由权重值修改)的总租户值(或分数)进行比较。例如,租户数据库122可以向各个租户提供各种级别的服务优先级。可以通过确定租户对应用服务中的错误和/或中断的敏感程度来预先确定各个租户的服务优先级级别。另外或替代地,一些租户可以针对软件提供者的特定保证的服务级别而签订合同。租户对应用服务的中断越敏感,该租户的服务优先级级别就越高。这些高优先级的租户排名较高,使得程序指令的分发被延迟,直到在其他租户使用和测试后程序指令集稳定为止。在各方面,在多次分发迭代(例如多于两次)之后,程序指令集可以被认为是稳定的。在各方面,租户的数量随着分发的每次迭代而增加。在其他方面,终端用户的总数随着分发的每次迭代而增加。可以在分发的每次迭代之后更新程序指令集。这样,当使用功能和/或计算资源的总负载仍然很低时,可以在早期迭代中发现和纠正程序指令中的问题。迭代分发以及遥测数据收集确保了早期检测和问题解决。因此,可以在具有更多参与功能使用的高排名租户接收到分发之前解决问题。在一些方面,迭代分发的目标是首先将功能更新给1%的低排名(例如,低使用量)租户(例如,在功能使用量上产生1%的总负载),而不是将功能更新给1%的高排名(例如,高使用量)租户,这些高排名租户可能产生10%的总负载。通过这种方式,可以在对客户体验的影响最小的情况下发现和纠正问题。事实上,由于对新功能或经更新的功能的参与度较低,低排名租户甚至可能在问题得到解决之前都没有注意到问题。在其他方面,一些租户可能会在迭代分发的早期请求新的或经更新的功能。对于这样的租户,将服务优先级的级别设置为低级别,并且程序指令集可以在早期迭代期间分发给这些租户。通过在从低到高的连续统一体上确定和指派租户排名,确定操作210进一步确定从低到高向租户分发代码的顺序。
在各方面,确定操作210在分发程序指令集的迭代期间随着各种参数的值随时间变化而动态地更新为租户确定的排名。分发和测试程序指令集的每次迭代可能是耗时的。例如,回归测试可以持续超过24小时。例如,在进行回归测试时,一些不同的参数、服务优先级级别、旺季状态、CPU使用率、支持提升率和租户的功能特定兴趣可以改变。例如,对某个功能表现出特定兴趣(例如,高使用量)的租户可以不再对该功能感兴趣(例如,低使用量)。这样的租户本应排名较低以在迭代中较早地接收程序指令集的分发,但这些迭代可能已经过去。在这种情况下,可以选择该租户以在下一次迭代中分发(无论基于初始排名该租户是否会被选择用于该迭代)。可以基于经更新的排名来更新租户分组。通过动态更新租户排名,分发的后续迭代可以包括在先前迭代发生时排名下降的任何租户。
在一些方面,在确定操作210处使用的服务优先级级别可以基于优选(VIP)租户的列表或客户的白名单。一些租户可以比其他租户对服务中断更敏感。例如,诸如金融和公共服务等特定行业的租户可以由于对其关键任务业务的影响而对数据的中断和丢失更加敏感。在一些方面,优选租户列表的权重可以比统计使用量信息的值的权重更大。也就是说,防止优选租户的不必要的中断可以是软件提供者的优先事项。
在一些方面,确定操作210可以将具有较大月平均用户值或MAU值的租户排在较高排名。至少在分发的第二次迭代之后,排名较高的租户将接收到程序指令的分发。这样,可以降低对较高排名租户的服务中断的风险。服务器使用量数据库126提供服务器和其他分布式资源的租户的统计使用量信息。这些参数可以包括MAU,它指示在一个月的时间段内租户的终端用户平均数。MAU还可以指示在一个月的时间段内使用特定功能或功能类型(例如,文件共享、文件上传)的租户的终端用户平均数。此外,服务器使用量数据库126可以存储租户每秒发出的请求数(或RPS)。例如,租户的终端用户可以向应用服务发出搜索和下载文件的请求。在一段时间内发出的请求数量指示租户使用应用服务的积极程度。
确定操作210还可以使用RPS的值以将更高的排名指派给具有更高RPS值的租户。这样,具有更积极的使用量的租户可以在代码更稳定时接收到代码的分发。在一些方面,服务器使用量数据库126存储应用服务的每个功能(或功能类型)的RPS。这样,确定操作210可以基于与用于分发的程序指令集相关联的特定功能(或功能类型)向租户指派不同的排名。另外或替代地,MAU和RPS的值可以存储在租户数据库122和/或服务器使用量数据库126中。
确定操作210还可以使用权重值来修改各个参数的参数值。在一些方面,参数权重表124提供各个参数的权重值。某些参数(例如租户服务优先级级别)可以比其他参数(例如CPU使用量)更重要。权重值可以预先确定并手动设置。另外或替代地,权重值可以基于相关性情况自动更新。例如,相关性情况可以是用于分发程序指令集的应用服务、MAU或一天、一个月或一年的时间的函数。保险行业跨所有服务器(虚拟或物理)的所有租户的MAU在偶然情况(例如,多个地点的严重地震、火灾或洪水)后可以显著增加。在这种情况下,作为各个保险公司的终端用户(例如租户)的代理将需要更新文件、索赔记录等。这种使用量的激增可以改变租户的MAU。即便如此,尽管使用量激增,但MAU(平均值)可以保持较低的权重值,并且受影响的租户仍可以在排名中排名较低,这将导致在使用量激增期间在迭代中较早地接收代码分发。在这种情况下,在检测到租户的某些部分(这里是保险部分的租户)的这种情况时,可以自动增加权重值。
在分发操作212处,可以基于由确定操作206指派的排名将程序指令(或代码)集分发给一个或多个租户。例如,分发操作212可以启用一个或多个虚拟服务器142上的程序指令集用于第一组目标租户(例如,租户A106A)。一旦分发了代码,第一组目标租户的终端用户就可以使用与应用服务相关联的新的或经更新的功能。在一些方面,分发操作212可以在开始后续的分发之前暂停。暂停的时间段可以基于分发程序指令集的迭代次数来预先确定。该程序指令集的两次分发之间的暂停可以确定分发的节流(throttle)(即,速率)。
在接收操作214,可以从一个或多个目标租户驻留在其上的一个或多个服务器场接收与终端用户与由该程序指令集编码的功能的交互相关联的遥测数据。遥测数据可以包括执行该程序指令集(或代码)的日志。例如,可以在代码分发器114将程序指令集分发到服务器场146之后收集遥测数据。在一些方面,遥测数据可以被分析以确定在程序指令集被执行时引起问题的程序指令集的特定部分。
在更新操作216,可以基于遥测数据来更新程序指令集。当程序指令在应用服务中执行时,可以针对终端用户的错误的形式(例如,不可预测的性能、缓冲或性能缓慢、无法执行操作等)发现问题。可替代地,代码可以正确执行,但用户可能对该功能不满意(例如,执行操作需要多次点击,完成通知是红色而不是绿色,等等)。在任一情况下,开发者102可以更新程序指令集的部分以解决在遥测数据(或诸如用户投诉的其他数据)中发现的问题。然后可以识别经更新的指令集以用于功能的后续分发。更新操作216是可选的。在各方面,遥测数据可以指示不需要更新程序指令集。因此,对于进一步的分发,程序指令集可以保持不变。
在选择操作218,可以选择用于该程序指令集的下一次分发的第二组目标租户。当遥测数据指示不需要更新程序指令集时,可以选择更广泛的排名较高的租户组作为第二组目标租户来接收分发。在其他方面,遥测数据可指示由于用户对相应功能不满意或在执行该功能时出错而需要更新程序指令集。一旦程序指令集被更新,经更新的程序指令集可以分发给排名最低的第一组目标租户以重新开始回归测试。在较早的迭代完成后,排名较高的租户可以接收到分发。
应当意识到,操作202-218是为了说明本方法和系统的目的而描述的,并且不旨在将本公开限制到特定的步骤序列,例如,在不脱离本公开的情况下,步骤可以以不同的顺序执行,可以执行另外的步骤,并且可以排除公开的步骤。
图3图示了根据本公开的方面向租户指派排名的示例方法。
方法300的操作的一般顺序在图3中示出。通常,方法300以开始操作302开始并以结束操作318结束。方法300可以包括更多或更少的步骤,或者可以以与图3中所示的不同的方式排列步骤的顺序。方法300涉及向租户指派排名的方法。方法300涉及图2中的确定操作210。在一些方面,方法300是重复发生的。在租户使用应用服务的同时,租户的参数值和排名可以不断更新。
方法300可以作为由计算机系统执行并编码或存储在计算机可读介质上的计算机可执行指令集来执行。此外,方法300可以由与处理器、ASIC、FPGA、SOC或其他硬件设备相关联的门或电路来执行。在下文中,方法300将参照结合图1、图2、图4A-B、图5A-C、图6、图7和图8A-B描述的系统、组件、设备、模块、软件、数据结构、数据特征表示、信令图、方法等进行解释。
在选择操作304,可以从租户数据库122中选择租户。在一些方面,选择操作304可以在每次接收到分发用于功能的程序指令的指示时选择租户。在其他方面,选择操作304可以在自上次指派租户的排名以来参数值已经改变时选择租户。租户数据库122可以包括针对每个租户的指示符,该指示符指示自上次指派租户的排名以来是否有任何参数值已经改变。在一些方面,可以基于用于分发的所识别的程序指令集来确定功能或功能类型。
在取回操作306,可以从租户数据库122中取回租户的服务优先级级别。可以通过确定租户对功能故障和/或服务中断的敏感程度来为各个租户预先确定服务优先级级别。租户对应用服务的中断越敏感,指派给租户的服务优先级的级别就越高。更高优先级的租户需要排名更高,使得程序指令的分发被延迟,直到在其他租户使用和测试后程序指令集更有可能稳定为止。
在取回操作308处,可以从租户数据库122中取回租户的月活跃用户数(MAU)。在一些方面,租户的MAU越高,应用服务应该越稳定。因此,程序指令应仅在程序指令基于回归测试的迭代显示出执行稳定性之后才分发给租户。在一些方面,租户的MAU可以与针对其确定每个租户的排名的接收到的功能或功能类型有关。
在取回操作310,可以取回租户正在使用的服务器的每秒请求数(RPS)和CPU使用率。RPS和CPU使用率指示服务器场的负载水平。高RPS和高CPU使用率指示租户重度使用应用服务的计算资源。因此,这些租户可以排名更高,以防止这些租户接收分发,直到分发的多次迭代之后为止,以最小化服务中断。在一些方面,租户的RPS和CPU使用率可以涉及处理针对其确定每个租户的排名的接收到的功能或功能类型。
在取回操作312,可以从租户数据库122中取回指示租户当前是否处于高峰使用量季节(旺季)的值。例如,该值可以是二进制的,“1”表示在高峰使用量季节,“0”表示非高峰使用量季节。在各方面,关于租户使用量的任何季节性的信息可以预先确定并设置在租户数据库122中。例如,会计服务中的租户可以在一月(例如,完成年终财务的典型月份)、四月(例如,完成第一季度财务的典型月份)、七月(例如,完成第二季度财务的典型月份)等等月份期间具有季节性周期。另外或替代地,由于报税准备工作,3月可以是旺季。当分发的时间与旺季值匹配时(例如,“1”),则可以确定租户处于高峰使用量季节。在其他方面,旺季值可以由系统100基于服务器使用量数据库126中的租户的服务器使用量信息自动设置和更新。在一些方面,指示旺季参数的值可以涉及使用针对其确定每个租户的排名的接收到的功能或功能类型的租户。
在取回操作314,可以从租户数据库122中取回关于租户的状态信息。例如,状态信息可以指示租户是否正在经历与用于分发的程序指令集相关的功能的问题。当租户正在经历与代码分发相关联的功能的问题时,租户很可能希望问题尽快得到解决。因此,无论租户排名如何,当要分发的程序指令是响应于租户解决问题的请求时(例如,程序功能集对功能的修复进行编码),纠正问题的程序指令集将在较早的迭代中分发给租户。如果存在此参数,则租户排名可以被覆盖。可替代地,该参数可以与“负”权重值相关联,使得降低租户的排名,以便在较早的迭代中接收代码分发。需要注意的是,无论租户排名如何,当要分发的程序指令是响应于租户解决问题的请求时(例如,程序功能集对功能的修复进行编码),纠正问题的程序指令集将在较早的迭代中分发给租户。RPS和CPU使用率值可以从服务器使用量数据库126中取回。
在确定操作316,可以确定和指派租户的排名。在各方面,通过组合关于各个参数的信息,如上所述,连同应用各个参数的权重值来确定排名。例如,可以对与该功能相关的服务优先级的级别、MAU、RPS、CPU使用率、旺季信息以及关于租户的状态信息的信息进行归一化。例如,各个参数的归一化值可以是0到100之间的某个值。然后,归一化值可以乘以各个参数的权重值,并且例如可以为租户指派分数。可以通过比较和排序租户之间的结果分数来指派租户的排名。
在一些方面,确定操作316使用用于比较和排名租户的各种参数的加权值。用于比较的参数例如可以包括但不限于每个租户的服务优先级级别、每个租户的月平均用户(MAU)、以及每个租户的CPU使用率。用于比较的每个参数可以具有不同的权重值,以在为每个租户指派排名时相比于其他参数而更强调特定参数。基于指派的排名,租户排名器112生成排名租户列表128。例如,具有较高服务优先级级别的租户的排名可以高于具有较低服务优先级级别的租户。这样,在避免服务问题方面具有高优先级的租户可以被排在高位,并且可以在分发的后期迭代中接收程序指令。在分发的后期迭代中,经过更多回归测试后,程序指令集更稳定,更有可能满足客户对功能设计的期望。类似地,具有较高的应用服务的月平均用户(MAU)的租户的排名可以高于MAU较低的租户,以便获得更稳定的代码分发。相比之下,具有较少使用量的租户在代码分发的早期迭代中不太可能遇到服务中断。此外,具有较少使用量的租户不太可能例如在接收到针对应用服务的功能问题的修复之前提出投诉。类似地,具有较少使用量的租户不太可能提出投诉,因为以后的分发迭代很可能包括对任何功能问题的修复。在任何一种情况下,服务中断和客户不满都会减少。
在一些方面,确定操作316对应于图2中的确定操作210。因此,比较操作208进行到确定操作210(或316)以便对每个租户进行排名。确定操作210(或316)进行到图2中的分发操作212。在其他方面,确定操作316返回到选择操作304,其中该方法继续选择、评估并对租户进行排名以基于变化的情况(例如,租户使用量)动态地对租户进行排名。方法300的重复发生的步骤允许动态更新或重新指派排名给租户。
应当意识到,操作302-318是出于说明本方法和系统的目的而描述的,并且不旨在将本公开限制到特定的步骤序列,例如,在不背离本公开的情况下,可以以不同的顺序执行步骤、可以执行附加步骤,并且可以排除公开的步骤。
图4A-4B示出了根据本公开的方面的租户数据库的示例数据结构和用于分发程序指令的排名的租户的示意图。
图4A图示了示例排名租户列表(例如,排名租户列表128)。排名列表400A的每一行对应于一个租户。如所图示的,表格条目基于租户的排名进行排序。排名402列指示每个租户的排名。在各方面,可以有1000个租户,从最高“1”到最低“1000”排名。在一些情况下,租户可以被指派到一个分组。如排名租户列表所示,共有十组租户。排名值1(一)描绘相对应租户的优先级最高,从而在迭代后期接收对程序指令集(即代码)的分发。分组404列指示租户的分组标识。具有相同分组标识符的租户属于同一组。例如,第9分组包括四个租户:例如“A1-Industry”、“HealthTech”、“P School”和“CC College”。第1分组包括租户“Critical-Research”,其拥有最高排名的租户。租户ID 406列指示租户的标识符。租户名称408列指示租户的名称。场ID列410指示分配给租户的服务器场(例如,服务器场146)的标识符。例如,“0100”的场ID分配给其名称为“Y Finance”、租户ID为“40”的租户。机器ID 412列指示分配给租户的服务器或一组服务器的标识符。例如,将服务器ID“0123”分配给租户ID为“40”的租户“Y Finance”。
在各方面,可以基于一个或多个参数值的组合来指派租户的排名,这些参数值包括服务优先级级别、MAU、RPS、CPU使用率、租户是否处于旺季等。参数不限于以上。在一些情况下,每个参数可以带有不同的权重值,权重值表示在确定租户排名方面每个参数相对于其他参数的重要性。
图4B图示了根据本公开的方面的用于对程序指令的分发进行排序的排名的租户的示意图。水平条400B的范围从“冷(COLD)”(即,较低的排名)到“热(HOT)”(即,较高的排名)。水平条内的数字指示一千个租户的排名402的频谱,从左侧的排名第1000位(最低)到右侧的排名第1位(最高)。具有较低排名的租户是“冷”的(例如,由于租户对应用服务的较少使用量)。租户较少的活动转换为受到由程序指令分发导致的可能的错误影响的风险较小。相反,较高排名的租户是“热的”(例如,由于对应用服务的较高的积极性或对由程序指令集的分发引起的错误的敏感性较高)。如分组404旁边的括号所示,排名值为“1”的租户的分组ID为“1”,排名值为“2”和“3”的租户的分组ID为“2”,依此类推。由于程序指令集的分发是从低风险租户到高风险租户发生的,分组ID为“10”(最低排名)的租户首先接收程序指令集的分发。分组ID为“1”(最高排名)的租户在分发的最后一次迭代期间接收分发。
图5A-C图示了根据本公开的方面的根据示例系统的用于分发程序指令集的数据结构的示例。
图5A图示了根据本公开的方面的根据示例系统的租户数据库(例如,租户数据库122)中的示例租户表。租户表500A包括租户ID 502列、租户名称504列、场ID 506列、服务器ID 508列、优先级510列、MAU 512列、RPS 514列和旺季516列。表的每一行对应一个不同的租户。
例如,租户ID 502指示租户的标识符(例如,03)。租户名称504表示租户的名称(例如,“P School”)。场ID 506指示分配给租户的服务器场的标识符(例如,“6500”)。服务器ID508指示分配给租户的服务器的标识符(例如,“6532”)。服务器可以是虚拟服务器或物理服务器,这取决于服务器场的资源分配。优先级510指示租户的服务优先级级别(例如,“1”)。更高的级别可以指示提供给租户的服务的更高优先级。MAU 512指示租户的每月活跃用户数(例如,“110”)。具有较大MAU的租户指示应用服务的更高使用量。RPS 514指示租户的终端用户每秒发出的请求数(例如,“180”)。具有较大RPS的租户指示应用服务的更频繁使用。旺季516指示租户当前是处于终端用户使用量高的旺季(例如,“是”或“1”)还是处于终端用户使用量低的淡季(例如,“否”或“0”)。
图5B图示了根据本公开的方面的根据示例系统的各种参数(例如,参数权重表124)的权重值的示例数据结构。在各方面,加权参数表500B包括参数ID 522列、权重值524列和参数名称526列。参数ID 522指示参数的标识符(例如,“1”)。权重值524指示用于在向租户指派排名时应用参数的重要性的权重值(例如,“1”)。在各方面,具有较高权重值的参数指示该参数在对租户进行排名方面比具有较低权重值的其他参数更有影响力。参数名称526指示参数的名称(例如,“租户服务优先级级别”)。在各方面,加权参数表500B中的参数可以对应于如在图3中的操作306-316中针对取回所描述的参数。
下面描述如何组合参数值和权重值以将排名指派给租户的示例。例如,在图4A中,租户“Y Finance”在排名列表400A中排名最低。如在图5A中的租户表500A中描述的那样,租户“Y Finance”的服务优先级级别为低(“1”),MAU和RPS都为低,分别为8和1。租户不处于旺季。可替代地,例如,租户“247Security”在排名列表400A中排名较高,位于第9位。如在图5A中的租户表500A中描述的那样,租户“247Security”不不处于旺季。但是,它的服务优先级级别最高,为10。服务优先级级别的值在组合这些值以指派排名时具有很大的权重。事实上,租户服务优先级级别的权重值在图5B的权重表500B中是最高的。
图5C图示了根据本公开的方面的根据示例系统的调度程序指令集的分发的示例数据结构。示例调度表500C包括分发ID 530列、代码ID 532列、租户分组ID 534列、开始时间536列和暂停持续时间538列。表的每一行可以对应于程序指令集的分发的发生。
分发ID 530指示分发阶段的标识符(例如,“1”)。代码ID 532指示程序指令集的标识符(例如,“1”)。该程序指令集可以存储在代码存储装置120中。租户分组ID 534指示租户分组的标识符(例如,“1”)。租户分组ID 534可以对应于排名列表400A中分组404的值。开始时间536指示对于代码ID为“1”的程序指令集开始第一分发阶段的时间(例如,“202004100200”(即,2020年4月10日凌晨2点)。暂停持续时间538指示在当前分发的完成时间和下一次分发的开始时间之间发生的暂停或者时间段(例如,120分钟)。在各方面,对暂停持续时间的计数对应于图6中计时器610的使用。在分发后的暂停时段期间,终端用户可以利用分发的程序指令集来使用服务器应用。
因此,示例调度表500C包括具有分发ID1、2和3的程序指令的三个分发的调度。第一分发向租户分组ID=10中的租户启用代码ID=1的程序指令集,开始于2020年4月10日凌晨2点,分发后暂停120分钟。第二分发向租户组ID=9中的租户启用代码ID=1的同一程序指令集,开始于2020年4月11日凌晨3点,暂停持续时间为240分钟。第三分发向租户组ID=10中的租户使用代码ID=2的程序指令集,开始于4月12日凌晨2点,暂停持续时间为480分钟。在各方面,为第三分发调度了480分钟的较长暂停时段,因为代码ID=2对应于经更新的程序指令集,这将解决基于分发ID=2使用代码ID=1发现的问题。
如应当意识到的,关于图5A-C描述的各种方法、设备、应用、功能等并不旨在将数据结构5A-C限制为由所描述的特定应用和功能来执行。因此,额外的控制器配置可用于实践本文中的方法和系统和/或可排除所描述的功能和应用而不背离本文所公开的方法和系统。
图6图示了根据本公开的方面的根据示例过程600分发程序指令集的示意性示例。在一些方面,过程600将代码分发处理到三个不同的租户分组:依次是租户分组10、租户分组9,然后最后是租户分组1。这些分组可以基于功能特定(或功能类型)对租户进行特定排名。过程600示出了代码分发的多次迭代(或阶段)。在各方面,租户分组10对应于图4A中分组ID值为10的租户ID 40。租户组9对应于分组ID值为9的租户。租户分组8对应于图4A中分组ID值为8的租户。在各方面,租户分组是基于与正在更新的应用服务的功能或功能类型相关的租户排名的。例如,租户分组10中的租户最不积极地使用总租户的功能。相比之下,租户分组1中的那些租户在使用应用服务的功能(或功能类型)方面最为活跃。在分发产品指令集的两次迭代之后,租户分组9中的租户可以接收对程序指令集的更新。在一些其他方面,租户的排名和分组可以基于跨应用服务的所有功能的各种参数。
在其第一次迭代期间的代码分发操作602处,可以将程序指令集(即,代码)分发给租户分组。如示意性地示出了三个租户的分组,该程序指令集可以首先分发给租户分组10中的租户。在分发之后,租户分组10中的终端用户可以使用与分发的程序指令相关联的功能。计时器610指示应用使用604持续预定时间段。在应用使用604发生时,可以收集遥测数据。遥测数据可以包括在终端用户和租户的服务器中的应用服务之间作出的请求和响应的日志。日志可以包括关于发生错误的信息。
当计时器610的预定时间测量过去时,可以进行遥测数据分析606。在各方面,可以分析遥测数据以识别分发的程序指令集中的问题。遥测数据的分析结果可以提供给开发者。
在代码更新操作608,开发者可以更新程序指令集。经更新的程序指令集可以解决通过分析遥测数据而识别的问题。在一些方面,代码更新操作608是可选的。
在第二次迭代期间的代码分发操作602,(更新的)程序指令集被分发给租户分组1和租户分组2的组合。这样,代码分发的每次迭代覆盖越来越多的租户。与第一次迭代期间的操作类似,接收经更新的程序指令集的分组1和2中的租户的终端用户使用服务应用(即,应用使用604)。遥测数据被收集和分析(606)。并且,在代码更新操作608,可以更新程序指令集。在第三次迭代期间,租户分组1、2和3的组合接收程序指令的分发。在各方面,程序指令集的分发和使用的每次迭代构成“环”或迭代。因此,如图6所示,存在三个“环”。
在各方面,服务应用继续其操作并且租户的终端用户通过访问云中的服务器继续使用服务应用。因此,租户数据库(例如,租户数据库122)和服务器使用数据库(例如,服务器使用量数据库126)中的统计信息可以被动态更新。因此,租户的排名可以不断更新。用于接收服务应用的新的和/或经更新的功能的租户分组可以动态地改变。分发的迭代累积地增加了租户的覆盖范围。这样,由于租户的排名随着分发迭代的发生而动态变化,因此不会无意中错过租户。
如应当意识到的,关于图6描述的各种方法、设备、应用、功能等并不旨在将过程600限制为由所描述的特定应用和功能来执行。因此,额外的控制器配置可用于实践本文中的方法和系统和/或可排除所描述的特征和应用而不背离本文所公开的方法和系统。
图7是示出了计算设备700的物理组件(例如,硬件)的框图,可以利用该计算设备700来实践本公开的方面。下面描述的计算设备组件可能适用于上述计算设备。在基本配置中,计算设备700可以包括至少一个处理单元702和系统存储器704。根据计算设备的配置和类型,系统存储器704可以包括但不限于易失性存储(例如,随机存取存储器)、非易失性存储器(例如,只读存储器)、闪存或此类存储器的任何组合。系统存储器704可以包括操作系统705和一个或多个程序工具706,该程序工具706适合于执行本文所公开的各个方面。例如,操作系统705可以适合于控制计算设备700的操作。此外,本公开的各方面可以结合图形库、其他操作系统或任何其他应用程序来实施并且不限制到任何特定的应用或系统。该基本配置在图7中由虚线708内的那些组件示出。计算设备700可以具有附加特征或功能性。例如,计算设备700还可以包括附加数据存储设备(可移动和/或不可移动),例如磁盘、光盘或磁带。这种附加存储在图7中由可移动存储设备709和不可移动存储设备710示出。
如上所述,许多程序工具和数据文件可以存储在系统存储器704中。当在处理单元702上执行时,程序工具706(例如,代码分发应用720)可以执行包括但不限于方面的过程,如本文所述。代码分发应用720包括代码识别器730、租户排名器732、代码分发器734和遥测数据接收器736,如关于图1更详细描述的。可以根据本公开的方面使用的其他程序工具可以包括电子邮件和联系人应用、文字处理应用、电子表格应用、数据库应用、幻灯片演示应用、绘图或计算机辅助应用程序等。
此外,本公开的各方面可以在包括分立电子元件的电路、包含逻辑门的封装或集成电子芯片、利用微处理器的电路、或在包含电子元件或微处理器的单个芯片上实施。例如,本公开的各方面可以通过片上系统(SOC)来实践,其中图7中所示的每个或许多组件可以集成到单个集成电路上。这样的SOC器件可以包括一个或多个处理单元、图形单元、通信单元、系统虚拟化单元和各种应用功能,所有这些都作为单个集成电路集成(或“烧录”)到芯片基板上。当通过SOC操作时,本文描述的关于客户端切换协议的能力的功能可以通过与计算设备700的其他组件集成在单个集成电路(芯片)上的应用特定逻辑来操作。本公开的各方面也可以使用能够执行逻辑运算的其他技术来实践,例如与(AND)、或(OR)和非(NOT),包括但不限于机械、光学、流体和量子技术。此外,本公开的各方面可以在通用计算机或任何其他电路或系统中实施。
计算设备700还可以具有一个或多个输入设备712,例如键盘、鼠标、笔、声音或语音输入设备、触摸或滑动输入设备等。输出设备714例如显示器、扬声器、打印机等也可以被包括在内。上述设备是示例并且可以使用其他设备。计算设备700可以包括一个或多个允许与其他计算设备750通信的通信连接716。通信连接716的示例包括但不限于射频(RF)发射器、接收器和/或收发器电路;通用串行总线(USB)、并行和/或串行端口。
如本文所使用的术语计算机可读介质可以包括计算机存储介质(或多个计算机存储介质)。计算机存储介质可以包括以用于存储诸如计算机可读指令、数据结构或程序工具的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。系统存储器704、可移动存储设备709和不可移动存储设备710都是计算机存储介质示例(例如,存储器存储)。计算机存储介质可能包括RAM、ROM、电可擦除只读存储器(EEPROM)、闪存或其他存储器技术、CD-ROM、数字多功能磁盘(DVD)或其他光学存储、磁盒、磁带、磁盘存储或其他磁存储设备,或可用于存储信息且可由计算设备700访问的任何其他制造物品。任何此类计算机存储介质可以是计算设备700的一部分。计算机存储介质不包括载波或其他传播或调制的数据信号。
通信介质可以由计算机可读指令、数据结构、程序工具或调制数据信号中的其他数据来体现,例如载波或其他传输机制,并且包括任何信息传递介质。术语“调制数据信号”可以描述具有以编码信号中的信息的方式设置或改变的一个或多个功能的信号。作为示例而非限制,通信介质可以包括有线介质,例如有线网络或直接有线连接,以及无线介质,例如声学、射频(RF)、红外线和其他无线介质。
图8A和图8B示出了可实践本公开的各方面的计算设备或移动计算设备800,例如移动电话、智能电话、可穿戴计算机(例如智能手表)、平板计算机、膝上型计算机等。在一些方面,客户端(例如,图1中的终端用户104的计算设备)可以是移动计算设备。参考图8A,示出了用于实现这些方面的移动计算设备800的一个方面。在基本配置中,移动计算设备800是具有输入元件和输出元件的手持计算机。移动计算设备800通常包括显示器805和允许用户将信息输入到移动计算设备800中的一个或多个输入按钮810。移动计算设备800的显示器805还可以用作输入设备(例如,触摸屏显示器)。如果包括,可选的侧输入元件815允许进一步的用户输入。侧输入元件815可以是旋转开关、按钮或任何其他类型的手动输入元件。在替代方面,移动计算设备800可以并入更多或更少的输入元件。例如,显示器805在一些方面可能不是触摸屏。在又一个替代方面,移动计算设备800是便携式电话系统,例如蜂窝电话。移动计算设备800还可以包括可选小键盘835。可选小键盘835可以是物理小键盘或在触摸屏显示器上生成的“软”小键盘。在各个方面,输出元件包括用于显示图形用户界面(GUI)的显示器805、视觉指示器820(例如,发光二极管)和/或音频换能器825(例如,扬声器)。在一些方面,移动计算设备800并入用于向用户提供触觉反馈的振动换能器。在又一方面,移动计算设备800结合了用于向外部设备发送信号或从外部设备接收信号的输入和/或输出端口,例如音频输入(例如,麦克风插孔)、音频输出(例如,耳机插孔)和视频输出(例如,端口)。
图8B是说明计算设备、服务器(例如,虚拟服务器142a或物理服务器144)、移动计算设备等的一个方面的架构的框图。也就是说,计算设备800可以结合一个系统(例如,架构)802来实现一些方面。系统802可以实现为能够运行一个或多个应用程序(例如,浏览器、电子邮件、日历、联系人管理器、消息传递客户端、游戏和媒体客户端/播放器)的“智能电话”。在一些方面,系统802被集成为计算设备,例如集成数字助理(PDA)和无线电话。
一个或多个应用程序866可以加载到存储器862中并在操作系统864上运行或与操作系统864相关联地运行。应用程序的示例包括电话拨号程序、电子邮件程序、信息管理(PIM)程序、文字处理程序、电子表格程序、因特网浏览器程序、消息程序等。系统802还包括存储器862内的非易失性存储区域868。非易失性存储区域868可用于存储在系统802断电时不应丢失的持久性信息。应用程序866可以在非易失性存储区域868中使用和存储信息,例如电子邮件或电子邮件应用程序使用的其他消息等。同步应用(未示出)也驻留在系统802上并被编程为与驻留在主机计算机上的相应同步应用交互以保持存储在非易失性存储区域868中的信息与存储在主机计算机上的相应信息同步。应当意识到,其他应用可以被加载到存储器862中并且在本文描述的移动计算设备800上运行。
系统802具有电源870,其可以实现为一个或多个电池。电源870还可以包括外部电源,例如对电池进行补充或充电的AC适配器或供电的对接座。
系统802还可以包括无线电接口层872,其执行发送和接收射频通信的功能。无线电接口层872通过通信运营商或服务提供者促进系统802和“外界”之间的无线连接。往来于无线电接口层872的传输在操作系统864的控制下进行。换句话说,无线电接口层872接收的通信可以通过操作系统864传播到应用程序866,反之亦然。
视觉指示器820可用于提供视觉通知,和/或音频接口874可用于经由音频换能器825产生听觉通知。在所示配置中,视觉指示器820是发光二极管(LED),音频换能器(未显示)是扬声器。这些设备可以直接耦合到电源870,使得当被激活时,它们在通知机制规定的持续时间内保持开启,即使处理器860和其他组件可能关闭以节省电池电量。LED可以被编程为无限期地保持开启,直到用户采取行动来指示设备的通电状态。音频接口874用于向用户提供可听信号并从用户接收可听信号。例如,除了耦合到音频换能器(未示出)之外,音频接口874还可以耦合到麦克风以接收可听输入,例如以促进电话交谈。根据本公开的方面,麦克风还可以用作音频传感器以促进通知的控制,如下文所述。系统802还可以包括视频接口876,其使得车载相机830能够操作以记录静止图像、视频流等。
实现系统802的移动计算设备800可以具有附加的特征或功能。例如,移动计算设备800还可以包括额外的数据存储设备(可移动和/或不可移动),例如磁盘、光盘或磁带。这种附加存储在图8B中由非易失性存储区域868示出。
如上所述,由移动计算设备800生成或捕获并通过系统802存储的数据/信息可以本地存储在移动计算设备800上,或者数据可以存储在任何数量的存储介质上,由设备通过无线电接口层872或通过移动计算设备800和与移动计算设备800相关联的单独计算设备,例如分布式计算网络(例如因特网)中的服务器计算机之间的有线连接来访问。应当意识到,可以通过移动计算设备800经由无线电接口层872或经由分布式计算网络来访问这样的数据/信息。类似地,根据包括电子邮件和协作数据/信息共享系统的众所周知的数据/信息传输和存储手段,这样的数据/信息可以容易地在计算设备之间传输以进行存储和使用。
本申请中提供的一个或多个方面的描述和说明不旨在以任何方式限制或制约所要求保护的本公开的范围。本申请中提供的方面、示例和细节被认为足以传达所有权并使其他人能够做出和使用要求保护的公开的最佳模式。要求保护的公开不应被解释为限于任何方面,例如,或在本申请中提供的细节。不管是组合地还是分开地示出和描述,旨在选择性地包括或省略各种特征(结构和方法)以产生具有特定特征集的实施例。已经提供了本申请的描述和说明,本领域技术人员可以设想落入本申请中体现的一般发明概念的更广泛方面的精神内的变化、修改和替代方面,这些不背离要求保护的公开内容的更广范围。
在一些方面,提供了一种分发程序指令的计算机实现的方法。该方法包括识别识别程序指令集以供分发,其中该程序指令集与功能相关联。该方法还包括针对与云计算环境相关联的多个租户中的每个租户确定至少一个参数的参数值,并基于每个租户的至少一个参数的参数值比较多个租户。基于该比较,该方法包括向多个租户中的每个租户指派排名,其中至少第一租户被指派比至少第二租户更低的排名。基于指派的排名,该方法包括:将程序指令集分发给至少第一租户,以及接收关于至少第一租户执行程序指令集的遥测数据。基于遥测数据,该方法包括更新程序指令集并将更新的程序指令集分发给至少第二租户。
在另一方面,提供了一种系统。该系统包括至少一个处理器和至少一个存储计算机可执行指令的存储器,这些指令在由至少一个处理器执行时使系统执行操作。这些操作包括识别识别程序指令集以供分发,其中该程序指令集与功能相关联。所述操作还包括针对与云计算环境相关联的多个租户中的每个租户确定至少一个参数的参数值,以及将权重值应用于多个租户中每个租户的至少一个参数的参数值。此外,操作包括组合参数值和权重值以形成每个租户的至少一个参数的组合值,以及基于每个租户的至少一个参数的组合值比较多个租户。基于该比较,操作包括向多个租户中的每个租户指派排名,其中至少第一租户被指派比至少第二租户更低的排名。基于指派的排名,操作进一步包括将程序指令集分发给至少第一租户。
在又一方面,提供了一种计算机存储介质。计算机存储介质存储当由处理器执行时使计算机系统执行操作的计算机可执行指令。这些操作包括识别程序指令集以供分发,其中该程序指令集与功能相关联。所述操作还包括针对与云计算环境相关联的多个租户中的每个租户确定至少一个参数的参数值,以及将权重值应用于多个租户中每个租户的至少一个参数的参数值。此外,操作包括组合参数值和权重值以形成每个租户的至少一个参数的组合值,以及基于每个租户的至少一个参数的组合值比较多个租户。基于该比较,操作包括向多个租户中的每个租户指派排名,其中至少第一租户被指派比至少第二租户低的排名。基于指派的排名,操作进一步包括将程序指令集分发给至少第一租户。
任何一个或多个上述方面与任何其他一个或多个方面的组合。如本文所述的一个或多个方面中的任何一个。
Claims (15)
1.一种分发程序指令的计算机实现的方法,所述方法包括:
识别程序指令集以供分发,其中,所述程序指令集与功能相关联;
针对与云计算环境相关联的多个租户中的每个租户,确定至少一个参数的参数值;
基于每个租户的所述至少一个参数的所述参数值,比较所述多个租户;
基于所述比较,向所述多个租户中的每个租户指派排名,其中,至少第一租户被指派比至少第二租户更低的排名;
基于指派的排名,将所述程序指令集分发给至少所述第一租户;
接收关于由至少所述第一租户执行所述程序指令集的遥测数据;
基于所述遥测数据,更新所述程序指令集;以及
将经更新的程序指令集分发给至少所述第二租户。
2.如权利要求1所述的计算机实现的方法,其中,所述至少一个参数包括以下各项中的至少一项:
在时间段内的活跃用户的数量;
在所述时间段内对所述功能的请求的数量;
服务优先级级别;
落入所述时间段内或在所述时间段外的高峰使用量时段;或
报告的问题的数量。
3.如权利要求1所述的计算机实现的方法,进一步包括:
确定所述程序指令集解决了所述第二租户所经历的问题;以及
无论所述第二租户的指派的排名如何,都将所述程序指令集分发给所述第二租户。
4.如权利要求1所述的计算机实现的方法,其中,所述至少一个参数与权重值相关联,并且其中,指派所述排名进一步包括:
将所述参数值和所述权重值组合以形成每个租户的所述至少一个参数的组合值;
基于每个租户的所述至少一个参数的所述组合值,比较所述多个租户;以及
基于所述比较,将所述排名指派给所述多个租户中的每个租户。
5.如权利要求1所述的计算机实现的方法,所述方法进一步包括:
针对所述多个租户中的每个租户,确定由所述程序指令集提供的所述功能的使用级别。
6.如权利要求1所述的计算机实现的方法,所述方法进一步包括:
针对所述多个租户中的每个租户,更新所述至少一个参数的所述参数值;
基于每个租户的所述至少一个参数的经更新的参数值,比较所述多个租户;
基于所述比较,向所述多个租户中的每个租户重新指派排名;以及
基于重新指派的排名,将所述程序指令集分发给至少所述第二租户。
7.如权利要求1所述的计算机实现的方法,其中,所述第一租户的所述至少一个参数的第一参数值小于所述第二租户的所述至少一个参数的第二参数值。
8.一种系统,包括:
至少一个处理器;以及
至少一个存储器,其存储计算机可执行指令,所述计算机可执行指令在由所述至少一个处理器执行时,使所述系统:
识别程序指令集以供分发,其中,所述程序指令集与功能相关联;
针对与云计算环境相关联的多个租户中的每个租户,确定至少一个参数的参数值;
对所述多个租户中的每个租户的所述至少一个参数的所述参数值应用权重值;
将所述参数值和所述权重值组合以形成每个租户的所述至少一个参数的组合值;
基于每个租户的所述至少一个参数的所述组合值,比较所述多个租户;
基于所述比较,将排名指派给所述多个租户中的每个租户,其中,至少第一租户被指派比至少第二租户更低的排名;以及
基于指派的排名,将所述程序指令集分发给至少所述第一租户。
9.如权利要求8所述的系统,所述计算机可执行指令在被执行时进一步使所述系统:
接收关于至少由所述第一租户执行所述程序指令集的遥测数据;
基于所述遥测数据,更新所述程序指令集;以及
将经更新的程序指令集分发给至少所述第二租户。
10.如权利要求8所述的系统,其中,所述至少一个参数包括以下各项中的至少一项:
在时间段内的活跃用户的数量;
在所述时间段内对所述功能的请求的数量;
服务优先级级别;
落入所述时间段内或在所述时间段外的高峰使用量时段;或
报告的问题的数量。
11.如权利要求8所述的系统,所述计算机可执行指令在被执行时进一步使所述系统:
确定所述程序指令集解决了所述第二租户所经历的所述功能的问题;以及
无论所述第二租户的指派的排名如何,都将所述程序指令集分发给所述第二租户。
12.如权利要求8所述的系统,所述计算机可执行指令在被执行时进一步使所述系统:
在分发所述程序指令集之前通知所述第一租户。
13.一种存储计算机可执行指令的计算机存储介质,所述计算机可执行指令在由处理器执行时,使计算机系统:
识别程序指令集以供分发,其中,所述程序指令集与功能相关联;
针对与云计算环境相关联的多个租户中的每个租户,确定至少一个参数的参数值;
对所述多个租户中的每个租户的所述至少一个参数的所述参数值应用权重值;
将所述参数值和所述权重值组合以形成每个租户的所述至少一个参数的组合值;
基于每个租户的所述至少一个参数的所述组合值,比较所述多个租户;
基于所述比较,将排名指派给所述多个租户中的每个租户,其中,至少第一租户被指派比至少第二租户更低的排名;以及
基于指派的排名,将所述程序指令集分发给至少所述第一租户。
14.如权利要求13所述的计算机存储介质,所述计算机可执行指令在被执行时进一步使所述计算机系统:
在第一阶段,将所述程序指令集在内部分发给与软件提供者相关联的用户集;
在第二阶段,基于所述更低的排名,将所述程序指令集分发给至少所述第一租户;以及
在第三阶段,将经更新的程序指令集分发给至少所述第二租户。
15.如权利要求13所述的计算机存储介质,所述计算机可执行指令在被执行时进一步使所述计算机系统:
针对所述多个租户中的每个租户,更新所述至少一个参数的所述参数值;
将经更新的参数值和权重值组合以形成每个租户的所述至少一个参数的经更新的组合值;
基于每个租户的所述至少一个参数的所述经更新的组合值,比较所述多个租户;
基于所述比较,向所述多个租户中的每个租户重新指派排名;以及
基于重新指派的排名,将所述程序指令集分发给至少所述第二租户。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/931,504 US10915379B1 (en) | 2020-05-13 | 2020-05-13 | Predictable distribution of program instructions |
US15/931,504 | 2020-05-13 | ||
PCT/US2020/064146 WO2021230910A1 (en) | 2020-05-13 | 2020-12-10 | Predictable distribution of program instructions |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115552378A true CN115552378A (zh) | 2022-12-30 |
Family
ID=74141870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080100828.8A Pending CN115552378A (zh) | 2020-05-13 | 2020-12-10 | 程序指令的可预测分发 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10915379B1 (zh) |
EP (1) | EP4150883B1 (zh) |
CN (1) | CN115552378A (zh) |
WO (1) | WO2021230910A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11599837B2 (en) | 2020-12-30 | 2023-03-07 | Microsoft Technology Licensing, Llc | Method and system for selection of users in feature rollout |
US20220366340A1 (en) * | 2021-05-13 | 2022-11-17 | Microsoft Technology Licensing, Llc | Smart rollout recommendation system |
US11829743B2 (en) * | 2021-09-29 | 2023-11-28 | Microsoft Technology Licensing, Llc | Method and system for providing customized rollout of features |
US11947561B2 (en) * | 2022-06-21 | 2024-04-02 | International Business Machines Corporation | Heterogeneous schema discovery for unstructured data |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130332587A1 (en) * | 2012-06-11 | 2013-12-12 | International Business Machines Corporation | Method and a system for on-boarding, administration and communication between cloud providers and tenants in a share-all multi-tenancy environment |
US10169090B2 (en) * | 2012-09-12 | 2019-01-01 | Salesforce.Com, Inc. | Facilitating tiered service model-based fair allocation of resources for application servers in multi-tenant environments |
US9043458B2 (en) | 2013-03-19 | 2015-05-26 | Cognizant Technology Solutions India Pvt. Ltd. | Framework for facilitating implementation of multi-tenant SaaS architecture |
US10325102B2 (en) | 2013-05-23 | 2019-06-18 | yTrre, Inc. | Real-time customer experience management systems and methods |
JP5768870B2 (ja) * | 2013-12-25 | 2015-08-26 | 日本電気株式会社 | プログラム配信装置及びプログラム配信方法、プログラム配信システム、並びにコンピュータ・プログラム |
TWI552002B (zh) * | 2014-04-22 | 2016-10-01 | 財團法人工業技術研究院 | 公共雲資源動態配置方法及系統 |
US10331689B2 (en) * | 2015-10-01 | 2019-06-25 | Salesforce.Com, Inc. | Methods and apparatus for presenting search results according to a priority order determined by user activity |
US10768920B2 (en) * | 2016-06-15 | 2020-09-08 | Microsoft Technology Licensing, Llc | Update coordination in a multi-tenant cloud computing environment |
CN110730090B (zh) * | 2019-09-05 | 2023-02-03 | 深圳平安通信科技有限公司 | 云环境中代理端批量更新方法、装置、介质及电子设备 |
-
2020
- 2020-05-13 US US15/931,504 patent/US10915379B1/en active Active
- 2020-12-10 WO PCT/US2020/064146 patent/WO2021230910A1/en unknown
- 2020-12-10 CN CN202080100828.8A patent/CN115552378A/zh active Pending
- 2020-12-10 EP EP20838735.7A patent/EP4150883B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP4150883B1 (en) | 2024-05-15 |
WO2021230910A1 (en) | 2021-11-18 |
US10915379B1 (en) | 2021-02-09 |
EP4150883A1 (en) | 2023-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115552378A (zh) | 程序指令的可预测分发 | |
US10157052B2 (en) | Software change management | |
US10671975B2 (en) | Smart streaming of data between external systems and service providers in an on-demand environment | |
US20190318295A1 (en) | Automated ticket resolution | |
US8793291B2 (en) | System, method and computer program product for deploying an update between environments of a multi-tenant on-demand database system | |
US9218177B2 (en) | Techniques to optimize upgrade tasks | |
US10713101B2 (en) | Client-based control and experience of application programming interfaces in an on-demand environment | |
US10089661B1 (en) | Identifying software products to test | |
US20230076610A1 (en) | Concurrent Edit Detection | |
US20180302494A1 (en) | Analytics driven update notification | |
EP2766821A2 (en) | Systems and methods for prediction-based crawling of social media network | |
US11675758B2 (en) | Early detection and warning for system bottlenecks in an on-demand environment | |
US10897405B2 (en) | Target availability threshold calculation mechanism | |
US10509641B2 (en) | Optimizing feature deployment based on usage pattern | |
US11429577B2 (en) | Performance simulation and cost-benefit analysis for performance factors for web products in database systems | |
US8301605B2 (en) | Managing maintenance tasks for computer programs | |
US11294654B2 (en) | Automated rules for controlled distribution of program instructions | |
US11573880B2 (en) | Performance simulation for selected platforms for web products in database systems | |
US11281563B2 (en) | Actionable insights for performance of web products in database systems | |
JP2012014447A (ja) | ユーザにアプリケーションを推薦するサーバ及び方法 | |
EP4046024A1 (en) | Generating and attributing unique identifiers representing performance issues within a call stack | |
JP7305641B2 (ja) | リモートデバイスからのアプリケーションアクティビティデータをトラッキングし、リモートデバイスのための修正動作データ構造を生成するための方法およびシステム | |
CN111309712A (zh) | 基于数据仓库的优化任务调度方法、装置、设备及介质 | |
US10749772B1 (en) | Data reconciliation in a distributed data storage network | |
US11494286B2 (en) | Dynamic adjustment of web product-based performance factors in database systems |
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 |