US20140122658A1 - Systems and Methods for Accelerating Remote Data Retrieval Via Peer Nodes - Google Patents

Systems and Methods for Accelerating Remote Data Retrieval Via Peer Nodes Download PDF

Info

Publication number
US20140122658A1
US20140122658A1 US13/665,637 US201213665637A US2014122658A1 US 20140122658 A1 US20140122658 A1 US 20140122658A1 US 201213665637 A US201213665637 A US 201213665637A US 2014122658 A1 US2014122658 A1 US 2014122658A1
Authority
US
United States
Prior art keywords
file
client node
peer client
peer
network
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
US13/665,637
Other versions
US9032050B2 (en
Inventor
Edward Scarlett Haeger
Michael Cenname
Andrew Skowronski
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.)
EMC Corp
VMware LLC
Original Assignee
VMware LLC
Mozy Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by VMware LLC, Mozy Inc filed Critical VMware LLC
Priority to US13/665,637 priority Critical patent/US9032050B2/en
Assigned to VMWARE, INC. reassignment VMWARE, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CENNAME, MICHAEL, HAEGER, EDWARD SCARLETT, SKOWRONSKI, ANDREW
Publication of US20140122658A1 publication Critical patent/US20140122658A1/en
Application granted granted Critical
Publication of US9032050B2 publication Critical patent/US9032050B2/en
Assigned to VMWARE INC., MOZY, INC. reassignment VMWARE INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: VMWARE, INC.
Assigned to EMC IP Holding Company LLC reassignment EMC IP Holding Company LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MOZY, INC.
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • 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/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • 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
    • 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/104Peer-to-peer [P2P] networks
    • H04L67/1087Peer-to-peer [P2P] networks using cross-functional networking aspects
    • H04L67/1091Interfacing with client-server systems or between P2P systems

Definitions

  • a cloud storage service enables a user to upload files to a cloud storage server for centralized storage in a remote storage location (i.e., in “the cloud”). Once the service has stored the files in the cloud, the user can download/synchronize the files from the cloud storage server to local storage on each of the user's computing devices.
  • Some cloud storage services automatically synchronize data between the cloud storage server and a user's computing devices in a manner that causes each computing device to maintain, in local storage, a complete and up-to-date copy of each of the user's cloud-stored files.
  • this configuration referred to as a “fully synced” configuration
  • the user always has local access to the latest versions of his/her files, from every computing device participating in the synchronization arrangement.
  • cloud storage services allow a user to download cloud-stored files to his/her computing devices on-demand.
  • this configuration referred to as an “on-demand” configuration
  • a particular computing device only downloads a file from the cloud storage server to local storage when the user explicitly requests the file via that device.
  • the computing device can then cache the downloaded file locally for future access (until, e.g., a newer version of the file becomes available on the cloud storage server).
  • the two approaches above have different advantages and disadvantages, and thus neither is an ideal solution for accessing cloud-stored data.
  • a user With the fully synced configuration, a user will typically not experience any network delay when trying to access cloud-stored files on his/her computing devices because the user's computing devices store synchronized copies of the files locally. Further, the user can access the files while offline. However, the locally stored files can potentially consume a large amount of local storage space on each computing device.
  • the on-demand configuration minimizes consumption of local storage space since a computing device only downloads files from the cloud storage server that a user explicitly requests. However, the user may experience significant latency at the time of accessing a file due to the download process, particularly if the network connection between the computing device and the cloud storage server is slow or if the file is large.
  • a method for accelerating remote data retrieval includes generating, by a client node, a listing of files associated with a user account, where the listing includes one or more files that are stored remotely on a server system without being synchronized to local storage of the client node, and where the server system is communicatively coupled with the client node via a first network.
  • the method further includes receiving, by the client node, a request to access a file from the listing and determining whether the file is stored locally on the client node. If the file is not stored locally on the client node, the client node discovers one or more peer client nodes that are coupled with the client node via a second network and determines whether the file is stored locally on any of the peer client nodes.
  • the client node retrieves the file from the peer client node over the second network. If the file is not stored locally on any of the peer client nodes, the client node retrieves the file from the server system over the first network.
  • FIG. 1 illustrates a system environment according to one embodiment.
  • FIG. 2 illustrates a process performed by a client node for accelerating remote data retrieval according to one embodiment.
  • FIG. 3 illustrates a process performed by a local download component of a client node for downloading data from a peer client node according to one embodiment.
  • Certain embodiments provide techniques for accelerating the on-demand downloading of cloud-stored data by a client node (e.g., a user's computing device) via one or more peers of the client node. For example, upon receiving a request to access a cloud-stored file, the client node can first check whether the cloud-stored file is stored locally on a peer client node that is connected to the client node via, e.g., a local area network (LAN). If file is stored locally on the peer client node, the client node can download the file from the peer client node over the LAN, rather than from a cloud storage server over a slower Internet or wide area network (WAN) connection.
  • LAN local area network
  • the client node may maintain the benefits of on-demand downloading (e.g., low local storage space consumption), while at the same time mitigating network latency that the client node may experience at the time of download. This can be particularly useful if the client node is a device that cannot accommodate a large amount of local storage, such as a smartphone, tablet, or other handheld computing device.
  • FIG. 1 illustrates a system environment 100 according to one embodiment.
  • system environment 100 includes two client nodes ( 102 and 104 ) that are communicatively coupled to each other via a first network such as LAN 106 .
  • LAN 106 can be a wired (e.g., Ethernet over twisted pair cabling) and/or a wireless (e.g., Wi-Fi) network.
  • system environment 100 includes a cloud storage server 108 communicatively coupled with client nodes 102 and 104 via a second network such as a WAN or the Internet ( 110 ).
  • the second network coupling cloud storage server 108 with client nodes 102 and 104 can be any other type of network, such as another LAN.
  • FIG. 1 depicts two client nodes and one cloud storage server, one of ordinary skill in the art will appreciate that alternative embodiments can include any number of these entities.
  • Cloud storage server 108 can be a computer system that provides cloud storage services to various clients such as client nodes 102 and 104 .
  • cloud storage server 108 can be public server that provides cloud storage services to the general public.
  • cloud storage server 108 can be a private server that provides cloud storage services to members of a private domain, such as a corporate intranet.
  • cloud storage server 108 includes a server application (server app) 112 and server storage 114 .
  • Server application 112 can be implemented as a custom application or a web-based application, and can interact with client components (e.g., client applications (client apps) 116 and 118 ) of client nodes 102 and 104 to enable various cloud storage management functions.
  • client applications client apps
  • server application 112 can receive user files that are uploaded from client nodes 102 and 104 via client applications 116 and 118 and store the files in server storage 114 (thereby placing the files in “the cloud”).
  • Server application 112 can also facilitate the downloading and/or synchronization of cloud-stored files to storage components that are local to client nodes 102 and 104 (e.g., client storage 120 and 122 ).
  • Server storage 114 can be implemented using any type or combination of data storage devices known in the art. Although FIG. 1 depicts server storage 114 as being part of cloud storage server 108 , in alternative embodiments, a machine that is separate from cloud storage server 108 (e.g., a dedicated database server) can host server storage 114 .
  • a machine that is separate from cloud storage server 108 e.g., a dedicated database server
  • Client nodes 102 and 104 can be hardware and/or software-based entities that end-users can operate to access the cloud storage services exposed by cloud storage server 108 .
  • client nodes 102 and 104 can include computing devices, such as a desktop computer, a laptop computer, a personal digital assistant (PDA), a smartphone, a tablet, or the like.
  • client nodes 102 and 104 can include virtual machines (VMs) running on one or more underlying physical computer systems (not shown).
  • VMs virtual machines
  • client nodes 102 and 104 each include a client application 116 / 118 and client storage 120 / 122 .
  • Client application 116 / 118 can be implemented as a native client or a web-based client, and can interact with server application 112 to facilitate the management of cloud-stored data.
  • Client storage 120 / 122 can include, e.g., a hard disk, flash memory card/drive, or any other type of non-volatile memory locally resident on client node 102 / 104 .
  • Client storage 120 / 122 can store user files that client application 116 / 118 uploads to cloud storage server 108 , as well as user files that client application 116 / 118 downloads and/or synchronizes from cloud storage server 108 .
  • client nodes 102 and 104 both provide access to the cloud-stored files of a common user (“user A”).
  • user A the manner in which client nodes 102 and 104 download or synchronize user A's cloud-stored files differ.
  • FIG. 1 shows client node 102 as being “fully synced” with respect to user A.
  • client application 116 of client node 102 interoperates with server application 112 to automatically synchronize all of user A's cloud-stored files from server storage 114 to client storage 120 , thereby causing client node 102 to maintain, at all times (or most of the time), a complete and up-to-date copy of each file in client storage 120 .
  • FIG. 1 shows client node 104 as being not fully synced with respect to user A.
  • client application 118 of client node 104 does not automatically synchronize all of user A's cloud-stored files from server storage 114 to client storage 122 . Instead, one or more of user A's cloud-stored files remain unsynchronized (i.e., stored in server storage 114 , without having a corresponding local copy stored in client storage 122 ).
  • Client node 104 can download these unsynchronized files on-demand. For instance, if user A wishes to access an unsynchronized file via client node 104 , user A can explicitly request that file.
  • client node 104 can download the file from cloud storage server 108 over WAN/Internet 110 to client storage 122 , where the file can be accessed by user A and cached for future use.
  • client node 104 can occasionally purge client storage 122 of files that have been downloaded and cached in this manner to limit the amount of local storage space that is consumed by cached files. This purging process can delete cached files based on the time at which they were last accessed (with oldest-accessed files being deleted first), and can occur at predetermined time intervals or in response to a trigger event (e.g., growth of the file cache beyond a predefined maximum size).
  • client application 118 can include a filesystem abstraction layer (FAL) 124 .
  • FAL 124 acts as an intermediary between client application 118 and the local file system of client node 104 , and can generate a unified listing of user files that client node 104 stores locally (e.g., in client storage 122 ) and cloud storage server 108 stores remotely (e.g., in server storage 114 ).
  • FAL 124 can generate a unified listing of user A's files that are ( 1 ) cached in client storage 122 of client node 104 and ( 2 ) stored in server storage 114 of cloud storage server 108 (without a corresponding copy in client storage 122 ).
  • FAL 124 can then expose this unified listing of files when user A interacts with the local file system of client node 104 , thereby giving user A the impression that the remotely stored files are stored locally in client storage 122 .
  • FAL 124 can expose this unified listing of files when user A browses the contents of client storage 122 via, e.g., a file browser window (such as Windows Explorer, OSX Finder, etc.), or when user A attempts to access a file via a file open dialog window.
  • FAL 124 can also expose this unified listing of files within client application 118 .
  • FAL 124 can determine whether the file is actually stored locally or remotely.
  • FAL 124 can then transparently retrieve the file from the appropriate local or remote location.
  • FAL 124 can be implemented using a virtual file system (VFS) framework that is built into the OS running on client node 104 , such as the Filesystem in Userspace (FUSE) framework that is built into Linux and UNIX-based OSs.
  • FAL 124 can be implemented using any type of application-level or OS-level mechanism that allows for the unified presentation and retrieval of locally stored and remotely stored files.
  • one benefit of the “on-demand” configuration of client node 104 is that this on-demand configuration minimizes local storage consumption because client node 104 only downloads files from cloud storage server 108 over WAN/Internet 110 that user A explicitly requests.
  • this download process can be slow, particularly if the files are large. This can cause user A to experience significant latency at the time of requesting/accessing a cloud-stored file via client node 104 .
  • client application 118 can further include a local download component 126 .
  • Local download component 126 can leverage the relatively high-speed LAN connection between client node 104 and client node 102 to accelerate client node 104 ′s retrieval of cloud-stored files. For example, assume client node 104 receives, from user A, a request to access a cloud-stored file that has not been cached locally in client storage 120 . Rather than initiating a download of the file from cloud storage server 108 over WAN/Internet 110 , FAL 124 can invoke local download component 126 .
  • Local download component 126 can discover one or more other client nodes on LAN 106 (referred to as “peer client nodes”) and determine that one of the peer client nodes—for instance, fully synced client node 102 —has a local copy of the requested file. Local download component 126 can then download the file directly from client node 102 over LAN 106 , thereby obviating the need to download the file from cloud storage server 108 over WAN/Internet 110 .
  • peer client nodes client nodes on LAN 106
  • local download component 126 can substantially reduce the latency that user A experiences at the time of requesting a cloud-stored file via client node 104 , since downloading the file from fully synched client node 102 over LAN 106 will generally be substantially faster than downloading the file from cloud storage server 108 over WAN/Internet 110 .
  • the consumption of local storage 122 can be kept low, since client node 104 remains in an on-demand (rather than fully synced) configuration.
  • client node 104 can be implemented using a smartphone, a tablet, or some other type of handheld computing device.
  • FIG. 2 illustrates a process 200 that can be performed by client application 118 of client node 104 (and its subcomponents FAL 124 and local download component 126 ) for accelerating on-demand retrieval of cloud-stored files according to one embodiment.
  • FAL 124 can generate a listing of files associated with a user (or user account). As noted with respect to FIG. 1 , this listing can be a unified listing that includes ( 1 ) the subset of the user's files that is cached locally in client storage 122 of client node 104 , and ( 2 ) the subset of the user's files that is stored remotely in server storage 114 of cloud storage server 108 , without having corresponding local copies in client storage 122 .
  • FAL 124 can cause this listing to be presented (via, e.g., client application 118 or some other component/application running on client node 104 ) (e.g., file browser window, file open dialog, etc.)) to the user (block 204 ).
  • client application 118 or some other component/application running on client node 104
  • file browser window e.g., file open dialog, etc.
  • client node 104 can receive a request to access a file in the listing. In one embodiment, this request can be received from the user in response to the file listing presented at block 204 . In other embodiments, the request can be received from an automated/programmatic process running on client node 104 .
  • FAL 124 can determine whether or not client node 104 has stored the requested file locally (e.g., cached in client storage 122 ). If the requested file is available locally, FAL 124 can pass a handle to the locally stored file to the requesting application (e.g., client application 118 ) (block 218 ). The requesting application can then open or otherwise access the file (block 220 ) and process 200 can end (or loop back to block 206 to handle additional file requests from the user).
  • the requesting application e.g., client application 118
  • FAL 124 (or client application 118 ) can invoke local download component 126 (block 210 ).
  • Local download component 126 can discover one or more peer client nodes that are connected to client node 104 over LAN 106 (block 212 ).
  • a “peer client node” is any type of network entity that a target client node (e.g., client node 104 ) can access via an appropriate communication protocol. In the embodiment of FIG. 1 , one such peer client node is client node 102 .
  • Local download component 126 can then attempt to download the requested file from one of the discovered peer client nodes (block 212 ).
  • FIG. 3 illustrates a process 300 that can be performed by local download component 126 within the context of block 212 of FIG. 2 .
  • local download component 126 can invoke a peer discovery protocol for discovering peer client nodes of client node 104 on LAN 106 .
  • the peer discovery protocol can be a standard IP network configuration/discovery protocol, such as the BonjourTM protocol developed by Apple, Inc.
  • the peer discovery protocol can be a proprietary protocol.
  • local download component 126 can enter a loop for each discovered peer client node.
  • local download component 126 can establish a connection with the current peer client node and authenticate the peer client node (blocks 306 , 308 ).
  • This authentication process can include determining whether the peer client node is configured to access the same cloud storage server as client node 104 (e.g., cloud storage server 108 ), and whether the peer client node is authorized to access the cloud-stored files of the current user.
  • local download component 126 can transmit a download request for the user-requested file to the peer client node (block 310 ).
  • the download request can include, e.g., an identifier that uniquely identifies the file.
  • the peer client node can determine whether the requested file is stored locally on the peer client node.
  • local download component 126 can receive a copy of the file from the peer client node over LAN 106 , cache the file in client storage 122 , and return a handle to the locally cached file to VFS 124 (block 318 ). This outcome will typically occur if the peer client node is a fully synced node (e.g., client node 102 of FIG. 1 ), since such fully synced nodes will generally always maintain a synchronized copy of each of the user's cloud-stored files in client storage.
  • a fully synced node e.g., client node 102 of FIG. 1
  • local download component 126 can reach the end of the current loop iteration (block 314 ) and return to block 304 to process the next discovered peer client node. If local download component 126 loops through all of the discovered peer client nodes without finding any peer client node that has locally stored the requested file, local download component 126 can return an indication to VFS 124 that the file could not be downloaded locally (block 316 ).
  • VFS 124 can determine whether local download component 126 has successfully downloaded the requested file from a peer client node (by virtue of the information local download component 126 returns to VFS 124 at blocks 316 and 318 ). If VFS 124 receives an indication from local download component 126 that the file could not be downloaded locally per block 316 , VFS 124 can download the file from cloud storage server 108 over WAN/Internet 110 . Process 200 can then proceed to blocks 218 and 220 , whereby client application 118 opens or accesses the file and makes the file available to the user.
  • process 200 can proceed directly to blocks 218 and 220 , without going through the potentially slow process of downloading the file over WAN/Internet 110 . In this manner, the user may perceive substantially improved latency at the time of requesting and accessing the file. Process 200 can subsequently end (or loop back to block 206 to handle additional file requests from the user).
  • the various embodiments described herein may employ various computer-implemented operations involving data stored in computer systems. For example, these operations may require physical manipulation of physical quantities—usually, though not necessarily, these quantities may take the form of electrical or magnetic signals, where they or representations of them are capable of being stored, transferred, combined, compared, or otherwise manipulated. Further, such manipulations are often referred to in terms, such as producing, identifying, determining, or comparing. Any operations described herein that form part of one or more embodiments may be useful machine operations. In addition, one or more embodiments also relate to a device or an apparatus for performing these operations. The apparatus may be specially constructed for specific required purposes, or it may be a general purpose computer selectively activated or configured by a computer program stored in the computer.
  • various general purpose machines may be used with computer programs written in accordance with the teachings herein, or it may be more convenient to construct a more specialized apparatus to perform the required operations.
  • the various embodiments described herein may be practiced with other computer system configurations including hand-held devices, microprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like.
  • One or more embodiments may be implemented as one or more computer programs or as one or more computer program modules embodied in one or more non-transitory computer readable storage media.
  • the term non-transitory computer readable storage medium refers to any data storage device that can store data which can thereafter be input to a computer system.
  • the non-transitory computer readable media may be based on any existing or subsequently developed technology for embodying computer programs in a manner that enables them to be read by a computer.
  • non-transitory computer readable medium examples include a hard drive, network attached storage (NAS), read-only memory, random-access memory (e.g., a flash memory device), a CD (Compact Discs)—CD-ROM, a CD-R, or a CD-RW, a DVD (Digital Versatile Disc), a magnetic tape, and other optical and non-optical data storage devices.
  • NAS network attached storage
  • CD Compact Discs
  • CD-ROM Compact Discs
  • CD-R Compact Discs
  • CD-RW Compact Disc
  • DVD Digital Versatile Disc

Abstract

In one embodiment, a client node generates a listing of files associated with a user account, where the listing includes one or more files that are stored remotely on a server system without being synchronized to local storage of the client node. The client node further receives a request to access a file from the listing and determines whether the file is stored locally on the client node. If the file is not stored locally on the client node, the client node discovers peer client nodes that are coupled with the client node and determines whether the file is stored locally on any peer client node. If the file is stored locally on a peer client node, the client node retrieves the file from the peer client node. If the file is not stored locally on any peer client node, the client node retrieves the file from the server system.

Description

    BACKGROUND
  • With the proliferation of personal computing devices such as desktop/laptop computers, personal digital assistants (PDAs), smartphones, tablets, and the like, many users have adopted cloud storage services to access their data across the various computing devices they use/own. Generally speaking, a cloud storage service enables a user to upload files to a cloud storage server for centralized storage in a remote storage location (i.e., in “the cloud”). Once the service has stored the files in the cloud, the user can download/synchronize the files from the cloud storage server to local storage on each of the user's computing devices.
  • Some cloud storage services automatically synchronize data between the cloud storage server and a user's computing devices in a manner that causes each computing device to maintain, in local storage, a complete and up-to-date copy of each of the user's cloud-stored files. In this configuration (referred to as a “fully synced” configuration), the user always has local access to the latest versions of his/her files, from every computing device participating in the synchronization arrangement.
  • Other cloud storage services allow a user to download cloud-stored files to his/her computing devices on-demand. In this configuration (referred to as an “on-demand” configuration), a particular computing device only downloads a file from the cloud storage server to local storage when the user explicitly requests the file via that device. The computing device can then cache the downloaded file locally for future access (until, e.g., a newer version of the file becomes available on the cloud storage server).
  • The two approaches above have different advantages and disadvantages, and thus neither is an ideal solution for accessing cloud-stored data. With the fully synced configuration, a user will typically not experience any network delay when trying to access cloud-stored files on his/her computing devices because the user's computing devices store synchronized copies of the files locally. Further, the user can access the files while offline. However, the locally stored files can potentially consume a large amount of local storage space on each computing device. The on-demand configuration minimizes consumption of local storage space since a computing device only downloads files from the cloud storage server that a user explicitly requests. However, the user may experience significant latency at the time of accessing a file due to the download process, particularly if the network connection between the computing device and the cloud storage server is slow or if the file is large.
  • SUMMARY
  • In one embodiment, a method for accelerating remote data retrieval is provided. The method includes generating, by a client node, a listing of files associated with a user account, where the listing includes one or more files that are stored remotely on a server system without being synchronized to local storage of the client node, and where the server system is communicatively coupled with the client node via a first network. The method further includes receiving, by the client node, a request to access a file from the listing and determining whether the file is stored locally on the client node. If the file is not stored locally on the client node, the client node discovers one or more peer client nodes that are coupled with the client node via a second network and determines whether the file is stored locally on any of the peer client nodes. If the file is stored locally on a peer client node, the client node retrieves the file from the peer client node over the second network. If the file is not stored locally on any of the peer client nodes, the client node retrieves the file from the server system over the first network.
  • The following detailed description and accompanying drawings provide a better understanding of the nature and advantages of particular embodiments.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 illustrates a system environment according to one embodiment.
  • FIG. 2 illustrates a process performed by a client node for accelerating remote data retrieval according to one embodiment.
  • FIG. 3 illustrates a process performed by a local download component of a client node for downloading data from a peer client node according to one embodiment.
  • DETAILED DESCRIPTION
  • In the following description, for purposes of explanation, numerous examples and details are set forth in order to provide an understanding of various embodiments. It will be evident, however, to one skilled in the art that certain embodiments can be practiced without some of these details, or can be practiced with modifications or equivalents thereof.
  • Certain embodiments provide techniques for accelerating the on-demand downloading of cloud-stored data by a client node (e.g., a user's computing device) via one or more peers of the client node. For example, upon receiving a request to access a cloud-stored file, the client node can first check whether the cloud-stored file is stored locally on a peer client node that is connected to the client node via, e.g., a local area network (LAN). If file is stored locally on the peer client node, the client node can download the file from the peer client node over the LAN, rather than from a cloud storage server over a slower Internet or wide area network (WAN) connection. These techniques allow the client node to maintain the benefits of on-demand downloading (e.g., low local storage space consumption), while at the same time mitigating network latency that the client node may experience at the time of download. This can be particularly useful if the client node is a device that cannot accommodate a large amount of local storage, such as a smartphone, tablet, or other handheld computing device.
  • FIG. 1 illustrates a system environment 100 according to one embodiment. As shown, system environment 100 includes two client nodes (102 and 104) that are communicatively coupled to each other via a first network such as LAN 106. LAN 106 can be a wired (e.g., Ethernet over twisted pair cabling) and/or a wireless (e.g., Wi-Fi) network. In addition, system environment 100 includes a cloud storage server 108 communicatively coupled with client nodes 102 and 104 via a second network such as a WAN or the Internet (110). In alternative embodiments, the second network coupling cloud storage server 108 with client nodes 102 and 104 can be any other type of network, such as another LAN. Although FIG. 1 depicts two client nodes and one cloud storage server, one of ordinary skill in the art will appreciate that alternative embodiments can include any number of these entities.
  • Cloud storage server 108 can be a computer system that provides cloud storage services to various clients such as client nodes 102 and 104. In certain embodiments, cloud storage server 108 can be public server that provides cloud storage services to the general public. In other embodiments, cloud storage server 108 can be a private server that provides cloud storage services to members of a private domain, such as a corporate intranet.
  • As shown, cloud storage server 108 includes a server application (server app) 112 and server storage 114. Server application 112 can be implemented as a custom application or a web-based application, and can interact with client components (e.g., client applications (client apps) 116 and 118) of client nodes 102 and 104 to enable various cloud storage management functions. For example, server application 112 can receive user files that are uploaded from client nodes 102 and 104 via client applications 116 and 118 and store the files in server storage 114 (thereby placing the files in “the cloud”). Server application 112 can also facilitate the downloading and/or synchronization of cloud-stored files to storage components that are local to client nodes 102 and 104 (e.g., client storage 120 and 122).
  • Server storage 114 can be implemented using any type or combination of data storage devices known in the art. Although FIG. 1 depicts server storage 114 as being part of cloud storage server 108, in alternative embodiments, a machine that is separate from cloud storage server 108 (e.g., a dedicated database server) can host server storage 114.
  • Client nodes 102 and 104 can be hardware and/or software-based entities that end-users can operate to access the cloud storage services exposed by cloud storage server 108. In one embodiment, client nodes 102 and 104 can include computing devices, such as a desktop computer, a laptop computer, a personal digital assistant (PDA), a smartphone, a tablet, or the like. In another embodiment, client nodes 102 and 104 can include virtual machines (VMs) running on one or more underlying physical computer systems (not shown).
  • As noted above, client nodes 102 and 104 each include a client application 116/118 and client storage 120/122. Client application 116/118 can be implemented as a native client or a web-based client, and can interact with server application 112 to facilitate the management of cloud-stored data. Client storage 120/122 can include, e.g., a hard disk, flash memory card/drive, or any other type of non-volatile memory locally resident on client node 102/104. Client storage 120/122 can store user files that client application 116/118 uploads to cloud storage server 108, as well as user files that client application 116/118 downloads and/or synchronizes from cloud storage server 108.
  • In the embodiment of FIG. 1, client nodes 102 and 104 both provide access to the cloud-stored files of a common user (“user A”). However, the manner in which client nodes 102 and 104 download or synchronize user A's cloud-stored files differ. In particular, FIG. 1 shows client node 102 as being “fully synced” with respect to user A. In other words, client application 116 of client node 102 interoperates with server application 112 to automatically synchronize all of user A's cloud-stored files from server storage 114 to client storage 120, thereby causing client node 102 to maintain, at all times (or most of the time), a complete and up-to-date copy of each file in client storage 120.
  • In contrast, FIG. 1 shows client node 104 as being not fully synced with respect to user A. In other words, client application 118 of client node 104 does not automatically synchronize all of user A's cloud-stored files from server storage 114 to client storage 122. Instead, one or more of user A's cloud-stored files remain unsynchronized (i.e., stored in server storage 114, without having a corresponding local copy stored in client storage 122). Client node 104 can download these unsynchronized files on-demand. For instance, if user A wishes to access an unsynchronized file via client node 104, user A can explicitly request that file. In response, client node 104 can download the file from cloud storage server 108 over WAN/Internet 110 to client storage 122, where the file can be accessed by user A and cached for future use. In certain embodiments, client node 104 can occasionally purge client storage 122 of files that have been downloaded and cached in this manner to limit the amount of local storage space that is consumed by cached files. This purging process can delete cached files based on the time at which they were last accessed (with oldest-accessed files being deleted first), and can occur at predetermined time intervals or in response to a trigger event (e.g., growth of the file cache beyond a predefined maximum size).
  • To facilitate on-demand downloading, client application 118 can include a filesystem abstraction layer (FAL) 124. FAL 124 acts as an intermediary between client application 118 and the local file system of client node 104, and can generate a unified listing of user files that client node 104 stores locally (e.g., in client storage 122) and cloud storage server 108 stores remotely (e.g., in server storage 114). For example, with respect to user A, FAL 124 can generate a unified listing of user A's files that are (1) cached in client storage 122 of client node 104 and (2) stored in server storage 114 of cloud storage server 108 (without a corresponding copy in client storage 122). FAL 124 can then expose this unified listing of files when user A interacts with the local file system of client node 104, thereby giving user A the impression that the remotely stored files are stored locally in client storage 122. For instance, FAL 124 can expose this unified listing of files when user A browses the contents of client storage 122 via, e.g., a file browser window (such as Windows Explorer, OSX Finder, etc.), or when user A attempts to access a file via a file open dialog window. FAL 124 can also expose this unified listing of files within client application 118. When user A requests access to a file in the unified listing, FAL 124 can determine whether the file is actually stored locally or remotely. FAL 124 can then transparently retrieve the file from the appropriate local or remote location.
  • In one embodiment, FAL 124 can be implemented using a virtual file system (VFS) framework that is built into the OS running on client node 104, such as the Filesystem in Userspace (FUSE) framework that is built into Linux and UNIX-based OSs. In alternative embodiments, FAL 124 can be implemented using any type of application-level or OS-level mechanism that allows for the unified presentation and retrieval of locally stored and remotely stored files.
  • As noted in the Background section, one benefit of the “on-demand” configuration of client node 104 is that this on-demand configuration minimizes local storage consumption because client node 104 only downloads files from cloud storage server 108 over WAN/Internet 110 that user A explicitly requests. However, since WAN/Internet connections are typically limited in bandwidth, this download process can be slow, particularly if the files are large. This can cause user A to experience significant latency at the time of requesting/accessing a cloud-stored file via client node 104.
  • To mitigate this latency issue, in certain embodiments client application 118 can further include a local download component 126. Local download component 126 can leverage the relatively high-speed LAN connection between client node 104 and client node 102 to accelerate client node 104′s retrieval of cloud-stored files. For example, assume client node 104 receives, from user A, a request to access a cloud-stored file that has not been cached locally in client storage 120. Rather than initiating a download of the file from cloud storage server 108 over WAN/Internet 110, FAL 124 can invoke local download component 126. Local download component 126 can discover one or more other client nodes on LAN 106 (referred to as “peer client nodes”) and determine that one of the peer client nodes—for instance, fully synced client node 102—has a local copy of the requested file. Local download component 126 can then download the file directly from client node 102 over LAN 106, thereby obviating the need to download the file from cloud storage server 108 over WAN/Internet 110.
  • With the approach above, local download component 126 can substantially reduce the latency that user A experiences at the time of requesting a cloud-stored file via client node 104, since downloading the file from fully synched client node 102 over LAN 106 will generally be substantially faster than downloading the file from cloud storage server 108 over WAN/Internet 110. At the same time, the consumption of local storage 122 can be kept low, since client node 104 remains in an on-demand (rather than fully synced) configuration. Thus, this approach can enable relatively fast access to cloud-stored files on computing devices that cannot accommodate a large amount of local storage space, such as small form factor or low cost devices. In a particular embodiment, client node 104 can be implemented using a smartphone, a tablet, or some other type of handheld computing device.
  • FIG. 2 illustrates a process 200 that can be performed by client application 118 of client node 104 (and its subcomponents FAL 124 and local download component 126) for accelerating on-demand retrieval of cloud-stored files according to one embodiment. At block 202, FAL 124 can generate a listing of files associated with a user (or user account). As noted with respect to FIG. 1, this listing can be a unified listing that includes (1) the subset of the user's files that is cached locally in client storage 122 of client node 104, and (2) the subset of the user's files that is stored remotely in server storage 114 of cloud storage server 108, without having corresponding local copies in client storage 122. Once generated, FAL 124 can cause this listing to be presented (via, e.g., client application 118 or some other component/application running on client node 104) (e.g., file browser window, file open dialog, etc.)) to the user (block 204).
  • At block 206, client node 104 can receive a request to access a file in the listing. In one embodiment, this request can be received from the user in response to the file listing presented at block 204. In other embodiments, the request can be received from an automated/programmatic process running on client node 104. At block 208, FAL 124 can determine whether or not client node 104 has stored the requested file locally (e.g., cached in client storage 122). If the requested file is available locally, FAL 124 can pass a handle to the locally stored file to the requesting application (e.g., client application 118) (block 218). The requesting application can then open or otherwise access the file (block 220) and process 200 can end (or loop back to block 206 to handle additional file requests from the user).
  • On the other hand, if client node 104 has not stored the requested file locally, FAL 124 (or client application 118) can invoke local download component 126 (block 210). Local download component 126 can discover one or more peer client nodes that are connected to client node 104 over LAN 106 (block 212). As used herein, a “peer client node” is any type of network entity that a target client node (e.g., client node 104) can access via an appropriate communication protocol. In the embodiment of FIG. 1, one such peer client node is client node 102. Local download component 126 can then attempt to download the requested file from one of the discovered peer client nodes (block 212).
  • FIG. 3 illustrates a process 300 that can be performed by local download component 126 within the context of block 212 of FIG. 2. At block 302, local download component 126 can invoke a peer discovery protocol for discovering peer client nodes of client node 104 on LAN 106. In one embodiment, the peer discovery protocol can be a standard IP network configuration/discovery protocol, such as the Bonjour™ protocol developed by Apple, Inc. In other embodiments, the peer discovery protocol can be a proprietary protocol.
  • At block 304, local download component 126 can enter a loop for each discovered peer client node. Within the loop, local download component 126 can establish a connection with the current peer client node and authenticate the peer client node (blocks 306, 308). This authentication process can include determining whether the peer client node is configured to access the same cloud storage server as client node 104 (e.g., cloud storage server 108), and whether the peer client node is authorized to access the cloud-stored files of the current user.
  • Assuming that the authentication process successfully authenticates the peer client node at block 308, local download component 126 can transmit a download request for the user-requested file to the peer client node (block 310). The download request can include, e.g., an identifier that uniquely identifies the file. In response, the peer client node can determine whether the requested file is stored locally on the peer client node.
  • If requested file is available locally at the peer client node (block 312), local download component 126 can receive a copy of the file from the peer client node over LAN 106, cache the file in client storage 122, and return a handle to the locally cached file to VFS 124 (block 318). This outcome will typically occur if the peer client node is a fully synced node (e.g., client node 102 of FIG. 1), since such fully synced nodes will generally always maintain a synchronized copy of each of the user's cloud-stored files in client storage.
  • If the requested file is not available locally at the peer client node (block 312), local download component 126 can reach the end of the current loop iteration (block 314) and return to block 304 to process the next discovered peer client node. If local download component 126 loops through all of the discovered peer client nodes without finding any peer client node that has locally stored the requested file, local download component 126 can return an indication to VFS 124 that the file could not be downloaded locally (block 316).
  • Returning to FIG. 2, at block 214 VFS 124 can determine whether local download component 126 has successfully downloaded the requested file from a peer client node (by virtue of the information local download component 126 returns to VFS 124 at blocks 316 and 318). If VFS 124 receives an indication from local download component 126 that the file could not be downloaded locally per block 316, VFS 124 can download the file from cloud storage server 108 over WAN/Internet 110. Process 200 can then proceed to blocks 218 and 220, whereby client application 118 opens or accesses the file and makes the file available to the user. On the other hand, if VFS 124 receives a handle to a local copy of the file from local download component 126 per block 318 (indicating that local download component 126 successfully downloaded the file from a peer client node), process 200 can proceed directly to blocks 218 and 220, without going through the potentially slow process of downloading the file over WAN/Internet 110. In this manner, the user may perceive substantially improved latency at the time of requesting and accessing the file. Process 200 can subsequently end (or loop back to block 206 to handle additional file requests from the user).
  • The various embodiments described herein may employ various computer-implemented operations involving data stored in computer systems. For example, these operations may require physical manipulation of physical quantities—usually, though not necessarily, these quantities may take the form of electrical or magnetic signals, where they or representations of them are capable of being stored, transferred, combined, compared, or otherwise manipulated. Further, such manipulations are often referred to in terms, such as producing, identifying, determining, or comparing. Any operations described herein that form part of one or more embodiments may be useful machine operations. In addition, one or more embodiments also relate to a device or an apparatus for performing these operations. The apparatus may be specially constructed for specific required purposes, or it may be a general purpose computer selectively activated or configured by a computer program stored in the computer. In particular, various general purpose machines may be used with computer programs written in accordance with the teachings herein, or it may be more convenient to construct a more specialized apparatus to perform the required operations. The various embodiments described herein may be practiced with other computer system configurations including hand-held devices, microprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like.
  • One or more embodiments may be implemented as one or more computer programs or as one or more computer program modules embodied in one or more non-transitory computer readable storage media. The term non-transitory computer readable storage medium refers to any data storage device that can store data which can thereafter be input to a computer system. The non-transitory computer readable media may be based on any existing or subsequently developed technology for embodying computer programs in a manner that enables them to be read by a computer. Examples of a non-transitory computer readable medium include a hard drive, network attached storage (NAS), read-only memory, random-access memory (e.g., a flash memory device), a CD (Compact Discs)—CD-ROM, a CD-R, or a CD-RW, a DVD (Digital Versatile Disc), a magnetic tape, and other optical and non-optical data storage devices. The non-transitory computer readable medium can also be distributed over a network coupled computer system so that the computer readable code is stored and executed in a distributed fashion.
  • Boundaries between the various components, operations and data stores described herein are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of embodiments of the invention(s). In general, structures and functionality presented as separate components in exemplary configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components.
  • As used in the description herein and throughout the claims that follow, “a”, “an”, and “the” includes plural references unless the context clearly dictates otherwise. Also, as used in the description herein and throughout the claims that follow, the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise.
  • The above description illustrates various embodiments along with examples of how aspects of particular embodiments may be implemented. The above examples and embodiments should not be deemed to be the only embodiments, and are presented to illustrate the flexibility and advantages of particular embodiments as defined by the following claims. Based on the above disclosure and the following claims, other arrangements, embodiments, implementations and equivalents may be employed without departing from the scope hereof as defined by the claims.

Claims (20)

What is claimed is:
1. A method performed by a client node for accelerating remote data retrieval, the method comprising:
generating, by the client node, a listing of files associated with a user account, the listing of files including one or more files that are stored remotely on a server system without being synchronized to local storage of the client node, the server system being communicatively coupled with the client node via a first network;
receiving, by the client node, a request to access a file from the listing of files;
determining, by the client node, whether the file is stored locally on the client node; and
if the file is not stored locally on the client node:
discovering, by the client node, one or more peer client nodes that are communicatively coupled with the client node via a second network;
determining, by the client node, whether the file is stored locally on any of the one or more peer client nodes;
if the file is stored locally on a peer client node in the one or more peer client nodes, retrieving, by the client node, the file from the peer client node over the second network; and
if the file is not stored locally on any of the one or more peer client nodes, retrieving, by the client node, the file from the server system over the first network.
2. The method of claim 1 wherein the generating of the listing of files, the determining whether the file is stored locally on the client node, and the retrieving of the file from the server system are performed by a filesystem abstraction layer (FAL running on the client node.
3. The method of claim 2 wherein the discovering of the one or more peer client nodes, the determining whether the file is stored locally on any of one or more peer client nodes, and the retrieving of the file from the peer client node are performed by a local download component that is in communication with the FAL.
4. The method of claim 1 wherein the peer client node is communicatively coupled with the server system via the first network, and wherein the peer client node is configured to synchronize, from the server system to local storage of the peer client node via the first network, each of the files associated with the user account, thereby causing the peer client node to maintain a copy of said each file locally.
5. The method of claim 1 wherein the listing further includes one or more files that are stored remotely on the server system as well as stored locally on the client node, and wherein the method further comprises:
if the file is stored locally on the client node, retrieving the file from the local storage of the client node.
6. The method of claim 1 wherein determining whether the file is stored locally on any of the one or more peer client nodes comprises, for each of the one or more peer client nodes:
establishing a connection with the peer client node;
transmitting, to the peer client node, a request to download the file, the request including an identifier of the file; and
receiving, from the peer client node in response to the request, a copy of the file or an indication that the file is not available on the peer client node.
7. The method of claim 1 wherein the first network has lower bandwidth than the second network.
8. The method of claim 7 wherein the first network is a wide area network (WAN) and the second network is a local area network (LAN).
9. The method of claim 1 wherein the peer client node has greater local storage capacity than the client node.
10. The method of claim 1 wherein the client node is a handheld computing device.
11. The method of claim 1 wherein the client node is a virtual machine executing on a physical computer system.
12. A non-transitory computer readable storage medium embodying computer software causing a client node to execute a method, the method comprising:
generating a listing of files associated with a user account, the listing of files including one or more files that are stored remotely on a server system without being synchronized to local storage of the client node, the server system being communicatively coupled with the client node via a first network;
receiving a request to access a file from the listing of files;
determining whether the file is stored locally on the client node; and
if the file is not stored locally on the client node:
discovering one or more peer client nodes that are communicatively coupled with the client node via a second network;
determining whether the file is stored locally on any of the one or more peer client nodes;
if the file is stored locally on a peer client node in the one or more peer client nodes, retrieving the file from the peer client node over the second network; and
if the file is not stored locally on any of the one or more peer client nodes, retrieving the file from the server system over the first network.
13. The non-transitory computer readable storage medium of claim 12 wherein the generating of the listing of files, the determining whether the file is stored locally on the client node, and the retrieving of the file from the server system are performed by a filesystem abstraction layer (FAL) running on the client node.
14. The non-transitory computer readable storage medium of claim 13 wherein the discovering of the one or more peer client nodes, the determining whether the file is stored locally on any of one or more peer client nodes, and the retrieving of the file from the peer client node are performed by a local download component that is in communication with the FAL.
15. The non-transitory computer readable storage medium of claim 12 wherein the peer client node is communicatively coupled with the server system via the first network, and wherein the peer client node is configured to synchronize, from the server system to local storage of the peer client node via the first network, each of the files associated with the user account, thereby causing the peer client node to maintain a copy of said each file locally.
16. A computing device configured to accelerate remote data retrieval, the computing device comprising:
a local storage device; and
a processor configured to:
generate a listing of files associated with a user account, the listing of files including one or more files that are stored remotely on a server system without being synchronized to the local storage device, the server system being communicatively coupled with the computing device via a first network;
receive a request to access a file from the listing of files;
determine whether the file is stored in the local storage device; and
if the file is not stored in the local storage device:
discover one or more peer client nodes that are communicatively coupled with the computing device via a second network;
determine whether the file is stored locally on any of the one or more peer client nodes;
if the file is stored locally on a peer client node in the one or more peer client nodes, retrieve the file from the peer client node over the second network; and
if the file is not stored locally on any of the one or more peer client nodes, retrieve the file from the server system over the first network.
17. The computing device of claim 16 wherein the generating of the listing of files, the determining whether the file is stored in the local storage device, and the retrieving of the file from the server system are performed by a filesystem abstraction layer (FAL) running on the computing device.
18. The computing device of claim 17 wherein the discovering of the one or more peer client nodes, the determining whether the file is stored locally on any of one or more peer client nodes, and the retrieving of the file from the peer client node are performed by a local download component that is in communication with the FAL.
19. The computing device of claim 16 wherein the peer client node is communicatively coupled with the server system via the first network, and wherein the peer client node is configured to synchronize, from the server system to local storage of the peer client node via the first network, each of the files associated with the user account, thereby causing the peer client node to maintain a copy of said each file locally.
20. The computing device of claim 16 wherein the computing device is a smartphone or tablet.
US13/665,637 2012-10-31 2012-10-31 Systems and methods for accelerating remote data retrieval via peer nodes Active 2033-08-02 US9032050B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/665,637 US9032050B2 (en) 2012-10-31 2012-10-31 Systems and methods for accelerating remote data retrieval via peer nodes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/665,637 US9032050B2 (en) 2012-10-31 2012-10-31 Systems and methods for accelerating remote data retrieval via peer nodes

Publications (2)

Publication Number Publication Date
US20140122658A1 true US20140122658A1 (en) 2014-05-01
US9032050B2 US9032050B2 (en) 2015-05-12

Family

ID=50548481

Family Applications (1)

Application Number Title Priority Date Filing Date
US13/665,637 Active 2033-08-02 US9032050B2 (en) 2012-10-31 2012-10-31 Systems and methods for accelerating remote data retrieval via peer nodes

Country Status (1)

Country Link
US (1) US9032050B2 (en)

Cited By (154)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8909725B1 (en) * 2014-03-07 2014-12-09 Snapchat, Inc. Content delivery network for ephemeral objects
US20150067096A1 (en) * 2013-08-30 2015-03-05 Citrix Systems, Inc. Redirecting local storage to cloud storage
US9083770B1 (en) 2013-11-26 2015-07-14 Snapchat, Inc. Method and system for integrating real time communication features in applications
US9094137B1 (en) 2014-06-13 2015-07-28 Snapchat, Inc. Priority based placement of messages in a geo-location based event gallery
US9225897B1 (en) 2014-07-07 2015-12-29 Snapchat, Inc. Apparatus and method for supplying content aware photo filters
US9276886B1 (en) 2014-05-09 2016-03-01 Snapchat, Inc. Apparatus and method for dynamically configuring application component tiles
US20160171190A1 (en) * 2013-08-02 2016-06-16 Bothnic Information Co. Ltd. Device of licensing program, program transaction device and method of licensing program
US9385983B1 (en) 2014-12-19 2016-07-05 Snapchat, Inc. Gallery of messages from individuals with a shared interest
US9396354B1 (en) 2014-05-28 2016-07-19 Snapchat, Inc. Apparatus and method for automated privacy protection in distributed images
US20160294938A1 (en) * 2015-03-31 2016-10-06 Western Digital Technologies, Inc. Syncing with a local paired device to obtain data from a remote server using point-to-point communication
US20160306992A1 (en) * 2014-02-09 2016-10-20 Microsoft Technology Licensing, Llc Content item encryption on mobile devices
US20160316000A1 (en) * 2013-12-10 2016-10-27 Huswei Device Co., Ltd. Synchronizing Method, Terminal, and Server
US20160337437A1 (en) * 2015-05-14 2016-11-17 Vmware, Inc. Peer-to-peer network download optimization
US9537811B2 (en) 2014-10-02 2017-01-03 Snap Inc. Ephemeral gallery of ephemeral messages
CN106911751A (en) * 2015-12-23 2017-06-30 北京奇虎科技有限公司 File acquisition method, device and system
CN106909591A (en) * 2015-12-23 2017-06-30 北京奇虎科技有限公司 File acquisition method, device and system
US9705831B2 (en) 2013-05-30 2017-07-11 Snap Inc. Apparatus and method for maintaining a message thread with opt-in permanence for entries
US9721394B2 (en) 2012-08-22 2017-08-01 Snaps Media, Inc. Augmented reality virtual content platform apparatuses, methods and systems
US9742713B2 (en) 2013-05-30 2017-08-22 Snap Inc. Apparatus and method for maintaining a message thread with opt-in permanence for entries
US9843720B1 (en) 2014-11-12 2017-12-12 Snap Inc. User interface for accessing media at a geographic location
US9854219B2 (en) 2014-12-19 2017-12-26 Snap Inc. Gallery of videos set to an audio time line
US9866999B1 (en) 2014-01-12 2018-01-09 Investment Asset Holdings Llc Location-based messaging
US9882907B1 (en) 2012-11-08 2018-01-30 Snap Inc. Apparatus and method for single action control of social network profile access
EP3186701A4 (en) * 2014-08-26 2018-02-21 Ctera Networks, Ltd. A method and computing device for allowing synchronized access to cloud
US9936030B2 (en) 2014-01-03 2018-04-03 Investel Capital Corporation User content sharing system and method with location-based external content integration
US10055717B1 (en) 2014-08-22 2018-08-21 Snap Inc. Message processor with application prompts
US10082926B1 (en) 2014-02-21 2018-09-25 Snap Inc. Apparatus and method for alternate channel communication initiated through a common message thread
US10123166B2 (en) 2015-01-26 2018-11-06 Snap Inc. Content request by location
US10135949B1 (en) 2015-05-05 2018-11-20 Snap Inc. Systems and methods for story and sub-story navigation
US10133705B1 (en) 2015-01-19 2018-11-20 Snap Inc. Multichannel system
US10157449B1 (en) 2015-01-09 2018-12-18 Snap Inc. Geo-location-based image filters
US10165402B1 (en) 2016-06-28 2018-12-25 Snap Inc. System to track engagement of media items
US20190014161A1 (en) * 2017-07-04 2019-01-10 Vmware, Inc. Downloading of server-based content through peer-to-peer networks
US10203855B2 (en) 2016-12-09 2019-02-12 Snap Inc. Customized user-controlled media overlays
US10219111B1 (en) 2018-04-18 2019-02-26 Snap Inc. Visitation tracking system
US10223397B1 (en) 2015-03-13 2019-03-05 Snap Inc. Social graph based co-location of network users
US10284508B1 (en) 2014-10-02 2019-05-07 Snap Inc. Ephemeral gallery of ephemeral messages with opt-in permanence
US10311916B2 (en) 2014-12-19 2019-06-04 Snap Inc. Gallery of videos set to an audio time line
US10319149B1 (en) 2017-02-17 2019-06-11 Snap Inc. Augmented reality anamorphosis system
US10327096B1 (en) 2018-03-06 2019-06-18 Snap Inc. Geo-fence selection system
US10334307B2 (en) 2011-07-12 2019-06-25 Snap Inc. Methods and systems of providing visual content editing functions
US10348662B2 (en) 2016-07-19 2019-07-09 Snap Inc. Generating customized electronic messaging graphics
US10354425B2 (en) 2015-12-18 2019-07-16 Snap Inc. Method and system for providing context relevant media augmentation
US10366543B1 (en) 2015-10-30 2019-07-30 Snap Inc. Image based tracking in augmented reality systems
US10387730B1 (en) 2017-04-20 2019-08-20 Snap Inc. Augmented reality typography personalization system
US10387514B1 (en) 2016-06-30 2019-08-20 Snap Inc. Automated content curation and communication
US10423983B2 (en) 2014-09-16 2019-09-24 Snap Inc. Determining targeting information based on a predictive targeting model
US10430838B1 (en) 2016-06-28 2019-10-01 Snap Inc. Methods and systems for generation, curation, and presentation of media collections with automated advertising
US10439972B1 (en) 2013-05-30 2019-10-08 Snap Inc. Apparatus and method for maintaining a message thread with opt-in permanence for entries
US10474321B2 (en) 2015-11-30 2019-11-12 Snap Inc. Network resource location linking and visual content sharing
US10499191B1 (en) 2017-10-09 2019-12-03 Snap Inc. Context sensitive presentation of content
US10523625B1 (en) 2017-03-09 2019-12-31 Snap Inc. Restricted group content collection
US10581782B2 (en) 2017-03-27 2020-03-03 Snap Inc. Generating a stitched data stream
US10582277B2 (en) 2017-03-27 2020-03-03 Snap Inc. Generating a stitched data stream
US10592574B2 (en) 2015-05-05 2020-03-17 Snap Inc. Systems and methods for automated local story generation and curation
US10601904B2 (en) * 2014-09-25 2020-03-24 Kabushiki Kaisha Toshiba Cooperation system
US10616239B2 (en) 2015-03-18 2020-04-07 Snap Inc. Geo-fence authorization provisioning
US10623666B2 (en) 2016-11-07 2020-04-14 Snap Inc. Selective identification and order of image modifiers
US10638256B1 (en) 2016-06-20 2020-04-28 Pipbin, Inc. System for distribution and display of mobile targeted augmented reality content
US20200145515A1 (en) * 2018-11-06 2020-05-07 Citrix Systems, Inc. Systems and methods for managing downloads from an embedded browser
US10679389B2 (en) 2016-02-26 2020-06-09 Snap Inc. Methods and systems for generation, curation, and presentation of media collections
US10679393B2 (en) 2018-07-24 2020-06-09 Snap Inc. Conditional modification of augmented reality object
US10678818B2 (en) 2018-01-03 2020-06-09 Snap Inc. Tag distribution visualization system
CN111324293A (en) * 2018-12-14 2020-06-23 杭州海康威视系统技术有限公司 Storage system, data storage method, data reading method and device
US10740974B1 (en) 2017-09-15 2020-08-11 Snap Inc. Augmented reality system
US10805696B1 (en) 2016-06-20 2020-10-13 Pipbin, Inc. System for recording and targeting tagged content of user interest
US10817898B2 (en) 2015-08-13 2020-10-27 Placed, Llc Determining exposures to content presented by physical objects
US10824654B2 (en) 2014-09-18 2020-11-03 Snap Inc. Geolocation-based pictographs
US10834525B2 (en) 2016-02-26 2020-11-10 Snap Inc. Generation, curation, and presentation of media collections
US10839219B1 (en) 2016-06-20 2020-11-17 Pipbin, Inc. System for curation, distribution and display of location-dependent augmented reality content
US10862951B1 (en) 2007-01-05 2020-12-08 Snap Inc. Real-time display of multiple images
US10885136B1 (en) 2018-02-28 2021-01-05 Snap Inc. Audience filtering system
US10915911B2 (en) 2017-02-03 2021-02-09 Snap Inc. System to determine a price-schedule to distribute media content
US10933311B2 (en) 2018-03-14 2021-03-02 Snap Inc. Generating collectible items based on location information
US10952013B1 (en) 2017-04-27 2021-03-16 Snap Inc. Selective location-based identity communication
US10951703B1 (en) * 2019-10-15 2021-03-16 Microsoft Technology Licensing, Llc Peer-to-peer email content replication and synchronization
US10948717B1 (en) 2015-03-23 2021-03-16 Snap Inc. Reducing boot time and power consumption in wearable display systems
US10963529B1 (en) 2017-04-27 2021-03-30 Snap Inc. Location-based search mechanism in a graphical user interface
US10979752B1 (en) 2018-02-28 2021-04-13 Snap Inc. Generating media content items based on location information
US10993069B2 (en) 2015-07-16 2021-04-27 Snap Inc. Dynamically adaptive media content delivery
US10997760B2 (en) 2018-08-31 2021-05-04 Snap Inc. Augmented reality anthropomorphization system
US10997783B2 (en) 2015-11-30 2021-05-04 Snap Inc. Image and point cloud based tracking and in augmented reality systems
US11017173B1 (en) 2017-12-22 2021-05-25 Snap Inc. Named entity recognition visual context and caption data
US11023514B2 (en) 2016-02-26 2021-06-01 Snap Inc. Methods and systems for generation, curation, and presentation of media collections
US11030787B2 (en) 2017-10-30 2021-06-08 Snap Inc. Mobile-based cartographic control of display content
US11037372B2 (en) 2017-03-06 2021-06-15 Snap Inc. Virtual vision system
US11044393B1 (en) 2016-06-20 2021-06-22 Pipbin, Inc. System for curation and display of location-dependent augmented reality content in an augmented estate system
US11128715B1 (en) 2019-12-30 2021-09-21 Snap Inc. Physical friend proximity in chat
US11163941B1 (en) 2018-03-30 2021-11-02 Snap Inc. Annotating a collection of media content items
US11170393B1 (en) 2017-04-11 2021-11-09 Snap Inc. System to calculate an engagement score of location based media content
US11182383B1 (en) 2012-02-24 2021-11-23 Placed, Llc System and method for data collection to validate location data
US11189299B1 (en) 2017-02-20 2021-11-30 Snap Inc. Augmented reality speech balloon system
US11199957B1 (en) 2018-11-30 2021-12-14 Snap Inc. Generating customized avatars based on location information
US11201981B1 (en) 2016-06-20 2021-12-14 Pipbin, Inc. System for notification of user accessibility of curated location-dependent content in an augmented estate
US11206615B2 (en) 2019-05-30 2021-12-21 Snap Inc. Wearable device location systems
US11218838B2 (en) 2019-10-31 2022-01-04 Snap Inc. Focused map-based context information surfacing
US11216869B2 (en) 2014-09-23 2022-01-04 Snap Inc. User interface to augment an image using geolocation
US11228551B1 (en) 2020-02-12 2022-01-18 Snap Inc. Multiple gateway message exchange
US11232040B1 (en) 2017-04-28 2022-01-25 Snap Inc. Precaching unlockable data elements
US11250075B1 (en) 2017-02-17 2022-02-15 Snap Inc. Searching social media content
US11249614B2 (en) 2019-03-28 2022-02-15 Snap Inc. Generating personalized map interface with enhanced icons
US11265273B1 (en) 2017-12-01 2022-03-01 Snap, Inc. Dynamic media overlay with smart widget
US11290851B2 (en) 2020-06-15 2022-03-29 Snap Inc. Location sharing using offline and online objects
US11294936B1 (en) 2019-01-30 2022-04-05 Snap Inc. Adaptive spatial density based clustering
US11301117B2 (en) 2019-03-08 2022-04-12 Snap Inc. Contextual information in chat
US11314776B2 (en) 2020-06-15 2022-04-26 Snap Inc. Location sharing using friend list versions
US11343323B2 (en) 2019-12-31 2022-05-24 Snap Inc. Augmented reality objects registry
US11361493B2 (en) 2019-04-01 2022-06-14 Snap Inc. Semantic texture mapping system
US11388226B1 (en) 2015-01-13 2022-07-12 Snap Inc. Guided personal identity based actions
US11429618B2 (en) 2019-12-30 2022-08-30 Snap Inc. Surfacing augmented reality objects
US11430091B2 (en) 2020-03-27 2022-08-30 Snap Inc. Location mapping for large scale augmented-reality
US11455082B2 (en) 2018-09-28 2022-09-27 Snap Inc. Collaborative achievement interface
US11475254B1 (en) 2017-09-08 2022-10-18 Snap Inc. Multimodal entity identification
US11483267B2 (en) 2020-06-15 2022-10-25 Snap Inc. Location sharing using different rate-limited links
US11500525B2 (en) 2019-02-25 2022-11-15 Snap Inc. Custom media overlay system
US11503432B2 (en) 2020-06-15 2022-11-15 Snap Inc. Scalable real-time location sharing framework
US11507614B1 (en) 2018-02-13 2022-11-22 Snap Inc. Icon based tagging
US11516167B2 (en) 2020-03-05 2022-11-29 Snap Inc. Storing data based on device location
US11558709B2 (en) 2018-11-30 2023-01-17 Snap Inc. Position service to determine relative position to map features
US11574431B2 (en) 2019-02-26 2023-02-07 Snap Inc. Avatar based on weather
US11601888B2 (en) 2021-03-29 2023-03-07 Snap Inc. Determining location using multi-source geolocation data
US11601783B2 (en) 2019-06-07 2023-03-07 Snap Inc. Detection of a physical collision between two client devices in a location sharing system
US11606755B2 (en) 2019-05-30 2023-03-14 Snap Inc. Wearable device location systems architecture
US11616745B2 (en) 2017-01-09 2023-03-28 Snap Inc. Contextual generation and selection of customized media content
US11619501B2 (en) 2020-03-11 2023-04-04 Snap Inc. Avatar based on trip
US11625443B2 (en) 2014-06-05 2023-04-11 Snap Inc. Web document enhancement
US11631276B2 (en) 2016-03-31 2023-04-18 Snap Inc. Automated avatar generation
US11645324B2 (en) 2021-03-31 2023-05-09 Snap Inc. Location-based timeline media content system
US11675831B2 (en) 2017-05-31 2023-06-13 Snap Inc. Geolocation based playlists
US11676378B2 (en) 2020-06-29 2023-06-13 Snap Inc. Providing travel-based augmented reality content with a captured image
US11714535B2 (en) 2019-07-11 2023-08-01 Snap Inc. Edge gesture interface with smart interactions
US11729343B2 (en) 2019-12-30 2023-08-15 Snap Inc. Including video feed in message thread
US11734712B2 (en) 2012-02-24 2023-08-22 Foursquare Labs, Inc. Attributing in-store visits to media consumption based on data collected from user devices
US11751015B2 (en) 2019-01-16 2023-09-05 Snap Inc. Location-based context information sharing in a messaging system
US11776256B2 (en) 2020-03-27 2023-10-03 Snap Inc. Shared augmented reality system
US11785161B1 (en) 2016-06-20 2023-10-10 Pipbin, Inc. System for user accessibility of tagged curated augmented reality content
US11799811B2 (en) 2018-10-31 2023-10-24 Snap Inc. Messaging and gaming applications communication platform
US11809624B2 (en) 2019-02-13 2023-11-07 Snap Inc. Sleep detection in a location sharing system
US11816853B2 (en) 2016-08-30 2023-11-14 Snap Inc. Systems and methods for simultaneous localization and mapping
US11821742B2 (en) 2019-09-26 2023-11-21 Snap Inc. Travel based notifications
US11829834B2 (en) 2021-10-29 2023-11-28 Snap Inc. Extended QR code
US11842411B2 (en) 2017-04-27 2023-12-12 Snap Inc. Location-based virtual avatars
US11843456B2 (en) 2016-10-24 2023-12-12 Snap Inc. Generating and displaying customized avatars in media overlays
US11852554B1 (en) 2019-03-21 2023-12-26 Snap Inc. Barometer calibration in a location sharing system
US11860888B2 (en) 2018-05-22 2024-01-02 Snap Inc. Event detection system
US11868414B1 (en) 2019-03-14 2024-01-09 Snap Inc. Graph-based prediction for contact suggestion in a location sharing system
US11870743B1 (en) 2017-01-23 2024-01-09 Snap Inc. Customized digital avatar accessories
US11876941B1 (en) 2016-06-20 2024-01-16 Pipbin, Inc. Clickable augmented reality content manager, system, and network
US11877211B2 (en) 2019-01-14 2024-01-16 Snap Inc. Destination sharing in location sharing system
US11893208B2 (en) 2019-12-31 2024-02-06 Snap Inc. Combined map icon with action indicator
US11900418B2 (en) 2016-04-04 2024-02-13 Snap Inc. Mutable geo-fencing system
US11925869B2 (en) 2012-05-08 2024-03-12 Snap Inc. System and method for generating and displaying avatars
US11943192B2 (en) 2020-08-31 2024-03-26 Snap Inc. Co-location connection service
US11954314B2 (en) 2022-09-09 2024-04-09 Snap Inc. Custom media overlay system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120246457A1 (en) * 2009-04-03 2012-09-27 Microsoft Corporation Bare metal machine recovery
US20130305039A1 (en) * 2011-05-14 2013-11-14 Anthony Francois Gauda Cloud file system
US20130326072A1 (en) * 2012-06-04 2013-12-05 Cisco Technology, Inc. Seamless Hand-Off of Combined Unified Communications and Virtual Desktop Infrastructure Sessions

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120246457A1 (en) * 2009-04-03 2012-09-27 Microsoft Corporation Bare metal machine recovery
US20130305039A1 (en) * 2011-05-14 2013-11-14 Anthony Francois Gauda Cloud file system
US20130326072A1 (en) * 2012-06-04 2013-12-05 Cisco Technology, Inc. Seamless Hand-Off of Combined Unified Communications and Virtual Desktop Infrastructure Sessions

Cited By (355)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10862951B1 (en) 2007-01-05 2020-12-08 Snap Inc. Real-time display of multiple images
US11588770B2 (en) 2007-01-05 2023-02-21 Snap Inc. Real-time display of multiple images
US10334307B2 (en) 2011-07-12 2019-06-25 Snap Inc. Methods and systems of providing visual content editing functions
US11750875B2 (en) 2011-07-12 2023-09-05 Snap Inc. Providing visual content editing functions
US10999623B2 (en) 2011-07-12 2021-05-04 Snap Inc. Providing visual content editing functions
US11451856B2 (en) 2011-07-12 2022-09-20 Snap Inc. Providing visual content editing functions
US11734712B2 (en) 2012-02-24 2023-08-22 Foursquare Labs, Inc. Attributing in-store visits to media consumption based on data collected from user devices
US11182383B1 (en) 2012-02-24 2021-11-23 Placed, Llc System and method for data collection to validate location data
US11925869B2 (en) 2012-05-08 2024-03-12 Snap Inc. System and method for generating and displaying avatars
US9721394B2 (en) 2012-08-22 2017-08-01 Snaps Media, Inc. Augmented reality virtual content platform apparatuses, methods and systems
US9792733B2 (en) 2012-08-22 2017-10-17 Snaps Media, Inc. Augmented reality virtual content platform apparatuses, methods and systems
US10169924B2 (en) 2012-08-22 2019-01-01 Snaps Media Inc. Augmented reality virtual content platform apparatuses, methods and systems
US11252158B2 (en) 2012-11-08 2022-02-15 Snap Inc. Interactive user-interface to adjust access privileges
US9882907B1 (en) 2012-11-08 2018-01-30 Snap Inc. Apparatus and method for single action control of social network profile access
US10887308B1 (en) 2012-11-08 2021-01-05 Snap Inc. Interactive user-interface to adjust access privileges
US10587552B1 (en) 2013-05-30 2020-03-10 Snap Inc. Apparatus and method for maintaining a message thread with opt-in permanence for entries
US11509618B2 (en) 2013-05-30 2022-11-22 Snap Inc. Maintaining a message thread with opt-in permanence for entries
US11134046B2 (en) 2013-05-30 2021-09-28 Snap Inc. Apparatus and method for maintaining a message thread with opt-in permanence for entries
US11115361B2 (en) 2013-05-30 2021-09-07 Snap Inc. Apparatus and method for maintaining a message thread with opt-in permanence for entries
US10439972B1 (en) 2013-05-30 2019-10-08 Snap Inc. Apparatus and method for maintaining a message thread with opt-in permanence for entries
US9742713B2 (en) 2013-05-30 2017-08-22 Snap Inc. Apparatus and method for maintaining a message thread with opt-in permanence for entries
US9705831B2 (en) 2013-05-30 2017-07-11 Snap Inc. Apparatus and method for maintaining a message thread with opt-in permanence for entries
US10223509B2 (en) * 2013-08-02 2019-03-05 Bothnic Information Co. Ltd. Device of licensing program, program transaction device and method of licensing program
US20160171190A1 (en) * 2013-08-02 2016-06-16 Bothnic Information Co. Ltd. Device of licensing program, program transaction device and method of licensing program
US9432457B2 (en) * 2013-08-30 2016-08-30 Citrix Systems, Inc. Redirecting local storage to cloud storage
US20150067096A1 (en) * 2013-08-30 2015-03-05 Citrix Systems, Inc. Redirecting local storage to cloud storage
US11102253B2 (en) 2013-11-26 2021-08-24 Snap Inc. Method and system for integrating real time communication features in applications
US10069876B1 (en) 2013-11-26 2018-09-04 Snap Inc. Method and system for integrating real time communication features in applications
US9794303B1 (en) 2013-11-26 2017-10-17 Snap Inc. Method and system for integrating real time communication features in applications
US11546388B2 (en) 2013-11-26 2023-01-03 Snap Inc. Method and system for integrating real time communication features in applications
US10681092B1 (en) 2013-11-26 2020-06-09 Snap Inc. Method and system for integrating real time communication features in applications
US9083770B1 (en) 2013-11-26 2015-07-14 Snapchat, Inc. Method and system for integrating real time communication features in applications
US10673931B2 (en) * 2013-12-10 2020-06-02 Huawei Device Co., Ltd. Synchronizing method, terminal, and server
US20160316000A1 (en) * 2013-12-10 2016-10-27 Huswei Device Co., Ltd. Synchronizing Method, Terminal, and Server
US9936030B2 (en) 2014-01-03 2018-04-03 Investel Capital Corporation User content sharing system and method with location-based external content integration
US9866999B1 (en) 2014-01-12 2018-01-09 Investment Asset Holdings Llc Location-based messaging
US10349209B1 (en) 2014-01-12 2019-07-09 Investment Asset Holdings Llc Location-based messaging
US10080102B1 (en) 2014-01-12 2018-09-18 Investment Asset Holdings Llc Location-based messaging
US20160306992A1 (en) * 2014-02-09 2016-10-20 Microsoft Technology Licensing, Llc Content item encryption on mobile devices
US10204235B2 (en) * 2014-02-09 2019-02-12 Microsoft Technology Licensing, Llc Content item encryption on mobile devices
US10958605B1 (en) 2014-02-21 2021-03-23 Snap Inc. Apparatus and method for alternate channel communication initiated through a common message thread
US11902235B2 (en) 2014-02-21 2024-02-13 Snap Inc. Apparatus and method for alternate channel communication initiated through a common message thread
US10082926B1 (en) 2014-02-21 2018-09-25 Snap Inc. Apparatus and method for alternate channel communication initiated through a common message thread
US10084735B1 (en) 2014-02-21 2018-09-25 Snap Inc. Apparatus and method for alternate channel communication initiated through a common message thread
US11463393B2 (en) 2014-02-21 2022-10-04 Snap Inc. Apparatus and method for alternate channel communication initiated through a common message thread
US11463394B2 (en) 2014-02-21 2022-10-04 Snap Inc. Apparatus and method for alternate channel communication initiated through a common message thread
US10949049B1 (en) 2014-02-21 2021-03-16 Snap Inc. Apparatus and method for alternate channel communication initiated through a common message thread
US9237202B1 (en) 2014-03-07 2016-01-12 Snapchat, Inc. Content delivery network for ephemeral objects
US8909725B1 (en) * 2014-03-07 2014-12-09 Snapchat, Inc. Content delivery network for ephemeral objects
US9407712B1 (en) 2014-03-07 2016-08-02 Snapchat, Inc. Content delivery network for ephemeral objects
US11743219B2 (en) 2014-05-09 2023-08-29 Snap Inc. Dynamic configuration of application component tiles
US9276886B1 (en) 2014-05-09 2016-03-01 Snapchat, Inc. Apparatus and method for dynamically configuring application component tiles
US10817156B1 (en) 2014-05-09 2020-10-27 Snap Inc. Dynamic configuration of application component tiles
US11310183B2 (en) 2014-05-09 2022-04-19 Snap Inc. Dynamic configuration of application component tiles
US10990697B2 (en) 2014-05-28 2021-04-27 Snap Inc. Apparatus and method for automated privacy protection in distributed images
US9785796B1 (en) 2014-05-28 2017-10-10 Snap Inc. Apparatus and method for automated privacy protection in distributed images
US10572681B1 (en) 2014-05-28 2020-02-25 Snap Inc. Apparatus and method for automated privacy protection in distributed images
US9396354B1 (en) 2014-05-28 2016-07-19 Snapchat, Inc. Apparatus and method for automated privacy protection in distributed images
US11625443B2 (en) 2014-06-05 2023-04-11 Snap Inc. Web document enhancement
US11921805B2 (en) 2014-06-05 2024-03-05 Snap Inc. Web document enhancement
US9113301B1 (en) 2014-06-13 2015-08-18 Snapchat, Inc. Geo-location based event gallery
US9430783B1 (en) 2014-06-13 2016-08-30 Snapchat, Inc. Prioritization of messages within gallery
US10200813B1 (en) 2014-06-13 2019-02-05 Snap Inc. Geo-location based event gallery
US9532171B2 (en) 2014-06-13 2016-12-27 Snap Inc. Geo-location based event gallery
US10623891B2 (en) 2014-06-13 2020-04-14 Snap Inc. Prioritization of messages within a message collection
US10182311B2 (en) 2014-06-13 2019-01-15 Snap Inc. Prioritization of messages within a message collection
US9094137B1 (en) 2014-06-13 2015-07-28 Snapchat, Inc. Priority based placement of messages in a geo-location based event gallery
US10524087B1 (en) 2014-06-13 2019-12-31 Snap Inc. Message destination list mechanism
US10659914B1 (en) 2014-06-13 2020-05-19 Snap Inc. Geo-location based event gallery
US9693191B2 (en) 2014-06-13 2017-06-27 Snap Inc. Prioritization of messages within gallery
US11317240B2 (en) 2014-06-13 2022-04-26 Snap Inc. Geo-location based event gallery
US9825898B2 (en) 2014-06-13 2017-11-21 Snap Inc. Prioritization of messages within a message collection
US11166121B2 (en) 2014-06-13 2021-11-02 Snap Inc. Prioritization of messages within a message collection
US10779113B2 (en) 2014-06-13 2020-09-15 Snap Inc. Prioritization of messages within a message collection
US10448201B1 (en) 2014-06-13 2019-10-15 Snap Inc. Prioritization of messages within a message collection
US10154192B1 (en) 2014-07-07 2018-12-11 Snap Inc. Apparatus and method for supplying content aware photo filters
US10701262B1 (en) 2014-07-07 2020-06-30 Snap Inc. Apparatus and method for supplying content aware photo filters
US11849214B2 (en) 2014-07-07 2023-12-19 Snap Inc. Apparatus and method for supplying content aware photo filters
US10432850B1 (en) 2014-07-07 2019-10-01 Snap Inc. Apparatus and method for supplying content aware photo filters
US9407816B1 (en) 2014-07-07 2016-08-02 Snapchat, Inc. Apparatus and method for supplying content aware photo filters
US10602057B1 (en) 2014-07-07 2020-03-24 Snap Inc. Supplying content aware photo filters
US11595569B2 (en) 2014-07-07 2023-02-28 Snap Inc. Supplying content aware photo filters
US9225897B1 (en) 2014-07-07 2015-12-29 Snapchat, Inc. Apparatus and method for supplying content aware photo filters
US10348960B1 (en) 2014-07-07 2019-07-09 Snap Inc. Apparatus and method for supplying content aware photo filters
US11122200B2 (en) 2014-07-07 2021-09-14 Snap Inc. Supplying content aware photo filters
US11496673B1 (en) 2014-07-07 2022-11-08 Snap Inc. Apparatus and method for supplying content aware photo filters
US10055717B1 (en) 2014-08-22 2018-08-21 Snap Inc. Message processor with application prompts
US11017363B1 (en) 2014-08-22 2021-05-25 Snap Inc. Message processor with application prompts
US10642798B2 (en) 2014-08-26 2020-05-05 Ctera Networks, Ltd. Method and system for routing data flows in a cloud storage system
US11016942B2 (en) 2014-08-26 2021-05-25 Ctera Networks, Ltd. Method for seamless access to a cloud storage system by an endpoint device
EP3186701A4 (en) * 2014-08-26 2018-02-21 Ctera Networks, Ltd. A method and computing device for allowing synchronized access to cloud
US11216418B2 (en) 2014-08-26 2022-01-04 Ctera Networks, Ltd. Method for seamless access to a cloud storage system by an endpoint device using metadata
US10061779B2 (en) 2014-08-26 2018-08-28 Ctera Networks, Ltd. Method and computing device for allowing synchronized access to cloud storage systems based on stub tracking
US10095704B2 (en) 2014-08-26 2018-10-09 Ctera Networks, Ltd. Method and system for routing data flows in a cloud storage system
US10423983B2 (en) 2014-09-16 2019-09-24 Snap Inc. Determining targeting information based on a predictive targeting model
US11625755B1 (en) 2014-09-16 2023-04-11 Foursquare Labs, Inc. Determining targeting information based on a predictive targeting model
US11741136B2 (en) 2014-09-18 2023-08-29 Snap Inc. Geolocation-based pictographs
US10824654B2 (en) 2014-09-18 2020-11-03 Snap Inc. Geolocation-based pictographs
US11281701B2 (en) 2014-09-18 2022-03-22 Snap Inc. Geolocation-based pictographs
US11216869B2 (en) 2014-09-23 2022-01-04 Snap Inc. User interface to augment an image using geolocation
US10601904B2 (en) * 2014-09-25 2020-03-24 Kabushiki Kaisha Toshiba Cooperation system
US10476830B2 (en) 2014-10-02 2019-11-12 Snap Inc. Ephemeral gallery of ephemeral messages
US11012398B1 (en) 2014-10-02 2021-05-18 Snap Inc. Ephemeral message gallery user interface with screenshot messages
US9537811B2 (en) 2014-10-02 2017-01-03 Snap Inc. Ephemeral gallery of ephemeral messages
US10958608B1 (en) 2014-10-02 2021-03-23 Snap Inc. Ephemeral gallery of visual media messages
US10944710B1 (en) 2014-10-02 2021-03-09 Snap Inc. Ephemeral gallery user interface with remaining gallery time indication
US10708210B1 (en) 2014-10-02 2020-07-07 Snap Inc. Multi-user ephemeral message gallery
US10284508B1 (en) 2014-10-02 2019-05-07 Snap Inc. Ephemeral gallery of ephemeral messages with opt-in permanence
US11038829B1 (en) 2014-10-02 2021-06-15 Snap Inc. Ephemeral gallery of ephemeral messages with opt-in permanence
US11411908B1 (en) 2014-10-02 2022-08-09 Snap Inc. Ephemeral message gallery user interface with online viewing history indicia
US20170374003A1 (en) 2014-10-02 2017-12-28 Snapchat, Inc. Ephemeral gallery of ephemeral messages
US11522822B1 (en) 2014-10-02 2022-12-06 Snap Inc. Ephemeral gallery elimination based on gallery and message timers
US11855947B1 (en) 2014-10-02 2023-12-26 Snap Inc. Gallery of ephemeral messages
US9843720B1 (en) 2014-11-12 2017-12-12 Snap Inc. User interface for accessing media at a geographic location
US10616476B1 (en) 2014-11-12 2020-04-07 Snap Inc. User interface for accessing media at a geographic location
US11190679B2 (en) 2014-11-12 2021-11-30 Snap Inc. Accessing media at a geographic location
US10514876B2 (en) 2014-12-19 2019-12-24 Snap Inc. Gallery of messages from individuals with a shared interest
US9854219B2 (en) 2014-12-19 2017-12-26 Snap Inc. Gallery of videos set to an audio time line
US10580458B2 (en) 2014-12-19 2020-03-03 Snap Inc. Gallery of videos set to an audio time line
US10311916B2 (en) 2014-12-19 2019-06-04 Snap Inc. Gallery of videos set to an audio time line
US11803345B2 (en) 2014-12-19 2023-10-31 Snap Inc. Gallery of messages from individuals with a shared interest
US11783862B2 (en) 2014-12-19 2023-10-10 Snap Inc. Routing messages by message parameter
US9385983B1 (en) 2014-12-19 2016-07-05 Snapchat, Inc. Gallery of messages from individuals with a shared interest
US11372608B2 (en) 2014-12-19 2022-06-28 Snap Inc. Gallery of messages from individuals with a shared interest
US11250887B2 (en) 2014-12-19 2022-02-15 Snap Inc. Routing messages by message parameter
US10811053B2 (en) 2014-12-19 2020-10-20 Snap Inc. Routing messages by message parameter
US11301960B2 (en) 2015-01-09 2022-04-12 Snap Inc. Object recognition based image filters
US10157449B1 (en) 2015-01-09 2018-12-18 Snap Inc. Geo-location-based image filters
US11734342B2 (en) 2015-01-09 2023-08-22 Snap Inc. Object recognition based image overlays
US10380720B1 (en) 2015-01-09 2019-08-13 Snap Inc. Location-based image filters
US11388226B1 (en) 2015-01-13 2022-07-12 Snap Inc. Guided personal identity based actions
US10133705B1 (en) 2015-01-19 2018-11-20 Snap Inc. Multichannel system
US11249617B1 (en) 2015-01-19 2022-02-15 Snap Inc. Multichannel system
US10416845B1 (en) 2015-01-19 2019-09-17 Snap Inc. Multichannel system
US10123166B2 (en) 2015-01-26 2018-11-06 Snap Inc. Content request by location
US10932085B1 (en) 2015-01-26 2021-02-23 Snap Inc. Content request by location
US11528579B2 (en) 2015-01-26 2022-12-13 Snap Inc. Content request by location
US11910267B2 (en) 2015-01-26 2024-02-20 Snap Inc. Content request by location
US10536800B1 (en) 2015-01-26 2020-01-14 Snap Inc. Content request by location
US10223397B1 (en) 2015-03-13 2019-03-05 Snap Inc. Social graph based co-location of network users
US11902287B2 (en) 2015-03-18 2024-02-13 Snap Inc. Geo-fence authorization provisioning
US10893055B2 (en) 2015-03-18 2021-01-12 Snap Inc. Geo-fence authorization provisioning
US10616239B2 (en) 2015-03-18 2020-04-07 Snap Inc. Geo-fence authorization provisioning
US11662576B2 (en) 2015-03-23 2023-05-30 Snap Inc. Reducing boot time and power consumption in displaying data content
US11320651B2 (en) 2015-03-23 2022-05-03 Snap Inc. Reducing boot time and power consumption in displaying data content
US10948717B1 (en) 2015-03-23 2021-03-16 Snap Inc. Reducing boot time and power consumption in wearable display systems
US20160294938A1 (en) * 2015-03-31 2016-10-06 Western Digital Technologies, Inc. Syncing with a local paired device to obtain data from a remote server using point-to-point communication
US10574745B2 (en) * 2015-03-31 2020-02-25 Western Digital Technologies, Inc. Syncing with a local paired device to obtain data from a remote server using point-to-point communication
US10135949B1 (en) 2015-05-05 2018-11-20 Snap Inc. Systems and methods for story and sub-story navigation
US10911575B1 (en) 2015-05-05 2021-02-02 Snap Inc. Systems and methods for story and sub-story navigation
US11496544B2 (en) 2015-05-05 2022-11-08 Snap Inc. Story and sub-story navigation
US10592574B2 (en) 2015-05-05 2020-03-17 Snap Inc. Systems and methods for automated local story generation and curation
US11449539B2 (en) 2015-05-05 2022-09-20 Snap Inc. Automated local story generation and curation
US11392633B2 (en) 2015-05-05 2022-07-19 Snap Inc. Systems and methods for automated local story generation and curation
US10158693B2 (en) * 2015-05-14 2018-12-18 Vmware, Inc. Peer-to-peer network download optimization
US20160337437A1 (en) * 2015-05-14 2016-11-17 Vmware, Inc. Peer-to-peer network download optimization
US10993069B2 (en) 2015-07-16 2021-04-27 Snap Inc. Dynamically adaptive media content delivery
US10817898B2 (en) 2015-08-13 2020-10-27 Placed, Llc Determining exposures to content presented by physical objects
US10366543B1 (en) 2015-10-30 2019-07-30 Snap Inc. Image based tracking in augmented reality systems
US11769307B2 (en) 2015-10-30 2023-09-26 Snap Inc. Image based tracking in augmented reality systems
US11315331B2 (en) 2015-10-30 2022-04-26 Snap Inc. Image based tracking in augmented reality systems
US10733802B2 (en) 2015-10-30 2020-08-04 Snap Inc. Image based tracking in augmented reality systems
US10997783B2 (en) 2015-11-30 2021-05-04 Snap Inc. Image and point cloud based tracking and in augmented reality systems
US10474321B2 (en) 2015-11-30 2019-11-12 Snap Inc. Network resource location linking and visual content sharing
US11380051B2 (en) 2015-11-30 2022-07-05 Snap Inc. Image and point cloud based tracking and in augmented reality systems
US11599241B2 (en) 2015-11-30 2023-03-07 Snap Inc. Network resource location linking and visual content sharing
US11468615B2 (en) 2015-12-18 2022-10-11 Snap Inc. Media overlay publication system
US11830117B2 (en) 2015-12-18 2023-11-28 Snap Inc Media overlay publication system
US10997758B1 (en) 2015-12-18 2021-05-04 Snap Inc. Media overlay publication system
US10354425B2 (en) 2015-12-18 2019-07-16 Snap Inc. Method and system for providing context relevant media augmentation
CN106911751A (en) * 2015-12-23 2017-06-30 北京奇虎科技有限公司 File acquisition method, device and system
CN106909591A (en) * 2015-12-23 2017-06-30 北京奇虎科技有限公司 File acquisition method, device and system
US11611846B2 (en) 2016-02-26 2023-03-21 Snap Inc. Generation, curation, and presentation of media collections
US11889381B2 (en) 2016-02-26 2024-01-30 Snap Inc. Generation, curation, and presentation of media collections
US10834525B2 (en) 2016-02-26 2020-11-10 Snap Inc. Generation, curation, and presentation of media collections
US10679389B2 (en) 2016-02-26 2020-06-09 Snap Inc. Methods and systems for generation, curation, and presentation of media collections
US11197123B2 (en) 2016-02-26 2021-12-07 Snap Inc. Generation, curation, and presentation of media collections
US11023514B2 (en) 2016-02-26 2021-06-01 Snap Inc. Methods and systems for generation, curation, and presentation of media collections
US11631276B2 (en) 2016-03-31 2023-04-18 Snap Inc. Automated avatar generation
US11900418B2 (en) 2016-04-04 2024-02-13 Snap Inc. Mutable geo-fencing system
US11044393B1 (en) 2016-06-20 2021-06-22 Pipbin, Inc. System for curation and display of location-dependent augmented reality content in an augmented estate system
US11201981B1 (en) 2016-06-20 2021-12-14 Pipbin, Inc. System for notification of user accessibility of curated location-dependent content in an augmented estate
US10805696B1 (en) 2016-06-20 2020-10-13 Pipbin, Inc. System for recording and targeting tagged content of user interest
US10992836B2 (en) 2016-06-20 2021-04-27 Pipbin, Inc. Augmented property system of curated augmented reality media elements
US10839219B1 (en) 2016-06-20 2020-11-17 Pipbin, Inc. System for curation, distribution and display of location-dependent augmented reality content
US11876941B1 (en) 2016-06-20 2024-01-16 Pipbin, Inc. Clickable augmented reality content manager, system, and network
US11785161B1 (en) 2016-06-20 2023-10-10 Pipbin, Inc. System for user accessibility of tagged curated augmented reality content
US10638256B1 (en) 2016-06-20 2020-04-28 Pipbin, Inc. System for distribution and display of mobile targeted augmented reality content
US10327100B1 (en) 2016-06-28 2019-06-18 Snap Inc. System to track engagement of media items
US11445326B2 (en) 2016-06-28 2022-09-13 Snap Inc. Track engagement of media items
US10785597B2 (en) 2016-06-28 2020-09-22 Snap Inc. System to track engagement of media items
US11640625B2 (en) 2016-06-28 2023-05-02 Snap Inc. Generation, curation, and presentation of media collections with automated advertising
US10430838B1 (en) 2016-06-28 2019-10-01 Snap Inc. Methods and systems for generation, curation, and presentation of media collections with automated advertising
US10165402B1 (en) 2016-06-28 2018-12-25 Snap Inc. System to track engagement of media items
US10885559B1 (en) 2016-06-28 2021-01-05 Snap Inc. Generation, curation, and presentation of media collections with automated advertising
US10735892B2 (en) 2016-06-28 2020-08-04 Snap Inc. System to track engagement of media items
US10506371B2 (en) 2016-06-28 2019-12-10 Snap Inc. System to track engagement of media items
US10219110B2 (en) 2016-06-28 2019-02-26 Snap Inc. System to track engagement of media items
US11895068B2 (en) 2016-06-30 2024-02-06 Snap Inc. Automated content curation and communication
US10387514B1 (en) 2016-06-30 2019-08-20 Snap Inc. Automated content curation and communication
US11080351B1 (en) 2016-06-30 2021-08-03 Snap Inc. Automated content curation and communication
US10348662B2 (en) 2016-07-19 2019-07-09 Snap Inc. Generating customized electronic messaging graphics
US11509615B2 (en) 2016-07-19 2022-11-22 Snap Inc. Generating customized electronic messaging graphics
US11816853B2 (en) 2016-08-30 2023-11-14 Snap Inc. Systems and methods for simultaneous localization and mapping
US11876762B1 (en) 2016-10-24 2024-01-16 Snap Inc. Generating and displaying customized avatars in media overlays
US11843456B2 (en) 2016-10-24 2023-12-12 Snap Inc. Generating and displaying customized avatars in media overlays
US11233952B2 (en) 2016-11-07 2022-01-25 Snap Inc. Selective identification and order of image modifiers
US10623666B2 (en) 2016-11-07 2020-04-14 Snap Inc. Selective identification and order of image modifiers
US11750767B2 (en) 2016-11-07 2023-09-05 Snap Inc. Selective identification and order of image modifiers
US11397517B2 (en) 2016-12-09 2022-07-26 Snap Inc. Customized media overlays
US10203855B2 (en) 2016-12-09 2019-02-12 Snap Inc. Customized user-controlled media overlays
US10754525B1 (en) 2016-12-09 2020-08-25 Snap Inc. Customized media overlays
US11616745B2 (en) 2017-01-09 2023-03-28 Snap Inc. Contextual generation and selection of customized media content
US11870743B1 (en) 2017-01-23 2024-01-09 Snap Inc. Customized digital avatar accessories
US10915911B2 (en) 2017-02-03 2021-02-09 Snap Inc. System to determine a price-schedule to distribute media content
US11861795B1 (en) 2017-02-17 2024-01-02 Snap Inc. Augmented reality anamorphosis system
US11250075B1 (en) 2017-02-17 2022-02-15 Snap Inc. Searching social media content
US10319149B1 (en) 2017-02-17 2019-06-11 Snap Inc. Augmented reality anamorphosis system
US11720640B2 (en) 2017-02-17 2023-08-08 Snap Inc. Searching social media content
US11748579B2 (en) 2017-02-20 2023-09-05 Snap Inc. Augmented reality speech balloon system
US11189299B1 (en) 2017-02-20 2021-11-30 Snap Inc. Augmented reality speech balloon system
US11037372B2 (en) 2017-03-06 2021-06-15 Snap Inc. Virtual vision system
US11670057B2 (en) 2017-03-06 2023-06-06 Snap Inc. Virtual vision system
US10887269B1 (en) 2017-03-09 2021-01-05 Snap Inc. Restricted group content collection
US10523625B1 (en) 2017-03-09 2019-12-31 Snap Inc. Restricted group content collection
US11258749B2 (en) 2017-03-09 2022-02-22 Snap Inc. Restricted group content collection
US10582277B2 (en) 2017-03-27 2020-03-03 Snap Inc. Generating a stitched data stream
US10581782B2 (en) 2017-03-27 2020-03-03 Snap Inc. Generating a stitched data stream
US11558678B2 (en) 2017-03-27 2023-01-17 Snap Inc. Generating a stitched data stream
US11297399B1 (en) 2017-03-27 2022-04-05 Snap Inc. Generating a stitched data stream
US11349796B2 (en) 2017-03-27 2022-05-31 Snap Inc. Generating a stitched data stream
US11170393B1 (en) 2017-04-11 2021-11-09 Snap Inc. System to calculate an engagement score of location based media content
US10387730B1 (en) 2017-04-20 2019-08-20 Snap Inc. Augmented reality typography personalization system
US11195018B1 (en) 2017-04-20 2021-12-07 Snap Inc. Augmented reality typography personalization system
US11385763B2 (en) 2017-04-27 2022-07-12 Snap Inc. Map-based graphical user interface indicating geospatial activity metrics
US11842411B2 (en) 2017-04-27 2023-12-12 Snap Inc. Location-based virtual avatars
US11418906B2 (en) 2017-04-27 2022-08-16 Snap Inc. Selective location-based identity communication
US11451956B1 (en) 2017-04-27 2022-09-20 Snap Inc. Location privacy management on map-based social media platforms
US11409407B2 (en) 2017-04-27 2022-08-09 Snap Inc. Map-based graphical user interface indicating geospatial activity metrics
US11782574B2 (en) 2017-04-27 2023-10-10 Snap Inc. Map-based graphical user interface indicating geospatial activity metrics
US11556221B2 (en) 2017-04-27 2023-01-17 Snap Inc. Friend location sharing mechanism for social media platforms
US10952013B1 (en) 2017-04-27 2021-03-16 Snap Inc. Selective location-based identity communication
US10963529B1 (en) 2017-04-27 2021-03-30 Snap Inc. Location-based search mechanism in a graphical user interface
US11474663B2 (en) 2017-04-27 2022-10-18 Snap Inc. Location-based search mechanism in a graphical user interface
US11893647B2 (en) 2017-04-27 2024-02-06 Snap Inc. Location-based virtual avatars
US11392264B1 (en) 2017-04-27 2022-07-19 Snap Inc. Map-based graphical user interface for multi-type social media galleries
US11232040B1 (en) 2017-04-28 2022-01-25 Snap Inc. Precaching unlockable data elements
US11675831B2 (en) 2017-05-31 2023-06-13 Snap Inc. Geolocation based playlists
US20190014161A1 (en) * 2017-07-04 2019-01-10 Vmware, Inc. Downloading of server-based content through peer-to-peer networks
US11553014B2 (en) * 2017-07-04 2023-01-10 Vmware, Inc. Downloading of server-based content through peer-to-peer networks
US11475254B1 (en) 2017-09-08 2022-10-18 Snap Inc. Multimodal entity identification
US11721080B2 (en) 2017-09-15 2023-08-08 Snap Inc. Augmented reality system
US10740974B1 (en) 2017-09-15 2020-08-11 Snap Inc. Augmented reality system
US11335067B2 (en) 2017-09-15 2022-05-17 Snap Inc. Augmented reality system
US10499191B1 (en) 2017-10-09 2019-12-03 Snap Inc. Context sensitive presentation of content
US11617056B2 (en) 2017-10-09 2023-03-28 Snap Inc. Context sensitive presentation of content
US11006242B1 (en) 2017-10-09 2021-05-11 Snap Inc. Context sensitive presentation of content
US11670025B2 (en) 2017-10-30 2023-06-06 Snap Inc. Mobile-based cartographic control of display content
US11030787B2 (en) 2017-10-30 2021-06-08 Snap Inc. Mobile-based cartographic control of display content
US11558327B2 (en) 2017-12-01 2023-01-17 Snap Inc. Dynamic media overlay with smart widget
US11265273B1 (en) 2017-12-01 2022-03-01 Snap, Inc. Dynamic media overlay with smart widget
US11943185B2 (en) 2017-12-01 2024-03-26 Snap Inc. Dynamic media overlay with smart widget
US11687720B2 (en) 2017-12-22 2023-06-27 Snap Inc. Named entity recognition visual context and caption data
US11017173B1 (en) 2017-12-22 2021-05-25 Snap Inc. Named entity recognition visual context and caption data
US10678818B2 (en) 2018-01-03 2020-06-09 Snap Inc. Tag distribution visualization system
US11487794B2 (en) 2018-01-03 2022-11-01 Snap Inc. Tag distribution visualization system
US11841896B2 (en) 2018-02-13 2023-12-12 Snap Inc. Icon based tagging
US11507614B1 (en) 2018-02-13 2022-11-22 Snap Inc. Icon based tagging
US11523159B2 (en) 2018-02-28 2022-12-06 Snap Inc. Generating media content items based on location information
US10979752B1 (en) 2018-02-28 2021-04-13 Snap Inc. Generating media content items based on location information
US10885136B1 (en) 2018-02-28 2021-01-05 Snap Inc. Audience filtering system
US11570572B2 (en) 2018-03-06 2023-01-31 Snap Inc. Geo-fence selection system
US10327096B1 (en) 2018-03-06 2019-06-18 Snap Inc. Geo-fence selection system
US11722837B2 (en) 2018-03-06 2023-08-08 Snap Inc. Geo-fence selection system
US11044574B2 (en) 2018-03-06 2021-06-22 Snap Inc. Geo-fence selection system
US10524088B2 (en) 2018-03-06 2019-12-31 Snap Inc. Geo-fence selection system
US10933311B2 (en) 2018-03-14 2021-03-02 Snap Inc. Generating collectible items based on location information
US11491393B2 (en) 2018-03-14 2022-11-08 Snap Inc. Generating collectible items based on location information
US11163941B1 (en) 2018-03-30 2021-11-02 Snap Inc. Annotating a collection of media content items
US10681491B1 (en) 2018-04-18 2020-06-09 Snap Inc. Visitation tracking system
US10779114B2 (en) 2018-04-18 2020-09-15 Snap Inc. Visitation tracking system
US11297463B2 (en) 2018-04-18 2022-04-05 Snap Inc. Visitation tracking system
US10448199B1 (en) 2018-04-18 2019-10-15 Snap Inc. Visitation tracking system
US10924886B2 (en) 2018-04-18 2021-02-16 Snap Inc. Visitation tracking system
US10219111B1 (en) 2018-04-18 2019-02-26 Snap Inc. Visitation tracking system
US11683657B2 (en) 2018-04-18 2023-06-20 Snap Inc. Visitation tracking system
US11860888B2 (en) 2018-05-22 2024-01-02 Snap Inc. Event detection system
US11367234B2 (en) 2018-07-24 2022-06-21 Snap Inc. Conditional modification of augmented reality object
US10943381B2 (en) 2018-07-24 2021-03-09 Snap Inc. Conditional modification of augmented reality object
US11670026B2 (en) 2018-07-24 2023-06-06 Snap Inc. Conditional modification of augmented reality object
US10789749B2 (en) 2018-07-24 2020-09-29 Snap Inc. Conditional modification of augmented reality object
US10679393B2 (en) 2018-07-24 2020-06-09 Snap Inc. Conditional modification of augmented reality object
US10997760B2 (en) 2018-08-31 2021-05-04 Snap Inc. Augmented reality anthropomorphization system
US11676319B2 (en) 2018-08-31 2023-06-13 Snap Inc. Augmented reality anthropomorphtzation system
US11450050B2 (en) 2018-08-31 2022-09-20 Snap Inc. Augmented reality anthropomorphization system
US11455082B2 (en) 2018-09-28 2022-09-27 Snap Inc. Collaborative achievement interface
US11704005B2 (en) 2018-09-28 2023-07-18 Snap Inc. Collaborative achievement interface
US11799811B2 (en) 2018-10-31 2023-10-24 Snap Inc. Messaging and gaming applications communication platform
US11388258B2 (en) 2018-11-06 2022-07-12 Citrix Systems, Inc. Systems and methods for managing downloads from an embedded browser
US10862998B2 (en) * 2018-11-06 2020-12-08 Citrtix Systems, Inc. Systems and methods for managing downloads from an embedded browser
US20200145515A1 (en) * 2018-11-06 2020-05-07 Citrix Systems, Inc. Systems and methods for managing downloads from an embedded browser
US11812335B2 (en) 2018-11-30 2023-11-07 Snap Inc. Position service to determine relative position to map features
US11558709B2 (en) 2018-11-30 2023-01-17 Snap Inc. Position service to determine relative position to map features
US11199957B1 (en) 2018-11-30 2021-12-14 Snap Inc. Generating customized avatars based on location information
US11698722B2 (en) 2018-11-30 2023-07-11 Snap Inc. Generating customized avatars based on location information
CN111324293A (en) * 2018-12-14 2020-06-23 杭州海康威视系统技术有限公司 Storage system, data storage method, data reading method and device
US11877211B2 (en) 2019-01-14 2024-01-16 Snap Inc. Destination sharing in location sharing system
US11751015B2 (en) 2019-01-16 2023-09-05 Snap Inc. Location-based context information sharing in a messaging system
US11693887B2 (en) 2019-01-30 2023-07-04 Snap Inc. Adaptive spatial density based clustering
US11294936B1 (en) 2019-01-30 2022-04-05 Snap Inc. Adaptive spatial density based clustering
US11809624B2 (en) 2019-02-13 2023-11-07 Snap Inc. Sleep detection in a location sharing system
US11500525B2 (en) 2019-02-25 2022-11-15 Snap Inc. Custom media overlay system
US11574431B2 (en) 2019-02-26 2023-02-07 Snap Inc. Avatar based on weather
US11301117B2 (en) 2019-03-08 2022-04-12 Snap Inc. Contextual information in chat
US11868414B1 (en) 2019-03-14 2024-01-09 Snap Inc. Graph-based prediction for contact suggestion in a location sharing system
US11852554B1 (en) 2019-03-21 2023-12-26 Snap Inc. Barometer calibration in a location sharing system
US11249614B2 (en) 2019-03-28 2022-02-15 Snap Inc. Generating personalized map interface with enhanced icons
US11740760B2 (en) 2019-03-28 2023-08-29 Snap Inc. Generating personalized map interface with enhanced icons
US11361493B2 (en) 2019-04-01 2022-06-14 Snap Inc. Semantic texture mapping system
US11785549B2 (en) 2019-05-30 2023-10-10 Snap Inc. Wearable device location systems
US11206615B2 (en) 2019-05-30 2021-12-21 Snap Inc. Wearable device location systems
US11606755B2 (en) 2019-05-30 2023-03-14 Snap Inc. Wearable device location systems architecture
US11601783B2 (en) 2019-06-07 2023-03-07 Snap Inc. Detection of a physical collision between two client devices in a location sharing system
US11917495B2 (en) 2019-06-07 2024-02-27 Snap Inc. Detection of a physical collision between two client devices in a location sharing system
US11714535B2 (en) 2019-07-11 2023-08-01 Snap Inc. Edge gesture interface with smart interactions
US11821742B2 (en) 2019-09-26 2023-11-21 Snap Inc. Travel based notifications
US10951703B1 (en) * 2019-10-15 2021-03-16 Microsoft Technology Licensing, Llc Peer-to-peer email content replication and synchronization
US11218838B2 (en) 2019-10-31 2022-01-04 Snap Inc. Focused map-based context information surfacing
US11729343B2 (en) 2019-12-30 2023-08-15 Snap Inc. Including video feed in message thread
US11429618B2 (en) 2019-12-30 2022-08-30 Snap Inc. Surfacing augmented reality objects
US11128715B1 (en) 2019-12-30 2021-09-21 Snap Inc. Physical friend proximity in chat
US11893208B2 (en) 2019-12-31 2024-02-06 Snap Inc. Combined map icon with action indicator
US11943303B2 (en) 2019-12-31 2024-03-26 Snap Inc. Augmented reality objects registry
US11343323B2 (en) 2019-12-31 2022-05-24 Snap Inc. Augmented reality objects registry
US11228551B1 (en) 2020-02-12 2022-01-18 Snap Inc. Multiple gateway message exchange
US11888803B2 (en) 2020-02-12 2024-01-30 Snap Inc. Multiple gateway message exchange
US11516167B2 (en) 2020-03-05 2022-11-29 Snap Inc. Storing data based on device location
US11765117B2 (en) 2020-03-05 2023-09-19 Snap Inc. Storing data based on device location
US11619501B2 (en) 2020-03-11 2023-04-04 Snap Inc. Avatar based on trip
US11430091B2 (en) 2020-03-27 2022-08-30 Snap Inc. Location mapping for large scale augmented-reality
US11915400B2 (en) 2020-03-27 2024-02-27 Snap Inc. Location mapping for large scale augmented-reality
US11776256B2 (en) 2020-03-27 2023-10-03 Snap Inc. Shared augmented reality system
US11483267B2 (en) 2020-06-15 2022-10-25 Snap Inc. Location sharing using different rate-limited links
US11314776B2 (en) 2020-06-15 2022-04-26 Snap Inc. Location sharing using friend list versions
US11290851B2 (en) 2020-06-15 2022-03-29 Snap Inc. Location sharing using offline and online objects
US11503432B2 (en) 2020-06-15 2022-11-15 Snap Inc. Scalable real-time location sharing framework
US11676378B2 (en) 2020-06-29 2023-06-13 Snap Inc. Providing travel-based augmented reality content with a captured image
US11943192B2 (en) 2020-08-31 2024-03-26 Snap Inc. Co-location connection service
US11902902B2 (en) 2021-03-29 2024-02-13 Snap Inc. Scheduling requests for location data
US11601888B2 (en) 2021-03-29 2023-03-07 Snap Inc. Determining location using multi-source geolocation data
US11606756B2 (en) 2021-03-29 2023-03-14 Snap Inc. Scheduling requests for location data
US11645324B2 (en) 2021-03-31 2023-05-09 Snap Inc. Location-based timeline media content system
US11829834B2 (en) 2021-10-29 2023-11-28 Snap Inc. Extended QR code
US11956533B2 (en) 2021-11-29 2024-04-09 Snap Inc. Accessing media at a geographic location
US11954314B2 (en) 2022-09-09 2024-04-09 Snap Inc. Custom media overlay system

Also Published As

Publication number Publication date
US9032050B2 (en) 2015-05-12

Similar Documents

Publication Publication Date Title
US9032050B2 (en) Systems and methods for accelerating remote data retrieval via peer nodes
US11144573B2 (en) Synchronization protocol for multi-premises hosting of digital content items
US20220147494A1 (en) Systems and methods for providing access to a data file stored at a data storage system
US9852147B2 (en) Selective synchronization and distributed content item block caching for multi-premises hosting of digital content items
US10691718B2 (en) Synchronization protocol for multi-premises hosting of digital content items
US10599457B2 (en) Importing and exporting virtual disk images
JP2019517043A (en) Automatic update of hybrid application
US10754632B2 (en) Converting desktop applications into cloud services
US11144600B2 (en) Available, scalable, and tunable document-oriented storage services
US20190245912A1 (en) Optimizing internet data transfers using an intelligent router agent
US10831719B2 (en) File consistency in shared storage using partial-edit files
US10880376B1 (en) Downloading chunks of an object from a storage service while chunks of the object are being uploaded
US20160246995A1 (en) Method and apparatus for authorized access to local files on a copy appliance
US10884621B2 (en) Block volume mount synchronization to prevent data corruption
Noertjahyana et al. Comparative Analysis of NFS and iSCSI Protocol Performance on OpenStack Cinder Technology
Chen et al. To Facilitate File Sync and File Share with Ezilla-Swift
Zhang et al. A Cloud Storage System based on Network Virtual Disk

Legal Events

Date Code Title Description
AS Assignment

Owner name: VMWARE, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HAEGER, EDWARD SCARLETT;CENNAME, MICHAEL;SKOWRONSKI, ANDREW;SIGNING DATES FROM 20121206 TO 20130107;REEL/FRAME:029579/0729

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: VMWARE INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:VMWARE, INC.;REEL/FRAME:038879/0902

Effective date: 20130109

Owner name: MOZY, INC., WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:VMWARE, INC.;REEL/FRAME:038879/0902

Effective date: 20130109

AS Assignment

Owner name: EMC IP HOLDING COMPANY LLC, TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MOZY, INC.;REEL/FRAME:045243/0432

Effective date: 20180312

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8