CN104704773A - 云存储环境中基于一致性的服务级协定 - Google Patents

云存储环境中基于一致性的服务级协定 Download PDF

Info

Publication number
CN104704773A
CN104704773A CN201380052180.1A CN201380052180A CN104704773A CN 104704773 A CN104704773 A CN 104704773A CN 201380052180 A CN201380052180 A CN 201380052180A CN 104704773 A CN104704773 A CN 104704773A
Authority
CN
China
Prior art keywords
service level
level agreement
node
transactions requests
consistency
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.)
Granted
Application number
CN201380052180.1A
Other languages
English (en)
Other versions
CN104704773B (zh
Inventor
H·阿布-里布德
M·K·阿圭莱拉
M·巴拉克里什南
R·R·克特拉
V·帕拉巴卡兰
D·B·特瑞
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN104704773A publication Critical patent/CN104704773A/zh
Application granted granted Critical
Publication of CN104704773B publication Critical patent/CN104704773B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/508Network service management, e.g. ensuring proper service fulfilment according to agreements based on type of value added network service under agreement
    • H04L41/5096Network service management, e.g. ensuring proper service fulfilment according to agreements based on type of value added network service under agreement wherein the managed service relates to distributed or central networked applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/875Monitoring of systems including the internet
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • 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/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

提供允许应用向它们的数据事务指派多个服务级协定的应用编程接口。该服务级协定包括等待时间界限和一致性保证。应用可向服务级协定中的每一个服务级协定指派效用值。监视器组件针对等待时间和一致性监视云存储系统中的各副本节点,并且在从应用收到事务时,监视器确定哪些副本节点可在满足服务级协定中的任何服务级协定的情况下履行该事务。在可以满足多个服务级协定的情况下,选择可以根据具有最高效用的服务级协定来履行事务的副本节点。可以基于所满足的服务级协定的效用针对事务向该应用收费。

Description

云存储环境中基于一致性的服务级协定
背景
云存储服务(诸如流行的“NoSQL”类数据存储)已经被设计成满足从社交网络到电子商务的各种应用的需求。此类存储服务将应用数据复制在多个机器上以使其高度可用并且改善性能。许多提供松弛形式的一致性、最终一致性,以便实现弹性可扩展性和良好性能,而一些争取强一致性以维持单副本可串行性的语义。为了在即使全面的数据中心故障期间也允许本地访问和确保数据生存性,许多存储系统提供将数据复制到世界的不同区域的选项,称作“地域复制”。
随着数据在世界级范围上被复制,在性能和一致性之间固有的折衷由于各数据中心间的高通信等待时间而被扩大。具有不同一致性的读之间的性能差异可能是巨大的。强一致性读一般涉及多个副本或被主站点服务,而最终一致性读可由最近的副本来答复。即使在数据中心内,也已经测出强一致性读的等待时间是具有较弱会话保证的读的八倍。通过地域复制,性能差异可能超过两个数量级。
概述
提供应用编程接口,该应用编程接口允许应用指派多个服务级协定给它们的事务,这些事务对所复制的云存储服务中的数据进行读和写。该服务级协定包括等待时间界限和一致性保证。应用可进一步根据服务级协定的合需性向服务级协定中的每一个服务级协定指派效用值。监视器组件针对等待时间和一致性来监视云存储服务中的各副本节点,并且在从应用收到事务时,监视器确定副本节点中的哪一些可能在满足服务级协定中的服务级协定中的任一个的情况下来履行该事务。在可以满足多个服务级协定的情况,选择可以根据具有最大预期效用的服务级协定来履行该事务的副本节点。可以基于所满足的服务级协定的效用针对事务向该应用收费。
在一个实现中,服务级协定由计算设备选择。事务请求由计算设备生成。所生成的事务请求和所选择的服务级协定由计算设备提供。与该事务请求相关联的结果以及遵从了服务级协定的指示由计算设备接收。
在一个实现中,事务请求在计算设备处被收到。事务请求包括多个服务级协定。有关多个节点的信息在计算设备处被收到。基于服务级协定和有关节点的信息,由计算设备确定是否能在一个节点处根据服务级协定中的任一个来履行该事务请求。如果确定能在一个节点处根据服务级协定中的任一个来履行该事务请求,则在该节点处根据服务级协定中的一个或多个来履行该事务请求,并且由计算设备提供在该节点处根据服务级协定中的一个或多个履行了该事务的指示。
提供本概述以便以简化的形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。
附图说明
当结合附图进行阅读时,可以更好地理解以上概述以及以下对说明性实施例的详细说明。出于说明各实施例的目的,在附图中示出各实施例的示例性构造;然而,各实施例不局限于所公开的具体方法和手段。在附图中:
图1是用于在云存储服务中启用服务级协定的示例环境的图示;
图2是示例服务级协定引擎和示例节点的图示;
图3是用于提供事务请求和多个服务级协定给云存储服务的方法的实现的操作流程;
图4是用于根据多个服务级协定履行事务请求的方法的实现的操作流程;以及
图5是根据所提供的系统的一种实现的计算系统环境的框图。
详细描述
图1是用于在云存储服务中启用服务级协定的示例环境100的图示。环境100可以包括通过网络120互相通信的客户端设备110和云存储服务150。网络120可以是包括公共交换电话网(PSTN)、蜂窝电话网和分组交换网(例如,因特网)的各种网络类型。
在一些实现中,客户端设备110可以包括台式个人计算机、工作站、膝上计算机、PDA、智能电话、蜂窝电话或任意启用WAP的设备或能够直接或间接与网络120对接的任意其它计算设备。例如,可使用诸如图5中所示的计算设备500的通用计算设备来实现客户端设备110。尽管仅示出一台客户端设备110,但这仅用于说明目的,对于可被支持的客户端设备110的数量不存在限制。
云存储服务150可以提供分布式数据存储和数据处理服务给客户端设备110。可以使用各种云计算系统(诸如微软的WINDOWS AZURE)来实现云存储服务150。可以使用其他云服务。
云存储服务150可以包括多个计算节点180(即,节点180a-n)。节点180可以提供计算和数据存储服务给客户端设备110。具体而言,节点180可以为客户端设备110存储一个或多个数据对象,并且可为客户端设备110从所存储的数据对象中检索数据值。可以使用一个或多个通用计算设备(诸如计算系统500)来实现节点180中的每个节点。尽管仅示出四个节点180,但这仅出于说明目的,对于可支持的节点180的最小数目或最大数目不存在限制。
云存储服务150可以提供计算和数据服务给在客户端设备110上执行的一个或多个应用115。可以使用云存储服务150的应用115的示例可以包括在线购物应用、电子邮件应用、社交网络应用和游戏应用。可以支持其它类型的应用115。
在一些实现中,云存储服务150可以接收和履行来自客户端设备110的应用115的一个或多个事务请求117。事务请求117可以包括put(发送)请求和get(获取)请求。put请求可以是在数据对象处存储数据值的请求,而get请求可以是从数据对象检索所存储的数据值的请求。get请求可以包括键118,该键118在云存储服务150中唯一地标识存储所请求的数据值的数据对象。可以从所标识的数据对象读该数据值。数据对象可以被存储在云服务存储150中的一个或多个节点180处。一系列事务请求117可以被编组在一起成为本文中所称的会话。
put请求可以具有数据值和键118,该键118标识数据值可被写到的数据对象。数据值可被写到在节点180中的一个或多个处的所标识的数据对象。在put请求是存储新数据值的请求的情况,可以在节点180中的一个或多个上创建数据对象,并且可以在该新数据对象处存储该数据值。此外,键118可以被指派给该数据对象并且被提供给应用115和/或客户端设备110。
在一些实现中,节点180可以被分成所谓的主节点和副节点。每个主节点可以与由云存储服务150维护的诸数据对象的子集相关联。针对与主节点相关联的数据对象的put请求被路由到主节点并且被主节点履行。主节点可以周期性地将对数据对象作出的更新推送到副节点中的一个或多个。每个副节点可以类似地与由云存储服务150维护的诸数据对象的子集相关联。副节点可以向其他副节点推送从主节点收到的更新。从主节点履行的get事务可以被保证包括最新近更新的数据值,而从副节点履行的get事务可能不具有最新近更新的数据值。
可以理解,每个节点180可以位于不同的地理位置,并且因此可以相对于客户端设备110具有不同的等待时间。例如,与客户端设备110位于相同城市的节点180能够比与客户端设备110位于不同城市的节点180更快地履行get事务请求117。此外,由于节点复制数据的方式及与每一节点180相关联的各种地理位置,具有数据对象的最新数据值的节点(即,最一致)可能不是具有最低总等待时间的节点。
不同的应用115可能对于数据值的等待时间和一致性具有不同的要求或需求。例如,视频游戏应用可能对数据值事务的低等待时间的重视程度高于一致性,以减少滞后。类似地,银行应用可能对一致性的重视程度高于低等待时间。
因此,为了帮助云存储服务150和/或应用115选择最合适的节点180来处理事务请求117,客户端设备110可以进一步包括服务级协定引擎116。服务级协定引擎116可以允许应用115使用应用编程接口为每个事务请求117(或会话)指定一个或多个服务级协定119。服务级协定119可以指定一个或多个性能保证和/或一致性保证。
更具体而言,服务级协定119可以指定等待时间界限和一致性保证。等待时间界限可以是最小可接受等待时间(例如,100ms、200ms、300ms,等等),并且一致性保证可以是最小可接受一致性(例如,最新近数据值、不落后于200ms、不落后于500ms,等等)。
服务级协定引擎116可以使用键118和关于节点180中每个节点的信息来确定(如果有的话)节点180中的哪些节点可以根据与事务请求117相关联的服务级协定119来履行事务请求117。关于每个节点180的信息可以包括:与每个节点180相对于客户端设备110的往返通信等待时间有关的信息,以及与每个节点180所存储或维护的数据值的一致性有关的信息(例如,由节点180维护的数据对象的最近更新时间或版本号)。
如果可以根据服务级协定119履行事务请求117,则服务级协定引擎116可以履行事务请求117。否则,服务级协定引擎116可以返回错误或服务级协定引擎116不能使用指定的服务级协定119来履行事务请求117的指示。
服务级协定119的等待时间界限可以指定以毫秒计的事务请求117的等待时间。在实现中,服务级协定119的一致性保证可以取以下值之一:强;最终;读我所写(read-my-writes);单调;以及有界。强可以是最高一致性保证并且可以使用对数据对象的最新近更新来履行。最终小于强,并且可以用对数据对象的任何更新数据值来履行。读我所写可以使用在当前会话中对数据对象的最新近更新的值来履行,或者在数据对象在当前会话中没被更新的情况使用任何数据值来履行。单调可以使用来自针对当前会话的先前的get事务请求117的相同或稍后的数据值来履行,或者在尚无针对当前会话的get事务请求117被履行的情况使用任何数据值来履行。有界可以包括指定的时间值t,并且可以使用被更新不超过t秒的数据值来履行。
在一些实现中,应用115可以指定用于事务请求117或会话的多个服务级协定。在指定多个服务级协定119的情况,诸服务级协定可根据服务级协定119的合需性被排名或排序。服务级协定119可以被应用115排名。例如,第一服务级协定可以是应用115最想执行的服务级协定,第二服务级协定是在服务级协定引擎116发现第一服务级协定不能或不大可能被执行的情况下可以使用的可接受性较少的服务级协定。一些应用115可以指定“兜底(catch-all)”或不受限服务级协定119,这样的服务级协定119允许所有等待时间和一致性保证以防止事务请求117因服务级协定引擎116不能执行任何更高排名的服务级协定119而引起的失败。
在一些实现中,代替给服务级协定119排名,应用115可以将效用与服务级协定119中的每一个服务级协定相关联。服务级协定引擎116可以随后尝试根据具有最大效用的服务级协定119来履行事务请求117。
效用可以进一步被用来针对所履行的事务请求117向应用115开账单或收费。当为客户端设备110履行了事务请求117时,可以向应用115收取一笔与云存储服务150所满足的服务级协定119的效用成正比或基于该服务级协定119的效用的钱或费用。这样的协定可以允许应用115为其所需的等待时间和一致性水平付费,鼓励应用设计者考虑高等待时间和/或低一致性服务级协定119是否适合于它们的应用115,以及鼓励云存储服务150根据具有最大效用的服务级协定119来履行事务请求117。
图2是示例服务级协定引擎116和示例节点180的图示。如所示的,服务级协定引擎116包括监视器230、等待时间数据240,和一致性数据250。节点180包括复制代理210、提交协调器220,以及表270。服务级协定引擎116和/或节点180可以支持更多或更少的组件。
节点180的提交协调器220可以向经提交的(即,经履行的)事务请求117指派时间戳。具体而言,提交协调器220可以向每个所提交的put事务请求117指派时间戳。在一些实现中,提交协调器220可以是主节点(而非副节点)的一部分。提交协调器220可以进一步在事务117被提交或被写入数据对象之前确认事务117。在存在多个节点的情况,提交协调器220可以确保所有经提交的事务请求117被立即复制到其他主节点。
复制代理210可以控制各节点180间数据值和数据对象的传播。具体而言,复制代理210可以确保与由主节点作出的put事务请求117相关联的数据对象更新最终也被副节点中的每一个副节点应用。每一个副节点可按照与每个事务请求117相关联的时间戳的次序来应用更新。可使用在各节点180间复制数据的领域中已知的任何系统、方法或技术。可以使用的复制技术的一个示例是gossip协议。
复制代理210可以在表270中存储数据对象。表270可以使用各种数据结构来实现,并且可以包括对应于每个数据对象的键118和与数据对象相关联的最新近数据值。每个数据对象还可以具有相关联的时间戳,该时间戳是与节点180所知晓的针对那个数据对象的最新近的事务请求117相关联的时间戳(即,由提交协调器220指派的时间戳)。
在一些实现中,复制代理210可以维持一个或多个数据对象的先前版本。每个版本可以与不同的时间戳相关联。复制代理210所知晓的最高时间戳被称作节点180的高时间戳。
复制代理210可以周期性地从表270修剪或删除旧版本的数据对象。由复制代理210所执行的最后修剪的数据被称作节点180的低时间戳。可使用任何系统、方法或技术用于从表270修剪数据对象。
对于作为主节点的节点180,如果事务请求117尚未被提交协调器220提交达一时间段,复制代理210可以周期性地向其他节点180中的一个或多个节点传送空事务连同当前时间。接收节点180处的复制代理210随后可以将它们的高时间戳更新成与该空事务相关联的当前时间。如下所描述的,通过更新节点180的高时间戳,服务级协定引擎116可以学习哪些节点180在它们的表270中包括最新数据值。
服务级协定引擎116的监视器230可以从每个节点180收集信息,并且可以将所收集的信息存储为等待时间数据240和一致性数据250。所收集的关于节点180的信息可以被服务级协定引擎116用来确定是否可以在一个或多个节点180处根据一个或多个服务级协定119来履行事务请求117。
在一些实现中,监视器230可以通过周期性地联系每个节点180来确定信息。例如,监视器230可以周期性地查验(ping)每个节点180。替换地,每个节点180可以周期性地提供信息给监视器230。信息可以被监视器230用来确定等待时间数据240和一致性数据250。在一些实现中,信息还可以包括与每个节点180的表270中所存储的数据对象相对应的键118的范围。
对于一致性数据250,由节点180提供的信息可以包括节点180的高时间戳,以及如由复制代理210所确定的节点180的低时间戳。高时间戳和低时间戳可以被存储作为一致性数据250。由高时间戳和低时间戳定义的时间窗可以被服务级协定引擎116用来确定特定节点180的表270中的数据对象的一致性。
对于等待时间数据240,由节点180提供的信息可以包括客户端设备110和节点180之间的所测量的等待时间。例如,节点180可以周期性地测量其与客户端设备110之间的等待时间。替换地或附加地,监视器230可以通过向节点180请求一致性数据250来确定客户端设备110和节点180之间的等待时间,并且基于在收到所请求的数据之前流逝的时间量(即,往返时间)可以确定客户端设备110和节点180之间的等待时间。由于所观察的等待时间可能被各种因素(包括临时网络拥塞或节点180的高处理负载)歪曲,在一些实现中,节点180的等待时间数据240可以是一些数目个先前观察到的等待时间的平均等待时间。
服务级协定引擎116可以使用等待时间数据240和一致性数据250来确定(如果有的话)节点180中的哪些能根据服务级协定119来履行事务请求117。如上所述,服务级协定119可以包括等待时间界限和一致性保证。对于等待时间界限,服务级协定引擎116可以基于等待时间数据240来确定节点180是否能在等待时间界限内履行事务请求117。如果等待时间界限大于节点180的等待时间数据240,服务级协定引擎116可以基于等待时间数据240来确定节点180能在服务级协定119的等待时间界限内履行事务请求117。
在一些实现中,服务级协定引擎116可以基于等待时间数据240来确定节点180能在等待时间界限内履行事务请求117(或与会话相关联的所有事务请求117)的概率。例如,如上所述,等待时间数据240可以具有在一时间段内针对节点180的多个观察到的等待时间。服务级协定引擎116可以随后通过把等待时间界限与每个观察到的等待时间作比较来确定概率。在一些实现中,概率计算可以被加权以偏好更新近观察到的等待时间。
对于一致性保证,服务级协定引擎116可以基于一致性数据250来确定节点180是否能根据一致性保证来履行事务请求117(或与会话相关联的所有事务请求117)。服务级协定引擎116确定是否满足一致性保证的方式可以取决于由应用115所选择的一致性保证。
在一些实现中,为了确定是否满足一致性保证,服务级协定引擎116可以确定事务请求117的一个或多个可接受的读时间戳。可以基于为事务请求117选择的一致性保证、在与当前会话相关联的任何先前的事务请求中被读和写的数据对象,以及与事务请求117相关联的(诸)键118来确定事务请求117的读时间戳。服务级协定引擎116可以基于可接受的读时间戳和与节点180相关联的高时间戳和低时间戳之间的时间戳范围来确定节点180根据所选择的一致性保证履行事务请求的概率。
对于要满足的强一致性保证,读时间戳必须至少与put操作的提交时间戳一样大,该put操作在事务请求117中使用与get操作相关联的键118中的任何键。这保证每个get操作访问在与请求117相关联的事务的开始处存在的最新版本的数据对象。因此,可接受的时间戳范围的低端是针对与事务请求117相关联的键118在主节点180处存储的所有版本的最大时间戳。
对于读我所写一致性保证,客户端设备110的会话状态可以记录在执行put操作的会话中任何先前的事务的提交时间戳。读时间戳范围的低端可以是与正在当前事务中被访问的键118相关联的任何先前提交的put操作的最大时间戳。
对于单调读一致性保证,客户端设备110的会话状态可以记录具有先前get操作返回的值的所有数据对象的时间戳和键118。该读时间戳可至少与在事务中访问的任何键118的最大所记录时间戳一样大。
对于有界过期一致性保证,最小的可接受读时间戳可以是当前时间减去所需的时间界限。客户端设备110和节点180可以具有近似同步的时钟。
对于最终一致性保证,任何读时间戳都是可接受的。然而,从时间零读尽管在技术上不违反一致性保证但是对于应用115而言可能是无效的。选择当前时间可能因为其具有与选择对性能和可用性的相同限制的强一致性相同的效果而是不可接受的。
对于任何一致性保证(除了强一致性),在从可接受的范围选择读时间戳时可存在折衷:选择较新近的时间产生较新近的数据,这是应用115所期望的;但是选择更早前的时间得到节点180的更广的集合,这可以潜在地满足一致性保证,由此增加满足给定服务级协定119的可能性。可使用用于选择读时间戳的任何方法或技术。
计算用于许多一致性保证的可接受的时间戳范围可以包括服务级协定引擎116在事务的开始处确定与当前会话或事务请求117相关联的get操作的集合。在一些情况,诸如当用于get操作的键118取决于用户输入或在相同事务中的某些之前的get操作中检索到的数据时,确定正被访问的键118的集合是不现实的。对于此类事务,服务级协定引擎116可以通过假设每个数据对象将被读取(即,get操作)来获得保守的时间范围。对于强一致性get操作,例如,服务级协定引擎116可以从每个主节点180获得最新的提交的时间戳。
如果节点180满足等待时间界限和一致性保证两者,服务级协定引擎116可以确定节点180是否可以满足用于事务请求117的服务级协定119。替换地,通过将节点180满足等待时间界限的所确定的概率乘以节点180满足一致性保证的所确定的概率,服务级协定引擎116可以确定节点180满足用于事务请求117的服务级协定119的概率。
在一个或多个节点180可以满足用于事务请求117的多个服务级协定119的情况,服务级协定引擎116可以选择要使用哪个服务级协定119和节点180来履行事务请求117。在一些实现中,服务级协定引擎116可以选择具有最大效用的服务级协定119或具有最高相关联排名的服务级协定119。在多个节点180满足所选择的服务级协定119的情况,服务级协定引擎116可以选择具有最低的总相关联等待时间的节点180。替换地或附加地,服务级协定引擎116可以随机选择节点180,或者可以使用负载平衡算法选择节点180。可以使用用于用于选择节点180的其他方法。
在每个服务级协定119与效用值相关联的实现中,服务级协定引擎116可以使用预期的值函数来选择节点180以履行事务请求117。服务级协定引擎116可以随后选择能以最高预期值来履行事务请求117的节点180。
例如,通过将节点180可履行服务级协定119的概率乘以与服务级协定119相关联的效用,服务级协定引擎116可为每个节点180计算用于节点180的每个服务级协定119的预期值。服务级协定116可以选择能以最高计算预期值来履行用于事务请求117的服务级协定119的节点180。
在选择用以履行事务请求117的节点180之后,服务级协定引擎116可以向所选择的节点180提供事务请求。节点180可随后履行请求117,并且节点180可向服务级协定引擎116发送事务117被履行的指示或确认。在事务请求117是get事务请求117的情况,确认可包括从对应于键118的数据对象读取的数据值。
在一些实现中,确认可以包括服务级协定引擎116可以用来确定事务请求117的履行满足了哪些服务级协定119的信息。例如,信息可以包括在事务请求117中使用的数据对象的实际时间戳,和/或与事务请求117的履行相关联的实际观察到的等待时间。如可以理解的,因为监视器230的等待时间数据240和/或一致性数据250可能不是最新数据,节点180所履行的实际服务级协定119可能与服务级协定引擎116所预测的将被节点180履行的服务级协定119不同。因此,服务级协定引擎116可以确定为事务请求117实际履行了哪些服务级协定119。
服务级协定引擎119可以向应用115确认事务请求117被履行并且可以包括作为事务请求117的结果而生成的任何数据值或键。确认可以包括被确定已被履行的服务级协定119。服务级协定引擎119可以进一步基于被履行的服务级协定119的效用向应用115收费或开账单。
图3是用于提供事务请求和多个服务级协定给云存储服务的方法300的实现的操作流程。例如,该方法300可由客户端设备110的应用115来实现。
在301,输入多个服务级协定。可以由客户端设备110的应用115来提供多个服务级协定119。在一些实现中,每个服务级协定119可以具有等待时间界限和一致性保证。此外,每个服务级协定119可以具有相关联的效用值。例如,与应用115相关联的用户或操作者可以使用应用编程接口来选择或输入多个服务级协定119。
在303,生成事务请求。可以由客户端设备110的应用115来生成事务请求117。事务请求117可以是一个或多个put或get请求。put请求可以是对数据对象写数据值的请求,而get请求可以是从数据对象读数据值的请求。可支持其他事务请求。事务请求117可以包括标识正被访问的数据对象的一个或多个键118。
在305,提供所生成的事务请求和多个服务级协定。所生成的事务请求117和多个服务级协定119可以被应用115提供给服务级协定引擎116。引擎116可随后选择云存储服务150的多个节点180中的一个节点根据服务级协定119之一来履行请求。
在307,接收与事务请求相关联的结果。该结果可以由应用115从服务级协定引擎116接收。对于put事务请求117,结果可以是为数据对象存储了数据值的确认。对于get事务请求117,结果可以包括从数据对象检索的数据值。该结果可进一步具有云存储服务150遵从了多个服务级协定119中的哪个服务级协定119的指示。如果根据服务级协定的等待时间界限和一致性保证两者履行了事务请求117,则该服务级协定被遵从。
图4是用于根据多个服务级协定119履行事务请求117的方法400的实现的操作流程。例如,方法400可以由服务级协定引擎116和/或云存储服务150来实现。
在401,收到事务请求。事务请求117可以由服务级协定引擎116从客户端设备110的应用115接收。事务请求117可以与多个服务级协定119相关联,并且每个服务级协定可以包括等待时间界限和一致性保证。此外,每个服务级协定可以具有相关联的效用。
在403,接收有关多个节点的信息。有关多个节点180的信息可以由服务级协定引擎116的监视器230接收。该信息可包括来自每个节点180的时间戳(即,高时间戳和低时间戳)。时间戳可以被监视器230用来确定与多个节点180中每个节点有关的一致性数据250。该信息可进一步包括等待时间信息,诸如客户端设备110和多个节点180中每个节点之间的往返时间。等待时间信息可以被监视器230用来确定与多个节点180中每个节点有关的等待时间数据240。
在405,确定是否可以在多个节点中的一个节点处根据多个服务级协定中的任一服务级协定来履行事务请求。可以由服务级协定引擎116使用等待时间数据240和一致性数据250来作出该确定。在一些实现中,针对每个节点180和服务级协定119,通过确定节点的平均等待时间是否小于服务级协定119中的等待时间界限并且与节点180相关联的时间戳是否与服务级协定119的一致性水平相一致,服务级协定引擎116可以作出该确定。例如,如果一致性水平为强,则在节点180的高时间戳等于服务级协定引擎116所知的最高时间戳的情况下,时间戳可以与该一致性水平相一致。
如果可以根据服务级协定中的任一个来履行事务请求,则方法400可以在407继续。否则,方法可以在415继续,在此提供事务不能被履行的指示。
在407,选择多个节点中的一节点来履行事务请求。可以由服务级协定引擎116来选择节点180。在多个节点180能够满足服务级协定119中的一个或多个的情况下,服务级协定引擎116可以选择节点180来履行事务。在一些实现中,引擎116可以选择能根据具有最高效用的服务级协定来履行事务117的节点180。
在其他实现中,服务级协定引擎116可为每个节点180和服务级协定119确定节点180可根据服务级协定119来履行事务117的概率。服务级协定引擎116可以随后通过将所确定的概率乘以与服务级协定119相关联的效用来确定节点180和服务级协定119的预期效用。可以选择与所确定的最大预期效用相关联的节点。
例如,在一些实现中,在事务117的开始,服务级协定引擎116可为每个服务级协定119和对在事务117中被访问的键118进行存储的每个节点118计算预期效用,该预期效用将生成自在那个节点118处执行get操作。该预期效用可以是节点118能根据服务级协定119履行get操作的概率和与服务级协定119相关联的效用之积。服务级协定引擎116可为每个键118/服务级协定119对记录最佳节点180;如果多个节点180提供相同的预期效用,服务级协定引擎116可以随机选择一个节点以平衡负载或选取最新或最接近的一个节点。服务级协定引擎116可以随后通过对所有键118的最佳节点180求和来计算每个服务级协定119的总预期效用。服务级协定引擎116可以随后选择具有最高预期效用的服务级协定119和节点180。
在409,在所选择的节点处履行事务请求。事务请求117可以由云存储服务150的所选择的节点180来履行。事务请求117可以通过存储或检索与所选择的节点180相关联的表270中的数据值被履行。
在411,确定所遵从的服务级协定。服务级协定119可由服务级协定引擎116来确定。服务级协定119可以通过确定节点180所满足的实际一致性保证和与执行事务相关联的实际等待时间而被确定。服务级协定引擎116可随后确定具有最高排名或效用的服务级协定119,该最高排名或效用是基于所完成的事务的实际一致性和等待时间界限而实现的。
在413,提供根据所确定的服务级协定履行了事务请求的指示。该指示可以由服务级协定引擎116提供给应用115。该指示还可以包括由所选择的节点180根据事务请求117检索的任何数据值。
图5示出了在其中可实现各示例实施例和各方面的示例性计算环境。计算系统环境只是合适的计算环境的一个示例,并非旨在对使用范围或功能提出任何限制。
可以使用很多其他通用和专用计算机系统环境或配置。适合使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、网络PC、微型计算机、大型计算机、嵌入式系统、包括任何以上系统或设备的分布式计算环境等。
可以使用诸如程序模块等可由计算机执行的计算机可执行指令。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。也可使用其中任务由通过通信网络或其他数据传输介质链接的远程处理设备执行的分布式计算环境。在分布式计算环境中,程序模块和其他数据可以位于包括存储器存储设备的本地和远程计算机存储介质中。
参考图5,用于实现此处所描述的各方面的示例系统包括计算设备,诸如计算设备500。在其最基本的配置中,计算系统500通常包括至少一个处理单元502和存储器504。取决于计算设备的确切配置和类型,存储器504可以是易失性的(如随机存取存储器(RAM))、非易失性的(诸如只读存储器(ROM)、闪存等)或两者的某种组合。该最基本配置在图5中由虚线506来示出。
计算系统500也可具有附加特征/功能。例如,计算机系统500可包括附加存储(可移动和/或不可移动),包括但不限于磁盘、光盘或磁带。这样的附加存储在图5中由可移动存储508和不可移动存储510示出。
计算系统500通常包括各种计算机可读介质。计算机可读介质可以是可由计算系统500访问的任何可用介质,并且包括易失性和非易失性介质、可移动和不可移动介质。
计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。存储器504、可移动存储508和不可移动存储510都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、电可擦除可编程只读存储器(EEPROM)、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或可用于存储所需信息且可以由计算系统500访问的任何其它介质。任何这样的计算机存储介质都可以是计算系统500的一部分。
计算系统500可包含允许该设备与其它设备通信的(诸)通信连接512。计算设备500也可具有(诸)输入设备514,诸如键盘、鼠标、笔、语音输入设备、触摸输入设备,等等。也可包括(诸)输出设备516,诸如显示器、扬声器、打印机等等。所有这些设备在本领域是众知的并且不必在此详细讨论。
应该理解,此处描述的各种技术可以结合硬件或软件,或在适当时结合两者的组合来实现。因此,当前公开的主题的方法和装置或其特定方面或部分可采取包含在诸如软盘、CD-ROM、硬盘驱动器或任何其它机器可读存储介质等有形介质中的程序代码(即,指令)的形式,其中当程序代码被加载到诸如计算机等机器内并由其执行时,该机器成为用于实现当前所公开的主题的装置。
尽管示例性实现可涉及在一个或多个独立计算机系统的上下文中利用当前所公开的主题的各方面,但本主题不受此限制,而是可以结合任何计算环境,诸如网络或分布式计算环境来实现。此外,当前所公开的主题的各方面可在多个处理芯片或设备中或跨多个处理芯片或设备实现,且存储可类似地跨多个设备来实现。这些设备可能包括例如个人计算机、网络服务器、以及手持式设备。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特定特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。

Claims (10)

1.一种方法,包括:
由计算设备选择服务级协定,其中所述服务级协定包括一致性保证;
由所述计算设备生成事务请求;
由所述计算设备向云存储服务提供所生成的事务请求和所选择的服务级协定;以及
由所述计算设备从所述云存储服务接收与所述事务请求相关联的结果以及所述服务级协定已被遵从的指示。
2.如权利要求1所述的方法,其特征在于,所述服务级协定进一步包括性能保证,并且选择服务级协定包括选择所述一致性保证和所述性能保证。
3.如权利要求1所述的方法,其特征在于,所述一致性保证包括强、最终、单调、读我所写或有界过期中的一个或多个。
4.如权利要求1所述的方法,其特征在于,所述服务级协定包括多个服务级协定。
5.如权利要求4所述的方法,其特征在于,选择服务级协定包括选择所述多个服务级协定中的每个服务级协定,以及向所述多个服务级协定中每个所选择的服务级协定指派效用。
6.如权利要求4所述的方法,其特征在于,所述服务级协定已被遵从的指示包括所述多个服务级协定中哪个服务级协定已被遵从的指示。
7.如权利要求1所述的方法,其特征在于,所述事务请求包括一个或多个put操作或get操作。
8.一种系统,包括:
存储服务,所述存储服务包括多个节点;
应用,所述应用适配成生成事务请求,其中所述事务请求包括多个服务级协定,并且每个服务级协定与效用相关联,并且每个服务级协定包括一致性保证;以及
服务级协定引擎,所述服务级协定引擎适配成:
接收所述事务请求;
基于与所述多个服务级协定中的每个服务级协定相关联的效用以及所述多个服务级协定中每个服务级协定的一致性保证,选择所述多个节点中能根据所述多个服务级协定中的一个或多个服务级协定履行所述事务请求的节点;以及
从所选择的节点履行所述事务请求。
9.如权利要求8所述的系统,其特征在于,每个服务级协定进一步包括等待时间界限。
10.如权利要求8所述的系统,其特征在于,基于与所述多个服务级协定中的每个服务级协定相关联的效用以及所述多个服务级协定中每个服务级协定的一致性保证选择所述多个节点中能根据所述多个服务级协定中的一个或多个服务级协定履行所述事务请求的节点包括:
对于每个节点和服务级协定:
确定所述节点能根据所述服务级协定的所述一致性保证来履行所述事务请求的概率;
基于所确定的概率和所述效用来确定所述节点和所述服务级协定的预期值;以及
选择与所确定的最大预期值相关联的节点。
CN201380052180.1A 2012-10-05 2013-09-17 云存储方法和系统 Active CN104704773B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/645,511 2012-10-05
US13/645,511 US8972491B2 (en) 2012-10-05 2012-10-05 Consistency-based service-level agreements in cloud storage environments
PCT/US2013/060204 WO2014055237A1 (en) 2012-10-05 2013-09-17 Consistency-based service-level agreements in cloud storage environments

Publications (2)

Publication Number Publication Date
CN104704773A true CN104704773A (zh) 2015-06-10
CN104704773B CN104704773B (zh) 2018-07-31

Family

ID=49582788

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380052180.1A Active CN104704773B (zh) 2012-10-05 2013-09-17 云存储方法和系统

Country Status (4)

Country Link
US (1) US8972491B2 (zh)
EP (1) EP2904737B1 (zh)
CN (1) CN104704773B (zh)
WO (1) WO2014055237A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109560985A (zh) * 2018-11-19 2019-04-02 北京航空航天大学 一种因果语义测试方法
CN111475493A (zh) * 2020-06-19 2020-07-31 阿里云计算有限公司 数据读取方法及装置
WO2022033290A1 (zh) * 2020-08-12 2022-02-17 百果园技术(新加坡)有限公司 强一致存储系统、数据强一致存储方法、服务器及介质

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5449462B2 (ja) * 2012-06-22 2014-03-19 株式会社東芝 分散型データベースシステム及びプログラム
US10235333B1 (en) * 2014-04-11 2019-03-19 Twitter, Inc. Managing consistency models in a distributed database
US20160216988A1 (en) * 2015-01-28 2016-07-28 Microsoft Technology Licensing, Llc Exposing storage entity consistency capability status
US9667657B2 (en) 2015-08-04 2017-05-30 AO Kaspersky Lab System and method of utilizing a dedicated computer security service
US10397314B2 (en) * 2015-11-24 2019-08-27 International Business Machines Corporation Latency management and advising tool for a database management system
US10110446B2 (en) * 2015-12-07 2018-10-23 Bank Of America Corporation Messaging queue spinning engine
US10116587B2 (en) * 2016-05-19 2018-10-30 Microsoft Technology Licensing, Llc Electronic distribution of applications having multiple service levels
US10476682B2 (en) 2017-03-01 2019-11-12 Cisco Technology, Inc. Transaction management in distributed ledger systems
US10635541B2 (en) 2017-10-23 2020-04-28 Vmware, Inc. Fine-grained conflict resolution in a shared log
US10649981B2 (en) * 2017-10-23 2020-05-12 Vmware, Inc. Direct access to object state in a shared log
US11392567B2 (en) 2017-10-30 2022-07-19 Vmware, Inc. Just-in-time multi-indexed tables in a shared log
CA3078478C (en) * 2017-10-31 2023-03-07 Ab Initio Technology Llc Managing a computing cluster interface
US10885018B2 (en) 2018-05-07 2021-01-05 Microsoft Technology Licensing, Llc Containerization for elastic and scalable databases
US11100086B2 (en) 2018-09-25 2021-08-24 Wandisco, Inc. Methods, devices and systems for real-time checking of data consistency in a distributed heterogenous storage system
US11671417B2 (en) * 2020-08-18 2023-06-06 Fujifilm Business Innovation Corp. Information processing apparatus and non-transitory computer readable medium
CN112612422B (zh) * 2020-12-29 2022-08-23 重庆邮电大学 移动边缘计算中副本的动态一致性维护方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040064555A1 (en) * 2002-09-27 2004-04-01 Renaud Cuny Service level allocation for IP networks
CN1815965A (zh) * 2006-02-22 2006-08-09 北京邮电大学 基于服务等级协议的互联网业务的服务质量计费方法
CN101379477A (zh) * 2006-02-02 2009-03-04 国际商业机器公司 用于上下文敏感的服务级别协议的交互说明、用于提供受服务级别协议调节的服务交付事件期间所需的资源以及用于监控服务交付事件期间对服务级别协议的遵从性的方法和装置
US20100218005A1 (en) * 2009-02-23 2010-08-26 Microsoft Corporation Energy-aware server management
CN102132268A (zh) * 2008-08-26 2011-07-20 微软公司 数据中心编程模型

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8285961B2 (en) * 2008-11-13 2012-10-09 Grid Iron Systems, Inc. Dynamic performance virtualization for disk access
US8326807B2 (en) * 2009-01-23 2012-12-04 Hewlett-Packard Development Company, L.P. Methods of measuring consistability of a distributed storage system
US8768875B2 (en) * 2010-10-29 2014-07-01 Nec Laboratories America, Inc. Admission control in cloud databases under service level agreements
US8612599B2 (en) * 2011-09-07 2013-12-17 Accenture Global Services Limited Cloud service monitoring system
US9002939B2 (en) * 2012-06-03 2015-04-07 International Business Machines Corporation Adaptive and dynamic replication management in cloud computing
US9325785B2 (en) * 2012-06-29 2016-04-26 Rodolfo Kohn Device, system, and method for client-governed session persistency between one or more clients and servers of a data center
US9292566B2 (en) * 2012-07-30 2016-03-22 Hewlett Packard Enterprise Development Lp Providing a measure representing an instantaneous data consistency level

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040064555A1 (en) * 2002-09-27 2004-04-01 Renaud Cuny Service level allocation for IP networks
CN101379477A (zh) * 2006-02-02 2009-03-04 国际商业机器公司 用于上下文敏感的服务级别协议的交互说明、用于提供受服务级别协议调节的服务交付事件期间所需的资源以及用于监控服务交付事件期间对服务级别协议的遵从性的方法和装置
CN1815965A (zh) * 2006-02-22 2006-08-09 北京邮电大学 基于服务等级协议的互联网业务的服务质量计费方法
CN102132268A (zh) * 2008-08-26 2011-07-20 微软公司 数据中心编程模型
US20100218005A1 (en) * 2009-02-23 2010-08-26 Microsoft Corporation Energy-aware server management

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
RAIHAN AL-EKRAM ET AL: "OSSR: Optimal Single Site Replication", 《PARALLEL AND DISTRIBUTED PROCESSING WITH APPLICATIONS(ISPA),2010 INTERNATIONAL SYMPOSIUM ON, IEEE, PISCATAWAY, NJ, USA》 *
YINGYING ZHU ET AL: "Scheduling with Freshness and Performance Guarantees for Web Applications in the Cloud", 《THE TWENTY-SECOND AUSTRALASIAN DATABASE CONFERENCE (ADC2011)》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109560985A (zh) * 2018-11-19 2019-04-02 北京航空航天大学 一种因果语义测试方法
CN111475493A (zh) * 2020-06-19 2020-07-31 阿里云计算有限公司 数据读取方法及装置
WO2022033290A1 (zh) * 2020-08-12 2022-02-17 百果园技术(新加坡)有限公司 强一致存储系统、数据强一致存储方法、服务器及介质

Also Published As

Publication number Publication date
EP2904737A1 (en) 2015-08-12
CN104704773B (zh) 2018-07-31
US20140101225A1 (en) 2014-04-10
US8972491B2 (en) 2015-03-03
WO2014055237A1 (en) 2014-04-10
EP2904737B1 (en) 2020-11-18

Similar Documents

Publication Publication Date Title
CN104704773A (zh) 云存储环境中基于一致性的服务级协定
Papaioannou et al. Scalia: An adaptive scheme for efficient multi-cloud storage
US9646256B2 (en) Automated end-to-end sales process of storage appliances of storage systems using predictive modeling
KR101914847B1 (ko) 블록-기반 저장장치에서의 페이지 캐시 기록 로깅
US9110724B2 (en) Selecting computing nodes in cloud service using replication topologies
CN103547994B (zh) 用于容量管理和灾难恢复的跨云计算的方法和系统
Terry et al. Consistency-based service level agreements for cloud storage
CN102591913B (zh) 基于推荐的内容项高速缓存
US8069224B2 (en) Method, equipment and system for resource acquisition
RU2598991C2 (ru) Восстановление данных клиента при перемещениях данных клиента
US20140136571A1 (en) System and Method for Optimizing Data Storage in a Distributed Data Storage Environment
CN102915331A (zh) 用于云选择的协调引擎
CN105283847A (zh) 本地存储数据版本控制
US10154091B1 (en) Deploying infrastructure units according to resource hosting constraints
CN103294610A (zh) 可重复使用的内容可寻址存储
CN110008197A (zh) 一种数据处理方法、系统及电子设备和存储介质
US20230244687A1 (en) Optimization of Virtual Warehouse Computing Resource Allocation
US9350625B2 (en) Service consumption based on gamification level classification
CN108200151A (zh) 一种分布式存储系统中ISCSI Target负载均衡方法和装置
US9971543B2 (en) Methods and apparatus for storing electronic documents
US9378230B1 (en) Ensuring availability of data in a set being uncorrelated over time
CN109558152A (zh) 系统灰度发布时流量切换方法、装置、介质及电子设备
CN115168203A (zh) 接口模拟方法、装置、系统、计算机设备和存储介质
US11625616B2 (en) Locality-aware compressor-decompressor for keeping prediction models up-to-date in resource constrained networks
Nataraj et al. A novel hybrid meta‐heuristic‐oriented latency sensitive cloud object storage system

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20171016

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

GR01 Patent grant
GR01 Patent grant