CN107430514A - 使用多服务器的低延迟应用 - Google Patents
使用多服务器的低延迟应用 Download PDFInfo
- Publication number
- CN107430514A CN107430514A CN201680004423.8A CN201680004423A CN107430514A CN 107430514 A CN107430514 A CN 107430514A CN 201680004423 A CN201680004423 A CN 201680004423A CN 107430514 A CN107430514 A CN 107430514A
- Authority
- CN
- China
- Prior art keywords
- application
- client device
- sub
- network
- calling
- 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
Links
Classifications
-
- 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/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
- G06F16/986—Document structures and storage, e.g. HTML extensions
-
- 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/02—Standardisation; Integration
- H04L41/0233—Object-oriented techniques, for representation of network management data, e.g. common object request broker architecture [CORBA]
-
- 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
-
- 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/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- 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/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Information Transfer Between Computers (AREA)
Abstract
方法、系统和装置,包括在计算机存储介质上编码的计算机程序,用于管理具有在不同服务器上分片的子应用的应用。多个服务器每个服务包括一个或多个子应用的主应用的独立子应用。子应用在客户端设备处被组合以创建主应用的图形用户界面。响应于由客户端设备发起的对多个不同服务器的多个不同网络呼叫,独立地服务每个子应用。由一个或多个服务器服务的同步代码防止客户端设备发起对渲染每个子应用的静态用户界面元素的UI代码的网络呼叫,直到客户端设备已经发起了请求将由子应用的给定用户界面视图呈现的数据的一个或多个网络呼叫。
Description
背景技术
本说明书涉及通过具有子应用的应用的数据处理。
互联网促进了全球各地用户之间的信息交换与交易。可以在用户界面上向用户呈现信息,例如通过应用来控制,诸如通过基于web的应用来控制的用户界面。用户界面可以在屏幕上呈现信息,并且不同类型的信息可以在屏幕的不同区域中呈现。通常,在用户界面内渲染和/或呈现信息所需的时间量将随着要呈现的信息量的增加而增加。
发明内容
一般地,本说明书中所述的主题的一个方面可以在系统中实现,所述系统包括多个服务器,每个服务器服务包括一个或多个独立子应用的主应用的独立子应用。所述一个或多个独立子应用在客户端设备处被组合以创建所述主应用的图形用户界面。响应于由所述客户端设备发起的对多个不同服务器的多个不同网络呼叫,每个所述子应用被单独服务。由所述多个服务器中的一个或多个服务器来服务的同步代码防止所述客户端设备发起对渲染每个子应用的静态用户界面元素的UI代码的网络呼叫,直到所述客户端设备发起了请求将由所述子应用的给定用户界面视图呈现的数据的一个或多个网络呼叫。
这些和其他实施方式可以每个都可选地包括下面特征中的一个或多个。所述多个服务器可以包括主机服务器,所述主机服务器处理对于包括子应用的页面的页面加载请求;子服务器,所述子服务器服务在不提供渲染所述子应用的用户界面所需的足够代码的情况下初始化子应用的数据集;资源服务器,所述资源服务器服务与所述数据集组合来渲染所述子应用的用户界面的代码集;以及混合器,所述混合器基于网络呼叫中的信息将网络呼叫从用户设备路由到所述主机服务器、所述子服务器和所述资源服务器中的每个。由所述子服务器服务的数据集不包括操纵包括所述子应用的页面的文档对象模型的代码,而由所述资源服务器服务的代码集包括操纵页面的DOM的代码。只有在所述客户端设备已经发起对将由所述子应用的给定用户界面视图呈现的所有数据的所有网络呼叫之后,所述同步代码可以防止所述客户端设备发起对所述UI代码的网络呼叫。响应于页面加载请求,所述主机服务器向所述客户端设备传送第一响应,所述第一响应包括:set-cookie(设置cookie)头,所述set-cookie头包括所述主机服务器的标识符;第一网络路径,所述第一网络路径与所述子服务器相对应;第二网络路径,所述第一网络路径与所述资源服务器相对应;以及所述同步代码。所述同步代码可以指示所述客户端设备发起对所述第一网络路径的第一网络呼叫,所述第一网络呼叫从所述子服务器请求所述子应用的一个或多个组件。响应于所述第一网络呼叫,所述子服务器向所述客户端设备传送第二响应,所述第二响应包括:新set-cookie头,所述新set-cookie头包括所述子服务器的标识符,并且使得相同子服务器随后能够被所述客户端设备呼叫;以及代码,所述代码触发对所述资源服务器的后续网络呼叫,所述后续网络呼叫从所述资源服务器请求渲染所述子应用的静态用户界面元素的所述UI代码。所述同步代码可以使用所述新set-cookie头发起对所述子服务器的一个或多个附加网络呼叫,所述一个或多个附加网络呼叫请求将由所述子应用的给定用户界面视图呈现的一个或多个数据集,并且其中,所述同步代码延迟对所述资源服务器的后续网络呼叫,直到对所述子服务器的所述一个或多个网络呼叫中的每个网络呼叫都已经被所述客户端设备发起。同步代码可以延迟所述UI代码的执行,直到对所述一个或多个附加网络呼叫的响应已经被所述客户端设备接收到。在发起对所述子服务器的所述一个或多个附加网络呼叫之前,所述子服务器可以预先加载与在请求所述子应用的所述一个或多个组件的所述第一网络呼叫中包括的信息相对应的数据集。
一般地,本说明书中所述的主题的另一创新方面可以在方法中实现,所述方法包括:由混合器从客户端设备接收对包括子应用的页面的页面加载请求;由混合器将所述页面加载请求路由到处理对包括一个或多个子应用的页面的页面加载请求的主机服务器;以及由所述主机服务器处理所述页面加载请求。处理包括:向所述客户端设备传送响应,所述响应包括:指令,所述指令将所述客户端设备重新定向到子服务器,所述子服务器服务在不提供渲染所述子应用的用户界面所需的足够代码的情况下初始化所述子应用的数据集;以及同步代码,所述同步代码防止所述客户端设备发起对渲染所述子应用的静态用户界面元素的UI代码的网络呼叫,直到所述客户端设备已经发起了对一个或多个子服务器的一个或多个网络呼叫,所述一个或多个网络呼叫请求将由所述子应用的给定用户界面视图呈现的数据。
这些和其他实施方式可以每个都可选地包括下面特征中的一个或多个。方法可以进一步包括:由给定子服务器接收基于所述主机服务器所传送的所述指令在客户端设备处发起的网络呼叫;以及向所述客户端设备传送在所述客户端设备处在不提供渲染所述子应用的所述用户界面所需的足够代码的情况下初始化发起所述子应用的数据集。方法可以进一步包括:由资源服务器从所述客户端设备接收第二网络呼叫;以及由所述资源服务器响应于所述第二网络呼叫而传送在所述客户端设备处与所述数据集组合以在所述客户端设备处渲染所述子应用的用户界面的代码集。由所述子服务器传送的所述数据集不包括操纵包括所述子应用的页面的文档对象模型的代码,而由所述资源服务器传送的所述代码集包括操纵所述页面的DOM的代码。由所述主机传送的所述响应包括:set-cookie头,所述set-cookie头包括所述主机服务器的标识符;第一网络路径,所述第一网络路径与所述子服务器相对应;第二网络路径,所述第二网络路径与所述资源服务器相对应;以及所述同步代码。
一般地,本说明书中所述的主题的另一方面可以在一种编码有计算机程序的非暂时性计算机存储介质中实现。所述程序可以包括指令,所述指令在被分布式计算系统执行时使得所述分布式计算系统执行操作,所述操作包括:由混合器从客户端设备接收对包括子应用的页面的页面加载请求;由混合器将所述页面加载请求路由到处理对包括一个或多个子应用的页面的页面加载请求的主机服务器;以及由所述主机服务器处理所述页面加载请求。处理包括:向所述客户端设备传送响应,所述响应包括:指令,所述指令将所述客户端设备重新定向到子服务器,所述子服务器服务在不提供渲染所述子应用的用户界面所需的足够代码的情况下初始化所述子应用的数据集;以及同步代码,所述同步代码防止所述客户端设备发起对渲染所述子应用的静态用户界面元素的UI代码的网络呼叫,直到所述客户端设备已经发起了对一个或多个子服务器的一个或多个网络呼叫,所述一个或多个网络呼叫请求将由所述子应用的给定用户界面视图呈现的数据。
这些和其他实施方式可以每个都可选地包括下面特征中的一个或多个。所述操作可以进一步包括:由给定子服务器接收基于所述主机服务器所传送的所述指令在客户端设备处发起的网络呼叫;以及向所述客户端设备传送在所述客户端设备处在不提供渲染所述子应用的所述用户界面所需的足够代码的情况下初始化所述子应用的数据集。所述操作可以进一步包括:由资源服务器从所述客户端设备接收第二网络呼叫;以及由所述资源服务器响应于所述第二网络呼叫而传送在所述客户端设备处与所述数据集组合以在所述客户端设备处渲染所述子应用的用户界面的代码集。由所述子服务器传送的所述数据集不包括操纵包括所述子应用的页面的文档对象模型的代码,而由所述资源服务器传送的所述代码集包括操纵所述页面的DOM的代码。由所述主机传送的所述响可以应包括:set-cookie头,所述set-cookie头包括所述主机服务器的标识符;第一网络路径,所述第一网络路径与所述子服务器相对应;第二网络路径,所述第二网络路径与所述资源服务器相对应;以及所述同步代码。
本说明书中所述的主题的特定实施例可以被实施为实现下面的一个或多个优点。可以通过使用多个子应用(例如,多个更小的基于web的应用)来创建主应用(例如大的基于web的应用)来降低呈现和/或更新在主应用上呈现的信息所需的时间量。与子应用之一相关联的错误(例如页面加载错误、失败网络呼叫或慢服务器响应)将不会阻止其他子应用正确加载,由此降低了这些错误对主应用的正确操作的影响。每个子应用可以独立由不同团队来管理,这可以使得独立开发团队能够独立开发和/或维护(例如更新)不同子应用。例如,每个子应用可以使用与剩余子应用不同的用户界面(UI)平台。而且,每个不同团队可以具有独立开发周期和发出计划。进一步,每个不同团队可以决定其自己的开发平台,包括决定撰写其子应用的编程语言。
本说明书中所述的主题的一个或多个实施例的细节在附图和下面的描述中阐述。根据说明书、附图和权利要求,主题的其他特征、方面和优点将变得显而易见。
附图说明
图1是在用户界面中提供主应用的示例环境的框图。
图2是由主应用提供的示例用户界面的屏幕截图。
图3是示出对无版本数据的示例请求和响应的泳道图。
图4是示出对于版本数据的示例请求和响应的泳道图。
图5是示出用于在初始加载之后加载子应用的示例请求和响应的泳道图。
图6是示出用于在初始加载之后加载子应用的示例请求和响应的泳道图。
图7是用于管理用于服务应用和相关联子应用的请求和响应的示例过程的流程图。
图8是可以用来实现本文中所述的系统和方法的计算设备的框图。
在各个附图中,相同的参考标记和指名称指示相同的元素。
具体实施方式
本文档公开了用于服务用于包括独立子应用的主应用的数据的系统、方法和计算机程序产品。例如,主应用可以是基于web的应用,除了应用特定的头、信息和控件之外,其还包括包括子区域的用户界面(UI)区域。在一些实施方式中,在每个子区域中呈现的内容是由独立子应用生成(或提供)的。每个子应用可以由独立应用团队(或组织)来提供/维护,并且根据版本更新的独立排程来更新。主应用可以在客户端设备上呈现,例如图形用户界面(GUI)中。
为了在客户端设备的相同GUI中呈现来自主应用和每个子应用的信息,可以从各种服务器请求支持主应用(和独立子应用)的数据。例如,主机服务器可以处理对包括主应用和相应子应用的页面的页面加载请求。子服务器可以服务用于初始化给定子应用但例如不提供渲染该子应用的用户界面所需的足够代码的数据集。资源服务器可以服务与子服务器所服务的数据集进行组合以渲染子应用的用户界面的代码集。例如,由各种服务器服务的同步代码可以防止客户端设备发起对渲染每个子应用的静态用户界面元素的UI代码的网络呼叫,直到客户端设备已经发起请求将要由子应用的给定用户界面视图呈现的数据的一个或多个网络呼叫。混合器可以基于网络呼叫中的信息将网络呼叫从用户设备路由到主机服务器、子服务器和资源服务器中每个。
尽管本文档讨论来自多服务器的应用的低延迟加载,也描述了除了低延迟以外的其他方面。例如,基于大脚本的应用可以被“分片(sharded)”(例如,被子应用子分割或者其他分割),用于在管理应用呈现时优化用户体验和效率。例如,优化可以提供分片应用的最优加载(例如引导程序),地点变化的最优加载(用于安置的后续分片加载以及子应用的可见性),以及地点管理。
图1是在用户界面(UI)101中提供主应用的示例环境100的框图。环境100包括需要有效服务用于在UI 101中的主应用和子应用的数据和资源的组件。例如,主应用可以是基于web的应用,所述基于web的应用由服务器托管且可以通过在客户端设备103上运行的浏览器102访问(以及在其内执行)。环境100包括主机服务器108,其处理对包括一个或多个子应用的页面的页面加载请求114。每个子应用与UI 101的给定UI视图(例如可见部分)相关联(例如指派给给给定UI视图)。环境100还包括一个或多个子服务器110,每个子服务器110服务数据集,该数据集初始化子应用而不提供渲染和/或呈现由该子服务器所服务的子应用的用户界面所需的足够代码。环境100中的一个或多个资源服务器112可以服务代码集(例如超文本标记语言(HTML)代码),其与子服务器所提供的数据集组合以渲染子应用的用户界面。混合器104可以将网络呼叫(例如包括页面加载请求114)从客户端设备103路由到每个主机服务器108,每个子服务器110和每个资源服务器112。基于网络呼叫中的信息,混合器可以自动选择将特定网络呼叫路由到的服务器108、112或114。环境100的所有上述组件都在各种时间且以各种方式来使用,以便在浏览器102上渲染web应用。
在一些实施方式中,与UI 101不同的其他用户界面可以具有它们自己不同的混合器、主机服务器、子服务器和资源服务器的集合。在一些实施方式中,可以使用混合器106和服务器108、112和114的其他布置和通信场景,且其他组件可以被添加到环境100中以便促进对用于与UI 101相关联的主应用的子应用的数据的服务。
混合器106可以负责将传入用户请求(例如页面加载请求114)路由到适当的后端服务器(例如服务器108、110或112之一)。在一些实施方式中,可以存在一个混合器106,或者可以存在多个混合器106,例如,将通过网络104接收到的请求进行路由。在一些实施方式中,网络104可以包括互联网和各种其他有线网络、无线网络、局域网(LAN)、广域网(WAN)和其他网络。进一步地,环境100的组件的一些或所有数据、通信、请求和响应可以通过网络104。
例如,主机服务器108可以起到父服务器的作用,用作到主应用和子应用的进入点。在一些实施方式中,所有初始页面加载请求和所有重新加载页面请求都通过主机服务器108。主机服务器108进一步包含配置信息,用于应用被正确加载(和/或操作)。典型地,主机服务器108不包含主应用。
子服务器110可以提供初始化与主应用有关的子应用所需的逻辑。例如,独立子服务器110可以服务在UI 101中提供的主应用的每个子应用。子服务器110通常不包含渲染UI组件自身所必需的资源,而是,附加数据通常需要从资源服务器112来下载以便渲染和/或呈现子应用的UI。
资源服务器112可以负责服务静态内容,所述静态内容包括例如图像、级联样式片以及其他静态内容。资源服务器112可以被在多个位置复制多次,从而使得例如主应用的用户总是比主机服务器108或子服务器110更接近资源服务器112。资源服务器112可以是被高度复制的资源服务器,使得对于给定子应用托管的数据可以从资源服务器112的多个不同实例得到。资源服务器112的这些各种实例可以在各种不同地理位置上部署。因此,混合器106选择服务(例如处理和响应)给定网络呼叫的特定资源服务器112可以以降低服务给定网络呼叫所需的总时间的方式被选择。例如,混合器106可以使用与各种资源服务器的当前加载条件和/或那些资源服务器的地理位置有关的信息来识别将服务给定网络呼叫的特定资源服务器112。通常,位于更接近客户端设备的服务器将能够更加快速地提供响应。同时,正在经历较低负载的服务器通常能够比正在经历较高负载条件的服务器更加快速地处理和响应于网络呼叫。在一些实施方式中,可以在最少时间量内服务给定网络呼叫的资源服务器112被选择来服务给定网络呼叫。
在一些实施方式中,地点定义模块118可以例如基于哪些响应116已被接收和对服务器110和112的哪些请求仍旧待定(或还未发送)来确定UI 101的哪些部分(与子应用相关联)要被显示(或隐藏)。这可以防止UI 101包含与特定子应用相关联的不完整信息的情形。
图2是由主应用提供的示例用户界面200的屏幕截图。例如,用户界面200可以是上面关于图1所述的用户界面101。如图2中所示,主应用可以控制子应用可以控制UI的UI区域202之外的UI元素。例如,主应用可以控制边组件204、206并且控制组件208,而浏览器102可以控制组件210、212、214和216。然而,子应用可以控制UI组件220a-220e。在一些实施方式中,UI组件218可以由另一子应用控制,且与UI组件218相关联的信息(例如与广告的变换相关联的日期)可以与在UI组件220a-220e中呈现(且为之请求)的数据相关联使用。例如,与UI组件218相关联的数据范围信息可以在请求用于UI组件220a-220e的数据时被用作过滤器。这样,与UI 200相关联的应用可以被分为独立的子应用,每个独立的子应用与UI组件218和220a-220e中的相应一个UI组件相关联。
如所示,用于UI区域202的内容(例如子内容)可以例如基于子应用的全局资源定位符(URL)从不同子服务器210动态加载。例如,组件204-212可以包括全局导航组件,且组件204-212可以属于主应用(例如由主机服务器208服务)。在一些实施方式中,在UI区域202之外可能不存在组件,意味着用户界面200的所有被渲染的内容都可以来自子应用(例如由子服务器210服务)。
在一些实施方式中,地点定义118可以选择隐藏或示出各种组件218和220a-220e中的一些或全部。例如,使用地点配置信息,如果例如渲染特定组件所需的数据还未被接收,地点定义118可以决定隐藏各种组件218和220a-220e中的一个或多个。在这样的情形下,主应用等级的导航组件和其他组件,包括组件204-212,可以被显示,但是组件220a-220e中的特定组件可以被显示而其他被隐藏。这样,可以向查看UI 101的用户呈现持久头,而不管各种子应用加载和转换。
与应用相关联的主机服务器108可以在主应用的等级上管理应用下载、应用未加载、和/或其他功能。这可以帮助节省主应用的存储器消耗,因为子服务器108可以每个都负责服务用于它们相应子应用的数据。
图3是示出对于版本数据的示例请求和响应的泳道图300。例如,图300示出用于提供用于主应用和对应子应用的数据的示例步骤。多个组件可以缝合在一起,例如在一个无缝用户界面202中。
图3的元素所启用的场景可以在例如用户在浏览器(例如上面所述的浏览器102)中录入URL(例如example.com/aw/overviews)时开始。浏览器102可以在步骤A发出请求302a,例如页面加载请求114。混合器106可以截取并处理请求302a,例如定位URL中的“example.com/aw”并且将请求302a映射到特定主机web服务器(例如主机服务器108的IP地址)。在步骤A1,主机服务器106可以处理对于包括与主应用相关联的子应用的页面的页面加载请求。例如,主机服务器108可以将“/aw/overviews”映射到子网络服务器(例如特定子服务器110)。而且,在步骤A1,地点映射116可以被初始化,例如以开始控制UI 101的哪些部分要被示出(以及哪些要被隐藏)。
在步骤A2,响应304b可以由主机服务器108来提供,以响应于页面加载请求,并且被传送到客户端设备(例如,以便由浏览器102使用)。响应304b可以包括:包括主机服务器108的标识符的set-cookie头;与子服务器110相对应第一网络路径;与资源服务器112相对应第二网络路径;以及同步代码。在一些实施方式中,响应304b可以包括例如与下面的伪码相对应的代码:
在一些实施方式中,示例伪码中的GET请求可以被某些其他类型的请求所替代,诸如POST请求。
与响应304b一起被接收的同步代码可以指示客户端设备103向第一网络路径发起第一网络呼叫(例如在步骤B)。呼叫可以从子服务器110请求子应用的一个或多个组件。例如,同步代码可以指示要对子服务器110进行的请求302b1、302d1和302d2的次序。
响应304c也可以由主机服务器108来提供。例如,响应304c包括渲染主机UI组件所需的数据。
在步骤B,在响应304b在浏览器102处被接收到之后,脚本可以引起请求302b1和302b2的发出(例如并行地)。请求302b1是针对子服务器110的,用于提供将允许主应用的UI组件运行的数据。请求302b2是针对资源服务器112的,用于提供将允许主应用的UI组件被渲染的资源。进一步地,可以在步骤B1完成之后发送请求302d1和302d2。进一步地,即使在源自步骤B1的响应(例如响应304d)被接收到之前,请求302dz可以被发送到资源服务器112。
在步骤B1,例如,响应于第一网络呼叫,子服务器110可以向客户端设备103传送第二响应(例如响应304d)。响应304d可以包括例如新的set-cookie头,其包括子服务器110的标识符,使得相同子服务器110随后能够被客户端设备所呼叫。响应304d可以包括触发对资源服务器112从资源服务器112请求渲染子应用的静态用户界面元素的UI代码的后续网络呼叫的代码。
在步骤B2,所接收到的请求302b2可以引发调用GET/POST以从资源服务器112预取必要静态资源。例如,步骤B2和相关联的请求302b2可以就在步骤B1之后发生,例如,不用等待来自步骤B1的响应304d。步骤B2的结果是结果304e。
在一些实施方式中,在响应304d中,例如由子服务器110服务的数据集不包括操纵包括子应用的页面的文档对象模型(DOM)的代码。进一步地,由资源服务器112服务的代码集包括操纵页面的DOM的代码。例如,响应304d可以包括脚本代码以触发子服务器110的静态资源的下载。进一步地,响应304d可以包含用于服务器主机cookie的set-cookie头并且可以设置子服务器110的后端以保持对子服务器110的实例的粘性。
在步骤C,浏览器102使用响应304c具有渲染主机UI组件所需的数据。例如,渲染的信息可以包括与组件204-212相关联的数据。响应304c不包含与例如创建或销毁<div>标签或更新CSS的文档操纵相关的任何代码。但是,响应304c可以被用来设置窗口变量并且调用注册的用于变量的回调函数,诸如在下面的伪码中:
在步骤D,使用响应304d中的同步代码,例如,请求可以被发出到子服务器110和资源服务器112。例如,同步代码可以使用新的set-cookie头来发起到子服务器110的一个或多个附加的网络呼叫,其请求将由子应用的给定用户界面视图呈现的一个或多个数据集。进一步地,同步代码可以延迟到资源服务器112的后续网络呼叫,直到客户端设备103已经发起到子服务器110的一个或多个网络呼叫中的每个(例如,通过浏览器102发起)。例如,浏览器102可以发出请求302d1和302d2到子服务器110,并且发出请求302dz到资源服务器112。例如,同步代码可以用于延迟UI代码在例如浏览器102处的执行,直到对一个或多个附加的网络呼叫的响应被客户端设备103接收到。
在步骤D1和D2,例如,子服务器110可以分别处置请求302d1和302d2并且提供响应304f到浏览器102。例如,子服务器110可以识别应用需要的数据并且将其发送到浏览器102。在步骤DZ,例如,资源服务器112可以处置请求302dz并且提供响应304g到浏览器102。调用的次序可以是例如D1->D2>...->DZ。例如,资源服务器112识别所请求的UI数据并且响应于提供UI数据的请求。
在步骤E,响应304e(在步骤B2的执行之后接收到)可以被处理。例如,响应304e可以包含浏览器102渲染主机UI组件204-212所必需的所有资源(例如HTML组件)。
在步骤F,来自步骤D1和D2的响应304f可从子服务器110得到。响应304f可以是来自子服务器110的纯序列化的数据响应,其包含使得UI组件工作的所有必要数据。
在步骤G,例如,响应304g在步骤DZ的执行之后可获得。响应304g包含渲染与子应用相关联的UI组件的所有必要资源。在这一点,如果响应304c、304e或304f中任何一个还没有回来,系统可以等待且在渲染发生之前同步。
在一些实施方式中,在发起对子服务器110的一个或多个附加网络呼叫之前,子服务器110可以预加载与在请求子应用的一个或多个组件的第一网络呼叫中包括的信息相对应的数据集。当从客户端设备接收到请求302b1时,预加载数据集可以有效地获取数据的预先缓存。子服务器110的这个“热身”可以允许在请求302d1、302d2等等中所请求的数据可在缓存中获得,这降低了延迟。例如,在识别将由子应用使用的数据之前,不用等待接收请求302d1或302d2,当请求302b1被接收时,服务器识别且缓存该数据。因此,当请求302d1和/或302d2被接收到时,数据已经在高速存储器(即缓存)中,这使得服务器110能够比这些请求302d1和302d2被接收之后数据只被识别和传送的情况更加快速地响应接收到的请求。
图4是示出用于非版本数据的示例请求和响应的泳道图400。例如,类似于与版本数据相关联的图300,图400示出用于提供用于由多个子应用组成的主应用的数据的示例步骤。多个web组件可以被缝合在一起,例如在一个无缝用户界面202中。在图400中描述的多个web组件是有版本的,这意味着每个新版本都与旧版本后向兼容。
与图3类似,图4的元素所启用的场景可以例如开始于用户在浏览器(例如上述的浏览器102)中录入URL(例如example.com/aw/overviews)。浏览器102可以在步骤A’发出请求402a,例如页面加载请求114。混合器106可以截取和处理请求402a,例如定位URL中的“example.com/aw”且将请求402a映射到特定主机web服务器(例如主机服务器108的IP地址)。在步骤A1’,主机服务器106可以处理对于包括与主应用相关联的子应用的页面的页面加载请求。例如,主机服务器108可以将“/aw/overviews”映射到子web服务器(例如特定子服务器110)。而且,在步骤A1’,地点映射116可以被初始化,例如以便开始控制UI 101的哪些部分要被示出(以及哪些要被隐藏)。
在步骤A2’(类似于图3),响应404b可以由主机服务器108提供,以响应于页面加载请求,并且被传送到客户端设备(例如以便由浏览器102使用)。与响应304b不同,响应404b不包括set-cookie头,set-cookie头包括主机服务器108的标识符。但是,响应404b确实包括与子服务器110相对应的第一网络路径,与资源服务器112相对应的第二网络路径,以及同步代码(例如,用于同步请求,如上所述)。在一些实施方式中,响应404b可以包括与下面的伪码相对应的代码:
在一些实施方式中,如图3的例子中一样,示例代码中的GET请求可以被替换为某些其他类型的请求,诸如POST请求。
与响应404b一起所接收到的同步代码可以指示客户端设备103发起到第一网络路径的第一网络呼叫(例如在步骤B’)。该呼叫可以从子服务器110请求子应用的一个或多个组件。例如,同步代码可以指示请求402b1和402d1要针对子服务器110做出,且请求402bx和402by要针对资源服务器112做出。
响应404c还可以由主机服务器108提供。响应404c例如包括渲染主机UI组件所需的数据。
在步骤B’,在在浏览器102上接收响应404b之后,脚本可以引起请求402b1、402b2、402bx和402by的发出(例如并行)。
在步骤B1’,例如,响应于第一网络呼叫,子服务器110可以向客户端设备103传送第二响应(例如响应404d)。响应404d可以包括例如新的set-cookie头,其包括子服务器110的标识符,使得相同子服务器110能够随后被客户端设备所呼叫。
在步骤B2’,例如,子服务器110可以向客户端设备103传送响应404e。响应404e可以包括例如新的set-cookie头,其包括子服务器110的标识符,使得相同子服务器110能够随后被客户端设备所呼叫。
在步骤C’,浏览器102使用响应404c具有渲染主机UI组件所需的数据。例如,所渲染的信息可以包括与组件204-212相关联的数据。响应404c不包含与例如创建或销毁<div>标签或更新CSS的文档操纵相关的任何代码。但是,响应404c可以被用来设置窗口变量且调用注册的用于变量的回调函数,诸如在下面的代码中:
在步骤BX’,例如,资源服务器112可以处置请求402bx并提供响应404f到浏览器102。在步骤BY’,例如,资源服务器112可以处置请求402by并且提供响应404g到浏览器102。调用的次序可以是例如B1’->B2’->BX’->BY’。
在步骤D’,使用响应404d中的代码,例如,请求可以被发出到子服务器110和资源服务器112。例如,同步代码可以使用新的set-cookie头来发起到子服务器110的一个或多个附加的网络呼叫,其请求将由子应用的给定用户界面视图呈现的一个或多个数据集。
在步骤E’,响应404e(在步骤B2’的执行之后接收到)可以被处理。例如,响应404e可以包含浏览器102渲染主机UI组件204-212所必需的所有资源(例如HTML组件)。
在步骤F’,来自步骤BX’的响应404f可从子服务器110得到。在步骤G’,来自步骤BY’的响应404g可从子服务器110得到。响应404f和404g可以包含使得UI组件工作的所有必要数据。
图5是示出用于在初始加载之后加载子应用的示例请求和响应的泳道图500。例如,请求和响应可以发生在初始页面加载状态之后期间,例如,对于图3的版本示例,在主机和一个或多个子应用已经被加载之后。
图5的元素所启用的场景可以例如开始于用户执行触发在浏览器102中的URL的更新的动作时。在浏览器102的更新可以在不重新加载例如包括所有元素202、218和220a-220e的完整页面而发生的。例如,与UI组件220b相关联的子应用可以具有的映射被定义为映射到具体子服务器112的“…/given-area”。因为主机服务器108已经被联系用于应用(例如,如结合图4所述),主机服务器108不是用于重新加载页面的该场景的一部分。因此,浏览器102可以在步骤A发出请求502a1到子服务器110。
在步骤A1,子服务器110产生响应504b,其包含同步代码,以便由浏览器102用来进行对子服务器110和资源服务器112的附加请求。
在步骤B,浏览器102可以发出到子服务器110的请求502b1、502b2,且请求502bz被发送到资源服务器112。在步骤B1和B2,响应504c从子服务器110被发送到浏览器102。响应504c包含用于使得子应用的UI组件工作的所有必要数据,例如在步骤C中使用。在步骤BZ,响应504d从子服务器110被发送到浏览器102。响应504d包含在步骤D渲染子应用的UI组件的所有必要数据。
图6是示出用于在初始加载后加载子应用的示例请求和响应的泳道图600。例如,请求和响应可以发生在初始页面加载状态之后,例如,对于图4的非版本示例,在主机和一个或多个子应用已经被加载之后。
图6的元素所启用的场景可以例如开始于用户执行触发在浏览器102中的URL的更新的动作时。更新可以在不重新加载例如包括所有元素202、218和220a-220e的完整页面而发生的。例如,与UI组件220b相关联的子应用可以具有的映射被定义为映射到具体子服务器112的“…/given-area”。因为主机服务器108已经被联系用于应用(例如,如结合图4所述),主机服务器108不是用于重新加载页面的该场景的一部分。因此,浏览器102可以在步骤A’发出请求602a1和602a2到子服务器110,且请求602az被发送到资源服务器112。请求602a1、602a2和602az可以利用之前接收到的同步代码。
在步骤A1’和A2’,响应604b从子服务器110被发送到浏览器102。在步骤B’中使用的响应604b包含使得子应用的UI组件工作的所有必要数据。在步骤AZ’,响应604c从子服务器110被发送到浏览器102。在步骤C’中使用的响应604c包含渲染子应用的UI组件的所有必要数据。
图7是用于管理用于服务应用和相关联子应用的请求和响应的示例过程700的框图。可以使用特别配置的执行主应用的子应用的加载的分布式计算系统来实现过程700。例如,过程700可以使用图1的组件来实现,其包括主机服务器108、多个数据子服务器110以及资源服务器112。过程700的操作也可以被实现为在非暂时性计算机可读介质上编码的指令。分布式计算系统对指令的执行使得分布式计算系统执行过程700的操作。
对于包括子应用的页面的页面加载请求由混合器从客户端设备接收(702)。例如,如上结合图3讨论的,混合器106可以从浏览器102接收请求302a。请求可以是加载UI 200的请求,用于包括与UI组件220a-220e的控制相关联的子应用的主应用。
页面加载请求由混合器路由到主机服务器,所述主机服务器处理对于包括一个或多个子应用的页面的页面加载请求(704)。例如,如上结合图3所讨论的,混合器可以将请求302a路由到主机服务器108。
页面加载请求由主机服务器处理(706)。处理包括向客户端设备传送响应,该响应包括重新定向客户端设备到服务初始化子应用而不提供渲染子应用的用户界面所需的足够代码的数据集的子服务器的指令。该响应还包括同步代码,其防止客户端设备发起对渲染子应用的静态用户界面元素的UI代码的网络呼叫,直到客户端设备已经发起了对一个或多个子服务器的请求将由子应用的给定用户界面视图呈现的数据的一个或多个网络呼叫。例如,如上结合图3所讨论的,主机服务器108可以在步骤A2处理请求302a,包括发送响应304b到浏览器102。响应304a中所包括的同步代码可以包括当发起对子服务器110和资源服务器112的请求时使用的指令,使得UI组件220a-220e直到所需响应从资源服务器112接收到才被渲染。
在一些实施方式中,处理700进一步包括基于由主机服务器传送的指令,由给定子服务器接收在客户端设备处所发起的网络呼叫,并且向客户端设备传送在客户端设备处初始化子应用但不提供渲染子应用的用户界面所需的足够代码的数据集。例如,由子服务器110响应于所接收到的请求302d1和302d2而提供的响应304f不包括渲染相关联UI组件220a-220e所需的资源。
在一些实施方式中,过程700进一步包括由资源服务器从客户端设备接收第二网络呼叫,并且由资源服务器响应于第二网络呼叫而传送在客户端设备处与数据集组合的代码集以在客户端设备处渲染子应用的用户界面。例如,对UI组件220a-220e的渲染可以发生在从资源服务器112接收到响应304g之后。
图8是可用于作为客户端或者作为一个或多个服务器来实现本文中所述的系统和方法的计算设备800、850的框图。计算设备800想要表示各种形式的数字计算机,诸如膝上型计算机、桌面型计算机、工作站、个人数字助理、服务器、刀片式服务器、大型机(mainframes)和其他合适计算机。计算设备850旨在表示各种形式的移动设备,诸如个人数字助理、蜂窝电话、智能电话和其他类似计算设备。这里示出的组件、它们的连接和关系以及它们的功能,都只是意味着示例,且不意味着限制在本文中所述和/或所要求保护的发明的实施方式。
计算设备800包括处理器802、存储器804、存储设备806、连接到存储器804和高速扩展端口810的高速接口808、以及连接到低速总线814和存储设备806的低速接口。组件802、804、806、808、810和812中的每个都使用各种总线来互连,且可以安装在公共主板上或者以其他方式适当地安装。处理器802可以处理用于在计算设备800内执行的指令,包括存储在存储器804中或存储设备806上以在诸如耦合到高速接口808的显示器816的外部输入/输出设备上显示GUI的图形信息的指令。在其他实施方式中,多个处理器和/或多个总线可以适当地与多个存储器和存储器类型一起使用。而且,多个计算设备800可以同提供部分必要操作的每个设备连接(例如,作为服务器组、刀片式服务器的组、或者多处理器系统)。
存储器804在计算设备800内存储信息。在一个实施方式中,存储器804是计算机可读介质。在一个实施方式中,存储器804是一个或多个易失性存储器单元。在另一实施方式中,存储器804是一个或多个非易失性存储器单元。
存储设备806能够为计算设备800提供大容量存储。在一个实施方式中,存储设备806是计算机可读介质。在各种不同的实施方式中,存储设备806可以是软盘设备、硬盘设备、光盘设备、或者磁带设备、闪存存储器或其他类似固态存储器设备、或者设备阵列,包括存储区域网络中或其他配置的设备。在一个实施方式中,计算机程序产品被有形地体现在信息载体中。计算机程序产品包含指令,所述指令当被执行时,执行诸如上述的方法的一个或多个方法。信息载体是计算机或机器可读介质,诸如存储器804、存储设备806或处理器802上的存储器。
高速控制器808管理计算设备800的带宽加强的操作,而低速控制器812管理较低带宽加强的操作。这样的任务分配仅是示例。在一个实施方式中,高速控制器808被耦合到存储器804、显示器816(例如,通过图形处理器或加速器),以及耦合到可以接受各种扩展卡(未示出)的高速扩展端口810。在实施方式中,低速控制器812被耦合到存储设备806和低速扩展端口814。低速扩展端口,其可能包括各种通信端口(例如USB、以太网、无线以太网)可以例如通过网络适配器,被耦合到一个或多个输入/输出设备,诸如键盘、指针设备、扫描仪或诸如交换机或路由器的联网设备。
计算设备800可以以多种不同形式来实现,如图中所示。例如,其可以被实现为标准服务器820,或者在这样的服务器的组中多次。其还可以被实现为机架式服务器系统824的一部分。此外,其可以被实现为个人计算机,诸如笔记本计算机822。替选地,来自计算设备800的组件可以与诸如设备850的移动设备中的其他组件(未示出)相组合。每个这样的设备可以包含一个或多个计算设备800、850,且整个系统可以由互相通信的多个计算设备800、850构成。
除了其他组件以外,计算设备850包括处理器852、存储器864、诸如显示器854的输入/输出设备、通信接口866和收发器868。设备850还可以被提供有存储设备,诸如微驱动器或其他设备,以提供附加存储。组件850、852、864、854、866和868中的每个使用各种总线来互连,且若干组件可以安装在公共主板上或以其他方式适当地安装。
处理器852可以处理用于在计算设备850内执行的指令,包括存储在存储器864中的指令。处理器还可以包括独立的模拟和数字处理器。例如,处理器可以提供设备850的其他组件的协同,诸如用户界面的控制,设备850对应用的运行,以及设备850的无线通信。
处理器852可以与用户通过控制接口858和耦合到显示器854的显示接口856进行通信。显示器854可以是例如TFT LCD显示器或OLED显示器,或者其他合适显示技术。显示接口856可以包括用于驱动显示器854呈现图形和其他信息给用户的适当电路。控制接口858可以从用户接收命令且将其转换以便提交给处理器852。此外,外部接口862可以与处理器852相通信地提供,以便使得设备850能够与其他设备进行近场通信。例如,外部接口862可以提供有线通信(例如,经由插接流程)或者无线通信(例如经由或其他这样的技术)。
存储器864在计算设备850内存储信息。在一个实施方式中,存储器864是计算机可读介质。在一个实施方式中,存储器864是一个或多个易失性存储器单元。在另一实施方式中,存储器864是一个或多个非易失性存储器单元。扩展存储器874也可被提供且通过扩展接口872连接到设备850,扩展接口872可以包括例如SIMM卡接口。这样的扩展存储器874可以为设备850提供额外存储空间,或者还可以为设备850存储应用或其他信息。具体地,扩展存储器874可以包括指令来执行或补充上述的过程,且还可以包括安全信息。因此,例如,扩展存储器874可以被提供作为设备850的安全模块,且可以用准许设备850的安全使用的指令来编程。此外,安全应用可以经由SIMM卡与附加信息一起提供,诸如以不能被破解的方式在SIMM上放置识别信息。
存储器可以包括例如闪存存储器和/或MRAM存储器,如下面所讨论的。在一个实施方式中,计算机程序产品被有形地体现在信息载体中。计算机程序产品包含指令,指令当被执行时执行一个或多个方法,诸如上述的方法。信息载体是计算机或机器可读介质,诸如存储器864、扩展存储器874或者处理器852上的存储器。
设备850可以通过通信接口866无线通信,有必要时,通信接口可以包括数字信号处理电路。通信接口866可以提供在各种模式或协议下的通信,除了其他之外,诸如GSM语音呼叫、SMS、EMS或MMS消息传递、CDMA、TDMA、PDC、WCDMA、CDMA2000或者GPRS。这样的通信可以例如通过射频收发器868而发生。此外,短程通信可以诸如使用WiFi或其他这样的收发器(未示出)来发生。此外,GPS接收机模块870可以提供附加无线数据给设备850,其可以适当地通过在设备850上运行的应用而被使用。
设备850还可以使用音频编解码器860来进行听得见的通信,音频编解码器860可以从用户接收语音信息并将其转换成可使用的数字信息。音频编解码器860可以类似地为用户生成听得到的声音,诸如通过例如在设备850的电话听筒中的扬声器。这样的声音可以包括来自语音电话呼叫的声音,可以包括所记录的声音(例如语音消息、音乐文件等等)且还可以包括通过在设备850上操作的应用所生成的声音。
计算设备850可以以多种不同形式实现,如图中所示。例如,其可以被实现为蜂窝电话880。其也可以被实现为智能电话882、个人数字助理或其他类似移动设备的一部分。
这里所述的系统和技术的各种实施方式可被实现为数字电子电路、集成电路、特殊设计ASIC(专用集成电路)、计算机硬件、固件、软件和/或其组合。这些各种实施方式可以包括在包括至少一个可编程处理器的可编程系统上可执行和/或可解释的一个或多个计算机程序中的实施方式,至少一个可编程处理器可以是专用或通用的,耦合以从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,以及向存储系统、至少一个输入设备和至少一个输出设备传送数据和指令。
这些计算机程序(也被称为程序、软件、软件应用或代码)包括用于可编程处理器的机器指令,并且可以用高级流程和/或面向对象的编程语言和/或汇编/机器语言来实现。如这里所使用的,术语“机器可读介质”“计算机可读介质”指的是用于提供机器指令和/或数据给可编程处理器的任何计算机程序产品、装置和/或设备(例如磁盘、光盘、存储器、可编程逻辑设备(PLD)),包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”指的是用于提供机器指令和/或数据给可编程处理器的任何信号。
为了提供与用户的交互,这里所述的系统和技术可以在具有用于显示信息给用户的显示设备(例如CRT(阴极射线管)或LCD(液晶显示器)监视器)以及用户可以用来提供输入给计算机的键盘和指针设备(例如鼠标或轨迹球)的计算机上实现。其他种类的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈(例如视觉反馈、听觉反馈、或触觉反馈);且来自用户的输入可以以任何形式被接收,包括声学、语音、或触觉输入。
这里所述的系统和技术可以在包括后端组件(例如作为数据服务器),或者包括中间件组件(例如应用服务器),或者包括前端组件(例如具有图形用户界面或web浏览器的客户端计算机,用户可以通过web浏览器与这里所述的系统和技术的实施方式进行交互),或者这样的后端、中间件或前端组件的任意组合的计算系统中实现。系统的组件可以通过任何形式或数字数据通信的介质(例如通信网络)来互连。通信网络的示例包括局域网(“LAN”)、广域网(“WAN”)和互联网。
计算系统可以包括客户端和服务器。客户端和服务器通常互相远离且通常通过通信网络交互。由于在相应的计算机上运行且互相具有客户端-服务器关系的计算机程序而出现客户端和服务器的关系。
已经描述了本发明的多个实施例。尽管如此,将理解,可以进行各种修改而不背离本发明的精神和范围。例如,上面示出的各种形式的流程可以通过步骤被重新排序、添加或删除的方式来被使用。而且,尽管已经描述了支付系统和方法的若干应用,应该认识到,许多其他应用也在考虑中。因此,其他实施例也在所附权利要求的范围内。
Claims (20)
1.一种系统,包括:
多个服务器,每个服务器服务包括一个或多个独立子应用的主应用的独立子应用,其中:
所述一个或多个独立子应用在客户端设备处被组合以创建所述主应用的图形用户界面;
响应于由所述客户端设备发起的对多个不同服务器的多个不同网络呼叫,每个所述子应用被单独服务;以及
同步代码,所述同步代码由所述多个服务器中的一个或多个服务器来服务,防止所述客户端设备发起对渲染每个子应用的静态用户界面元素的UI代码的网络呼叫,直到所述客户端设备发起了请求将由所述子应用的给定用户界面视图呈现的数据的一个或多个网络呼叫。
2.如权利要求1所述的系统,其中,所述多个服务器包括:
主机服务器,所述主机服务器处理对于包括子应用的页面的页面加载请求;
子服务器,所述子服务器服务在不提供渲染所述子应用的用户界面所需的足够代码的情况下初始化所述子应用的数据集;
资源服务器,所述资源服务器服务与所述数据集组合来渲染所述子应用的所述用户界面的代码集;以及
混合器,所述混合器基于网络呼叫中的信息将所述网络呼叫从用户设备路由到所述主机服务器、所述子服务器和所述资源服务器中的每个。
3.如权利要求2所述的系统,其中:
由所述子服务器服务的所述数据集不包括操纵包括所述子应用的页面的文档对象模型的代码;以及
由所述资源服务器服务的所述代码集包括操纵所述页面的所述DOM的代码。
4.如权利要求1所述的系统,其中,只有在所述客户端设备已经发起对将由所述子应用的所述给定用户界面视图呈现的所有数据的所有网络呼叫之后,所述同步代码防止所述客户端设备发起对所述UI代码的网络呼叫。
5.如权利要求2所述的系统,其中,响应于页面加载请求,所述主机服务器向所述客户端设备传送第一响应,所述第一响应包括:
set-cookie头,所述set-cookie头包括所述主机服务器的标识符;
第一网络路径,所述第一网络路径与所述子服务器相对应;
第二网络路径,所述第二网络路径与所述资源服务器相对应;以及
所述同步代码。
6.如权利要求5所述的系统,其中,所述同步代码指示所述客户端设备发起对所述第一网络路径的第一网络呼叫,所述第一网络呼叫从所述子服务器请求所述子应用的一个或多个组件。
7.如权利要求6所述的系统,其中,响应于所述第一网络呼叫,所述子服务器向所述客户端设备传送第二响应,所述第二响应包括:
新set-cookie头,所述新set-cookie头包括所述子服务器的标识符,并且使得相同子服务器随后能够被所述客户端设备呼叫;以及
代码,所述代码触发对所述资源服务器的后续网络呼叫,所述后续网络呼叫从所述资源服务器请求渲染所述子应用的静态用户界面元素的所述UI代码。
8.如权利要求7所述的系统,其中,所述同步代码使用所述新set-cookie头发起对所述子服务器的一个或多个附加网络呼叫,所述一个或多个附加网络呼叫请求将由所述子应用的所述给定用户界面视图呈现的一个或多个数据集,并且其中,所述同步代码延迟对所述资源服务器的所述后续网络呼叫,直到对所述子服务器的所述一个或多个网络呼叫中的每个网络呼叫都已经被所述客户端设备发起。
9.如权利要求8所述的系统,其中,所述同步代码延迟所述UI代码的执行,直到对所述一个或多个附加网络呼叫的响应已经被所述客户端设备接收到。
10.如权利要求8所述的系统,其中,在发起对所述子服务器的所述一个或多个附加网络呼叫之前,所述子服务器预先加载与在请求所述子应用的所述一个或多个组件的所述第一网络呼叫中包括的信息相对应的数据集。
11.一种方法,包括:
由混合器从客户端设备接收对包括子应用的页面的页面加载请求;
由所述混合器将所述页面加载请求路由到处理对包括一个或多个子应用的页面的页面加载请求的主机服务器;以及
由所述主机服务器处理所述页面加载请求,包括:
向所述客户端设备传送响应,所述响应包括:
指令,所述指令将所述客户端设备重新定向到子服务器,所述子服务器服务在不提供渲染所述子应用的用户界面所需的足够代码的情况下初始化所述子应用的数据集;以及
同步代码,所述同步代码防止所述客户端设备发起对渲染所述子应用的静态用户界面元素的UI代码的网络呼叫,直到所述客户端设备已经发起了对一个或多个子服务器的一个或多个网络呼叫,所述一个或多个网络呼叫请求将由所述子应用的给定用户界面视图呈现的数据。
12.如权利要求11所述的方法,进一步包括:
由给定子服务器接收基于所述主机服务器所传送的所述指令在客户端设备处发起的网络呼叫;以及
向所述客户端设备传送在所述客户端设备处在不提供渲染所述子应用的所述用户界面所需的足够代码的情况下初始化所述子应用的数据集。
13.如权利要求12所述的方法,进一步包括:
由资源服务器从所述客户端设备接收第二网络呼叫;以及
由所述资源服务器响应于所述第二网络呼叫而传送在所述客户端设备处与所述数据集组合以在所述客户端设备处渲染所述子应用的用户界面的代码集。
14.如权利要求13所述的方法,其中:
由所述子服务器传送的所述数据集不包括操纵包括所述子应用的页面的文档对象模型的代码;以及
由所述资源服务器传送的所述代码集包括操纵所述页面的所述DOM的代码。
15.如权利要求11所述的方法,其中,由所述主机传送的所述响应包括:
set-cookie头,所述set-cookie头包括所述主机服务器的标识符;
第一网络路径,所述第一网络路径与所述子服务器相对应;
第二网络路径,所述第二网络路径与所述资源服务器相对应;以及
所述同步代码。
16.一种编码有计算机程序的非暂时性计算机存储介质,所述程序包括指令,所述指令在被分布式计算系统执行时使得所述分布式计算系统执行操作,所述操作包括:
由混合器从客户端设备接收对包括子应用的页面的页面加载请求;
由所述混合器将所述页面加载请求路由到处理对包括一个或多个子应用的页面的页面加载请求的主机服务器;以及
由所述主机服务器处理所述页面加载请求,包括:
向所述客户端设备传送响应,所述响应包括:
指令,所述指令将所述客户端设备重新定向到子服务器,所述子服务器服务在不提供渲染所述子应用的用户界面所需的足够代码的情况下初始化所述子应用的数据集;以及
同步代码,所述同步代码防止所述客户端设备发起对渲染所述子应用的静态用户界面元素的UI代码的网络呼叫,直到所述客户端设备已经发起了对一个或多个子服务器的一个或多个网络呼叫,所述一个或多个网络呼叫请求将由所述子应用的给定用户界面视图呈现的数据。
17.如权利要求16所述的非暂时性计算机存储介质,所述操作进一步包括:
由给定子服务器接收基于所述主机服务器所传送的所述指令在客户端设备处发起的网络呼叫;以及
向所述客户端设备传送在所述客户端设备处在不提供渲染所述子应用的所述用户界面所需的足够代码的情况下初始化所述子应用的数据集。
18.如权利要求17所述的非暂时性计算机存储介质,所述操作进一步包括:
由资源服务器从所述客户端设备接收第二网络呼叫;以及
由所述资源服务器响应于所述第二网络呼叫而传送在所述客户端设备处与所述数据集组合以在所述客户端设备处渲染所述子应用的用户界面的代码集。
19.如权利要求18所述的非暂时性计算机存储介质,其中:
由所述子服务器传送的所述数据集不包括操纵包括所述子应用的页面的文档对象模型的代码;以及
由所述资源服务器传送的所述代码集包括操纵所述页面的所述DOM的代码。
20.如权利要求16所述的非暂时性计算机存储介质,其中,由所述主机传送的所述响应包括:
set-cookie头,所述set-cookie头包括所述主机服务器的标识符;
第一网络路径,所述第一网络路径与所述子服务器相对应;
第二网络路径,所述第二网络路径与所述资源服务器相对应;以及
所述同步代码。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662311827P | 2016-03-22 | 2016-03-22 | |
US62/311,827 | 2016-03-22 | ||
US15/236,804 | 2016-08-15 | ||
US15/236,804 US10382518B2 (en) | 2016-03-22 | 2016-08-15 | Low latency applications using multiple servers |
PCT/US2016/048423 WO2017164921A1 (en) | 2016-03-22 | 2016-08-24 | Low latency applications using multiple servers |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107430514A true CN107430514A (zh) | 2017-12-01 |
CN107430514B CN107430514B (zh) | 2021-02-05 |
Family
ID=59897087
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680004423.8A Active CN107430514B (zh) | 2016-03-22 | 2016-08-24 | 使用多服务器的低延迟应用 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10382518B2 (zh) |
EP (1) | EP3420447B1 (zh) |
CN (1) | CN107430514B (zh) |
WO (1) | WO2017164921A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111198739A (zh) * | 2019-12-30 | 2020-05-26 | 广州市百果园信息技术有限公司 | 一种应用视图的渲染方法、装置、设备和存储介质 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108108205B (zh) * | 2016-11-25 | 2019-07-05 | 腾讯科技(深圳)有限公司 | 应用程序页面处理方法和装置 |
CN108196930B (zh) * | 2018-01-18 | 2020-04-03 | 腾讯科技(深圳)有限公司 | 应用程序处理方法、装置、存储介质和计算机设备 |
US11625806B2 (en) * | 2019-01-23 | 2023-04-11 | Qualcomm Incorporated | Methods and apparatus for standardized APIs for split rendering |
KR20210055387A (ko) | 2019-11-07 | 2021-05-17 | 삼성전자주식회사 | 컨텍스트에 기반하여 애플리케이션을 제공하는 서버 및 그 제어 방법 |
CN113420237A (zh) * | 2021-05-21 | 2021-09-21 | 北京沃东天骏信息技术有限公司 | 一种信息处理方法及装置、存储介质 |
CN113391855A (zh) * | 2021-06-18 | 2021-09-14 | 北京沃东天骏信息技术有限公司 | 一种信息处理方法及装置、存储介质 |
CN114401320A (zh) * | 2021-12-14 | 2022-04-26 | 杭州趣链科技有限公司 | 子应用访问方法、系统、区块链平台、网关及存储介质 |
US12045587B2 (en) * | 2022-01-18 | 2024-07-23 | Dell Products L.P. | Controlling visibilty of UI regions in continuous integration environment |
CN117149468A (zh) * | 2023-10-30 | 2023-12-01 | 建信金融科技有限责任公司 | 一种资源访问方法、装置、电子设备及计算机可读介质 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6539435B2 (en) * | 1995-06-21 | 2003-03-25 | International Business Machines Corporation | System and method for establishing direct communication between parallel programs |
US20030145305A1 (en) * | 2001-11-16 | 2003-07-31 | Mario Ruggier | Method for developing and managing large-scale web user interfaces (WUI) and computing system for said WUI |
CN1446333A (zh) * | 2000-06-12 | 2003-10-01 | 普里沃克斯(控股)有限公司 | 控制应用软件用户界面显示的系统 |
US7047485B1 (en) * | 1999-11-10 | 2006-05-16 | International Business Machines Corporation | Intelligent pre-caching on a network |
US20070101258A1 (en) * | 2005-10-14 | 2007-05-03 | Ebay Inc. | Asynchronously loading dynamically generated content across multiple internet domains |
US20070169066A1 (en) * | 2005-11-17 | 2007-07-19 | Nielsen Spencer J | System and method for an extensible 3D interface programming framework |
CN101098315A (zh) * | 2006-06-27 | 2008-01-02 | 国际商业机器公司 | 在高速低延迟数据通信环境中计算机数据通信方法和系统 |
CN101984778A (zh) * | 2008-01-26 | 2011-03-09 | 思杰系统有限公司 | 用于细粒度策略驱动的cookie代理的系统和方法 |
US20120110435A1 (en) * | 2003-11-24 | 2012-05-03 | Nigel Green | Updating the display of a page with predictively downloaded content |
US20120159308A1 (en) * | 2010-12-17 | 2012-06-21 | Erick Tseng | Customization of Mobile Applications Using Web-Based Technology |
US20130007114A1 (en) * | 2009-04-15 | 2013-01-03 | Wee Sewook | Method and system for client-side scaling of web server farm architectures in a cloud data center |
CN102929701A (zh) * | 2012-10-17 | 2013-02-13 | 北京搜狐新媒体信息技术有限公司 | 一种批量虚拟机的调度方法及装置 |
US20130117845A1 (en) * | 2011-11-07 | 2013-05-09 | Qualcomm Incorporated | Encoding labels in values to capture information flows |
CN104541245A (zh) * | 2012-06-21 | 2015-04-22 | 谷歌公司 | 移动应用管理 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06259115A (ja) | 1993-03-04 | 1994-09-16 | Matsushita Electric Ind Co Ltd | プログラマブルコントローラ |
JP2002142240A (ja) | 2000-11-02 | 2002-05-17 | Matsushita Electric Ind Co Ltd | 構内交換装置およびそのプログラム管理方法 |
US7634755B2 (en) | 2004-07-13 | 2009-12-15 | International Business Machines Corporation | Application splitting for network edge computing |
US9405555B2 (en) | 2008-05-23 | 2016-08-02 | Microsoft Technology Licensing, Llc | Automated code splitting and pre-fetching for improving responsiveness of browser-based applications |
US20120137201A1 (en) * | 2010-11-30 | 2012-05-31 | Alcatel-Lucent Usa Inc. | Enabling predictive web browsing |
US8799889B2 (en) | 2011-05-09 | 2014-08-05 | International Business Machines Corporation | Application downloading |
KR101399473B1 (ko) | 2012-08-13 | 2014-05-28 | (주)투비소프트 | 다중 프로세싱을 이용한 렌더링 처리 장치 및 방법 |
CN103268284B (zh) | 2013-05-14 | 2017-01-18 | 北京控制工程研究所 | 一种星敏感器在轨维护方法 |
US9652554B2 (en) | 2013-12-26 | 2017-05-16 | Facebook, Inc. | Systems and methods for adding users to a networked computer system |
-
2016
- 2016-08-15 US US15/236,804 patent/US10382518B2/en active Active
- 2016-08-24 CN CN201680004423.8A patent/CN107430514B/zh active Active
- 2016-08-24 WO PCT/US2016/048423 patent/WO2017164921A1/en active Application Filing
- 2016-08-24 EP EP16760865.2A patent/EP3420447B1/en active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6539435B2 (en) * | 1995-06-21 | 2003-03-25 | International Business Machines Corporation | System and method for establishing direct communication between parallel programs |
US7047485B1 (en) * | 1999-11-10 | 2006-05-16 | International Business Machines Corporation | Intelligent pre-caching on a network |
CN1446333A (zh) * | 2000-06-12 | 2003-10-01 | 普里沃克斯(控股)有限公司 | 控制应用软件用户界面显示的系统 |
US20030145305A1 (en) * | 2001-11-16 | 2003-07-31 | Mario Ruggier | Method for developing and managing large-scale web user interfaces (WUI) and computing system for said WUI |
US20120110435A1 (en) * | 2003-11-24 | 2012-05-03 | Nigel Green | Updating the display of a page with predictively downloaded content |
US20070101258A1 (en) * | 2005-10-14 | 2007-05-03 | Ebay Inc. | Asynchronously loading dynamically generated content across multiple internet domains |
US20070169066A1 (en) * | 2005-11-17 | 2007-07-19 | Nielsen Spencer J | System and method for an extensible 3D interface programming framework |
CN101098315A (zh) * | 2006-06-27 | 2008-01-02 | 国际商业机器公司 | 在高速低延迟数据通信环境中计算机数据通信方法和系统 |
CN101984778A (zh) * | 2008-01-26 | 2011-03-09 | 思杰系统有限公司 | 用于细粒度策略驱动的cookie代理的系统和方法 |
US20130007114A1 (en) * | 2009-04-15 | 2013-01-03 | Wee Sewook | Method and system for client-side scaling of web server farm architectures in a cloud data center |
US20120159308A1 (en) * | 2010-12-17 | 2012-06-21 | Erick Tseng | Customization of Mobile Applications Using Web-Based Technology |
US20130117845A1 (en) * | 2011-11-07 | 2013-05-09 | Qualcomm Incorporated | Encoding labels in values to capture information flows |
CN104541245A (zh) * | 2012-06-21 | 2015-04-22 | 谷歌公司 | 移动应用管理 |
CN102929701A (zh) * | 2012-10-17 | 2013-02-13 | 北京搜狐新媒体信息技术有限公司 | 一种批量虚拟机的调度方法及装置 |
Non-Patent Citations (2)
Title |
---|
DENIS RYABOV ET AL: "Redefining Lazy Loading With Lazy Load XT", 《HTTPS://WWW.SMASHINGMAGAZINE.COM/2015/02/REDEFINING-LAZY-LOADING-WITH-LAZY-LOAD-XT/》 * |
QWE112: "分页(GUI)", 《HTTPS://EN.WIKIPEDIA.ORG/W/INDEX.PHP?TITLE=TAB_ (GUI)& OLDID=694224301》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111198739A (zh) * | 2019-12-30 | 2020-05-26 | 广州市百果园信息技术有限公司 | 一种应用视图的渲染方法、装置、设备和存储介质 |
CN111198739B (zh) * | 2019-12-30 | 2023-08-15 | 广州市百果园信息技术有限公司 | 一种应用视图的渲染方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107430514B (zh) | 2021-02-05 |
US10382518B2 (en) | 2019-08-13 |
US20170279869A1 (en) | 2017-09-28 |
EP3420447A1 (en) | 2019-01-02 |
WO2017164921A1 (en) | 2017-09-28 |
EP3420447B1 (en) | 2022-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107430514A (zh) | 使用多服务器的低延迟应用 | |
CN110795195B (zh) | 一种网页渲染方法、装置、电子设备及存储介质 | |
CN112000348B (zh) | 服务灰度发布的控制方法、装置、计算机设备 | |
US11303729B2 (en) | Virtual workspace experience visualization and optimization | |
US20030177198A1 (en) | Information providing method, server, program, and storage medium | |
US11695582B2 (en) | Method, system, and non-transitory computer-readable record medium for providing multiple group calls in one chatroom | |
US20230364516A1 (en) | Methods and apparatuses for creating team in virtual scene and joining team in virtual scene | |
KR102136474B1 (ko) | 가상 세션에서의 클라이언트 측 키보드 레이아웃과 서버 측 키보드 레이아웃의 동기화 | |
CN109885355A (zh) | 一种应用启动方法及相关装置 | |
US20150088974A1 (en) | Method and System of Application Development for Multiple Device Client Platforms | |
CN114500481B (zh) | 业务请求处理方法、系统和装置 | |
US6598073B2 (en) | Processing common work using flexible command strings | |
CN108052377B (zh) | 基于云的输入处理方法、装置、服务器和存储介质 | |
WO2023169193A1 (zh) | 用于生成智能合约的方法和装置 | |
US9577967B2 (en) | Method and system for managing an informational site using a social networking application | |
CN112614049A (zh) | 图像处理方法、装置、存储介质以及终端 | |
CN104980473B (zh) | Ui资源加载方法和系统 | |
CN112764746A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
US10291743B2 (en) | Configuring service endpoints in native client applications | |
US11258838B2 (en) | Method, system, and non-transitory computer readable record medium for processing chatroom based on usage | |
CN108289056A (zh) | 分享动态图表的方法、装置以及计算设备 | |
CN112269741A (zh) | 应用程序兼容性测试方法及相关设备 | |
WO2024179191A1 (zh) | 访问虚拟世界应用的方法及相关产品 | |
JP2000222320A (ja) | Wwwサーバ・クライアント・システムにおけるデータベース・セッション管理方法およびこれを用いるサーバ・クライアント・システム | |
CN115022053A (zh) | 访问区块链网络的方法、装置和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: American California Applicant after: Google limited liability company Address before: American California Applicant before: Google Inc. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |