WO2022068276A1 - 桌面云系统以及相关方法、装置、设备、介质 - Google Patents
桌面云系统以及相关方法、装置、设备、介质 Download PDFInfo
- Publication number
- WO2022068276A1 WO2022068276A1 PCT/CN2021/101742 CN2021101742W WO2022068276A1 WO 2022068276 A1 WO2022068276 A1 WO 2022068276A1 CN 2021101742 W CN2021101742 W CN 2021101742W WO 2022068276 A1 WO2022068276 A1 WO 2022068276A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- desktop
- terminal
- cloud server
- event
- desktop cloud
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 63
- 230000006870 function Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 description 34
- 230000002093 peripheral effect Effects 0.000 description 23
- 230000005540 biological transmission Effects 0.000 description 22
- 238000004891 communication Methods 0.000 description 18
- 230000002085 persistent effect Effects 0.000 description 12
- 230000003993 interaction Effects 0.000 description 10
- 238000009877 rendering Methods 0.000 description 10
- 230000001133 acceleration Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000012795 verification Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 244000035744 Hura crepitans Species 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/452—Remote windowing, e.g. X-Window System, desktop virtualisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
Definitions
- the present application relates to the field of cloud computing technologies, and in particular, to a desktop cloud system and a method, apparatus, device, and computer-readable storage medium for providing a virtual desktop.
- VDI virtual desktop infrastructure
- the desktop cloud system includes personal devices such as terminals and desktop cloud servers. Users can access the desktop virtual machine environment deployed on the desktop cloud server through the desktop cloud client installed on the personal device.
- the core technology of the desktop cloud system is the desktop access protocol.
- the desktop access protocol defines the interaction protocol and communication channel between the desktop cloud client and the desktop cloud server (for example, a virtual machine on the desktop cloud server) to transmit desktop images, videos, peripheral events and other data.
- This architecture increases flexibility and protocol scalability, but brings greater performance issues.
- the protocol conversion component needs to consume a lot of computing power to decrypt and decode server-side protocol data such as video streams, and re-compress the decoded data according to the algorithm of the Guacamole protocol for video, image, audio and other data.
- a large amount of extra computing overhead is generated, which limits the number of web clients served by a single web server and increases the hardware cost of the desktop cloud system.
- the application provides a desktop cloud system.
- the desktop cloud system includes a desktop cloud server and a terminal.
- the desktop cloud server obtains encoded data output by a virtual desktop instance, sends the encoded data to the terminal, and the terminal directly decodes it on the terminal side.
- the virtual desktop is presented based on the decoded source data, without the need for secondary transcoding, which avoids additional computing overhead.
- the desktop cloud server can serve more terminals and reduce the hardware cost of the desktop cloud system.
- the present application also provides a method for providing a virtual desktop based on a desktop cloud system, and a corresponding apparatus, device, computer-readable storage medium, and computer program product.
- the present application provides a desktop cloud system.
- the desktop cloud system includes a desktop cloud server and a terminal.
- the desktop cloud server is deployed with virtual desktop instances.
- the virtual desktop instance is specifically a process or thread for providing a virtual desktop, and the process or thread may run directly on a physical machine such as a desktop cloud server, or run in a virtual machine or container on the physical machine.
- the virtual desktop instance may be a desktop cloud server that executes code block generation with the function of providing virtual desktops.
- the desktop cloud server is used to obtain the encoded data output by the virtual desktop instance, send the encoded data to the corresponding terminal, and then the terminal decodes the source data from the encoded data on the terminal side, and presents the virtual desktop according to the source data. Since there is no need to perform secondary transcoding, additional computing overhead caused by secondary transcoding is avoided, the number of terminals that can be served by the desktop cloud server is increased, and the hardware cost of the desktop cloud system is reduced.
- the desktop cloud server does not encode and decode the encoded data output by the virtual desktop instance, thereby solving the problem in the related art that a large amount of computing power is required to perform server-side protocol data such as video streaming.
- server-side protocol data such as video streaming.
- Decrypting, decoding, and re-compressing the decoded data according to the algorithm of the unified protocol, such as video, image, audio and other data reduces the computing overhead and the hardware cost of the desktop cloud system.
- the terminal is specifically used to utilize the bytecode specification, for example, compiling the algorithm provided by the private desktop access protocol into bytecode, so that the bytecode can be directly executed subsequently to realize decoding from the encoded data.
- the bytecode specification includes, but is not limited to, a Web Assembly (WebAssembly, wasm) bytecode specification and a Java bytecode specification.
- the source code of the algorithm provided by the private desktop access protocol is compiled into bytecode, the source code of the algorithm is not visible in the terminal, thereby solving the problem of leakage of the private desktop access protocol.
- the algorithm provided by the private desktop access protocol is compiled into bytecode, such as WebAssembly bytecode, which is greatly reduced in size, and does not require interpretation by an interpreter, which can be loaded and instantiated faster , reduce the waiting time before running, can perform computationally intensive tasks such as encoding and decoding with performance close to binary executable programs, realize encoding and decoding acceleration, further increase the number of terminals that the desktop cloud server can serve, and reduce hardware costs .
- the terminal is further configured to receive the event, encode the event to obtain the encoded event, and then send the encoded event to the desktop cloud server.
- the desktop cloud server is specifically configured to operate the virtual desktop instance according to the encoded event , to get the encoded data output by the virtual desktop instance.
- the virtual desktop can be remotely operated, and the similar effect of operating the desktop locally can be obtained, which provides convenience for the user and improves the user experience.
- the terminal may process any combination of the following multiple steps in parallel:
- the source data is decoded from the encoded data.
- the terminal can create multiple concurrent threads, for example, create multiple concurrent peripheral processing threads, audio processing threads, transmission threads, video processing threads, image processing threads, etc. These multiple concurrent threads can be executed in parallel, In this way, desktop protocol operations can be decoupled, and synchronization dependencies between desktop protocol operations can be avoided from affecting the real-time performance of desktop operations.
- multiple concurrent threads created by the terminal can share memory. In this way, these threads can exchange data through the shared memory, which reduces data copying. On the one hand, resource occupation can be reduced, and the other In this way, the delay caused by data copying is saved.
- the event specifically includes at least one of a mouse input event, a keyboard input event, and an audio input event.
- a mouse input event specifically includes at least one of a mouse input event, a keyboard input event, and an audio input event.
- different interaction methods such as keyboard and mouse interaction and voice interaction can be provided to meet the personalized needs of users.
- the source data includes any one or more of image data, audio data, and video data.
- the desktop cloud system can not only provide users with virtual desktops, but also play audio or video remotely to meet the personalized needs of users.
- the terminal deploys a browser client for accessing the virtual desktop instance. Due to the good compatibility of the browser client, the desktop cloud system based on the browser client has high availability. Moreover, there is no need to develop corresponding versions of dedicated clients for different personal devices, further reducing the cost of the desktop cloud system.
- an application layer persistent connection such as a WebSocket persistent connection
- a WebSocket persistent connection may be established between the terminal and the desktop cloud server.
- encoded data can be directly transmitted between the terminal and the desktop cloud server through the long connection at the application layer, without the need for secondary transcoding, which reduces computing overhead and hardware cost of the desktop cloud system.
- the present application provides a method for providing a virtual desktop.
- the method can be performed by a desktop cloud system.
- the desktop cloud system includes a desktop cloud server and a terminal, the desktop cloud server deploys a virtual desktop instance, and the method includes:
- the desktop cloud server obtains the encoded data output by the virtual desktop instance, and sends the encoded data to the terminal corresponding to the virtual desktop instance;
- the terminal decodes source data from the encoded data, and presents a virtual desktop according to the source data.
- the method further includes:
- the desktop cloud server does not encode and decode the encoded data output by the virtual desktop instance.
- the terminal decodes the source data from the encoded data, including:
- the terminal uses the bytecode specification to decode the source data from the encoded data.
- the method further includes:
- the terminal receives the event, encodes the event to obtain the encoded event, and then sends the encoded event to the desktop cloud server;
- the desktop cloud server obtains the encoded data output by the virtual desktop instance, including:
- the desktop cloud server operates the virtual desktop instance according to the encoding event, and obtains the encoded data output by the virtual desktop instance.
- the terminal performs any combination of the following multiple steps in parallel:
- the source data is decoded from the encoded data.
- the events include at least one of mouse input events, keyboard input events, and audio input events.
- the source data includes any one or more of image data, audio data, and video data.
- the terminal deploys a browser client for accessing the virtual desktop instance.
- the present application provides an apparatus for providing a virtual desktop.
- the apparatus includes a module for performing the method steps performed by the desktop cloud server in the second aspect or any implementation manner of the second aspect.
- the present application provides an apparatus for providing a virtual desktop.
- the apparatus includes a module for performing the method steps performed by the terminal in the second aspect or any implementation manner of the second aspect.
- the present application provides a desktop cloud server.
- the desktop cloud server is used to implement the functions of the desktop cloud server in the desktop cloud system according to the first aspect or any one of the implementation manners of the first aspect.
- the present application provides a terminal.
- the terminal is configured to implement the function of the terminal in the desktop cloud system according to the first aspect or any implementation manner of the first aspect.
- the present application provides a virtual desktop instance.
- the virtual desktop instance is used to implement the function of the virtual desktop instance in the desktop cloud system according to the first aspect or any implementation manner of the first aspect.
- the present application provides a desktop cloud server.
- the desktop cloud server includes a processor and a memory.
- the processor and the memory communicate with each other.
- the processor is configured to execute instructions stored in the memory to cause an apparatus to perform a method as in the second aspect or any implementation of the second aspect.
- the present application provides a terminal.
- the terminal includes a processor and memory.
- the processor and the memory communicate with each other.
- the processor is configured to execute the instructions stored in the memory, so that the terminal executes the method in the second aspect or any one of the implementation manners of the second aspect.
- the present application provides a computer-readable storage medium, where instructions are stored in the computer-readable storage medium, and the instructions instruct the desktop cloud server to execute the second aspect or any one of the implementations of the second aspect. method described.
- the present application provides a computer-readable storage medium, where an instruction is stored in the computer-readable storage medium, and the instruction instructs a terminal to execute the second aspect or any one of the implementation manners of the second aspect.
- the present application provides a computer program product comprising instructions.
- the desktop cloud server is made to execute the method described in the second aspect or any one of the implementation manners of the second aspect.
- the present application provides a computer program product comprising instructions.
- the terminal When it runs on the desktop cloud server, the terminal is made to execute the method described in the second aspect or any one of the implementation manners of the second aspect.
- the present application may further combine to provide more implementation manners.
- FIG. 1 is a system architecture diagram of a desktop cloud system according to an embodiment of the present application.
- FIG. 2 is a flowchart of a method for providing a virtual desktop according to an embodiment of the present application
- FIG. 3 is a schematic flowchart of data transmission by an end-side protocol module according to an embodiment of the present application
- FIG. 4 is a schematic flowchart of a browser client interaction data provided by an embodiment of the present application.
- FIG. 5 is a flowchart of a method for providing a virtual desktop according to an embodiment of the present application
- FIG. 6 is a schematic structural diagram of a desktop cloud server according to an embodiment of the present application.
- FIG. 7 is a schematic structural diagram of a terminal according to an embodiment of the present application.
- first and second in the embodiments of the present application are only used for the purpose of description, and cannot be understood as indicating or implying relative importance or implying the number of indicated technical features. Thus, a feature defined as “first” or “second” may expressly or implicitly include one or more of that feature.
- VDI Virtual desktop infrastructure
- the principle of the virtual desktop solution based on the VDI architecture is to prepare a dedicated virtual machine for each user on the server side, deploy the operating system and various applications required by the user in the virtual machine, and then transfer the complete virtual machine through the desktop access protocol.
- Desktops ie, virtual desktops
- VDI Virtual desktop infrastructure
- the desktop cloud system includes desktop cloud servers and terminals.
- the desktop access protocol defines an interaction protocol for transmitting desktop images, videos, peripheral events and other data between a terminal (such as a desktop cloud client deployed on the terminal) and a desktop cloud server (such as a virtual machine deployed on the desktop cloud server). and communication channels.
- the open source client project deploys an extensible protocol conversion component architecture on the network (web) server.
- the extensible protocol conversion component architecture connects different protocol specifications by adding independent components, and converts them into protocol data that conforms to the specified protocol specifications such as the Guacamole protocol specification.
- the terminal and the desktop cloud server are connected through the Guacamole protocol specification. In this way, the flexibility and protocol scalability of the desktop cloud system can be improved.
- the protocol conversion component needs a lot of computing power to decrypt and decode server-side protocol data such as video streams, and re-compress the decoded data according to the Guacamole protocol algorithm for video, image, audio and other data.
- a large amount of extra computing overhead is generated, the number of web clients served by the web server is limited, and the hardware cost of the desktop cloud system is increased.
- inventions of the present application provide a desktop cloud system and a method for providing a virtual desktop based on the desktop cloud system.
- the desktop cloud system includes a desktop cloud server and a terminal.
- the desktop cloud server is deployed with virtual desktop instances.
- the desktop cloud server is used to obtain the encoded data output by the virtual desktop instance, send the encoded data to the corresponding terminal, and then the terminal decodes the source data from the encoded data on the terminal side, and presents the virtual desktop according to the source data. Since there is no need to perform secondary transcoding, additional computing overhead caused by secondary transcoding is avoided, the number of terminals that can be served by the desktop cloud server is increased, and the hardware cost of the desktop cloud system is reduced.
- the terminal can use the bytecode specification, for example, use the network assembly (WebAssembly, wasm) bytecode specification to precompile the algorithm provided by the private desktop access protocol into bytecode, and directly execute the bytecode for encoding and decoding.
- the source code of the algorithm provided by the private desktop access protocol is not visible in the terminal, thereby solving the problem of leakage of the private desktop access protocol.
- the algorithms provided by the private desktop access protocol are compiled into bytecodes, such as WebAssembly bytecodes, which are greatly reduced in size and do not require interpretation by an interpreter, which can be loaded and instantiated faster, reducing
- the waiting time before running can realize the execution of computationally intensive tasks such as encoding and decoding with the performance close to the binary executable program, achieve encoding and decoding acceleration, further increase the number of terminals that the desktop cloud server can serve, and further reduce hardware costs.
- the desktop cloud system 10 includes a terminal 12 and a desktop cloud server 14 .
- the desktop cloud server 14 deploys virtual desktop instances 142 .
- the virtual desktop instance 142 is specifically a process or thread for providing a virtual desktop, and the process or thread may run directly on a physical machine such as the desktop cloud server 14, or run in a virtual machine or container on the physical machine.
- the terminal 12 may deploy a client for accessing the virtual desktop instance 142, such as a browser client 122 for accessing the virtual desktop instance.
- browser clients 122 (or terminals 12 ) are in a one-to-one correspondence with virtual desktop instances 142 .
- the desktop cloud server 14 is configured to obtain the encoded data output by the virtual desktop instance 142, where the encoded data refers to encoding the source data, for example, data obtained by encoding according to an algorithm in a private desktop access protocol.
- the source data may include any one or more of image data, audio data, and video data.
- the desktop cloud server 14 then sends the encoded data to the terminal 12 corresponding to the virtual desktop instance 142 .
- the terminal 12 is used to decode the source data from the encoded data, and present the virtual desktop according to the source data. Specifically, the terminal 12 decodes the source data and presents the virtual desktop, which may be implemented by the browser client 122 .
- the browser client 122 includes an end-side protocol module 1222 and a portal module 1224 .
- the terminal-side protocol module 1222 is used to decode the source data from the encoded data
- the portal module 1224 is used to present the virtual desktop according to the source data.
- the terminal-side protocol module 1222 in the browser client 122 may be acquired in real time when the virtual desktop needs to be used.
- the desktop cloud system 10 further includes an access control subsystem, which includes a network server 16.
- the portal module 1224 can present the desktop user login page, capture the login information input by the user through the desktop user login page, such as user name, password, verification code and other information, and then send the login information to the network service module 162 in the network server 16.
- the network service module 162 can perform login verification according to the login information, for example, by comparing the login information with the relevant information in the account database, so as to realize the login verification.
- the browser client 122 can download the code of the terminal-side protocol module 1222 from the web server 16, eg, the web service module 162, and then deploy the terminal-side protocol module 1222 on the browser client 122 according to the code.
- the network server 16 may further include an authority control module 164 .
- the authority control module 164 is used to authenticate the logged in user, for example, to authenticate the access to the virtual desktop instance 142 . After the authentication is passed, the logged-in user is allowed to access the virtual desktop instance 142. To this end, the browser client 122 can download the code of the terminal-side protocol module 1222 from the network server 16. Otherwise, the logged-in user is denied access to the virtual desktop instance 142 and browses The server client 122 fails to download the code of the terminal-side protocol module 1222.
- the network service module 162 and the authority control module 164 may be software modules or hardware modules with corresponding functions. When it is a software module, it can be integrated in the same software or distributed in different software.
- FIG. 1 illustrates that the network service module 162 and the authority control module 164 are deployed on the network server 16. In some embodiments, the network service module 162 and the authority control module 164 may also be deployed in different servers, such as a network The service module 162 is deployed in the network server 16, and the authority control module 164 is deployed in the authentication server.
- the browser client 122 is configured to receive events, such as any one or more of keyboard input events, mouse input events, or audio input events, and then encode the events to obtain the encoded events , and send the encoded event to the desktop cloud server 14 .
- the desktop cloud server 14 is configured to operate the virtual desktop instance 142 according to the encoded event to obtain encoded data output by the virtual desktop instance 142 .
- the browser client 122 receives events through the portal module 1224 .
- the portal module 1224 includes a peripheral capture thread, an audio capture and playback thread, and an image rendering thread, wherein the peripheral capture thread is used to capture peripheral input events, such as keyboard input events, mouse input events, etc., and the audio capture and playback threads are used for capturing peripheral input events. for capturing audio input events.
- the terminal-side protocol module 1222 can obtain the above-mentioned events from the portal module 1224 , then encode the events to obtain the encoded events, and then send the encoded events to the desktop cloud server 14 .
- the end-side protocol module 1222 includes a transmission thread, a peripheral processing thread and an audio processing thread.
- the transmission thread can be used to obtain events from the portal module 1224
- the peripheral processing thread can be used to encode the events to obtain the encoded events
- the transmission thread is also used to send the encoded events to the desktop cloud server 14 .
- the end-side protocol module 1222 may also include any one or more of image processing threads and video processing threads.
- the transmission thread is also used to obtain the encoded data output by the virtual desktop instance 142, and the encoded data may be encoded image data, encoded audio data or encoded video data.
- the image processing thread is used for decoding the encoded image data
- the audio processing thread is further used for decoding the encoded audio data
- the video processing thread is used for decoding the encoded video data.
- the portal module 1224 can obtain image data from the terminal-side protocol module 1222, and perform image rendering through the image rendering thread, so as to present the virtual desktop on the desktop display main page.
- the portal module 1224 can also obtain audio data from the terminal-side protocol module 1222, and play the audio through the audio capture and playback thread.
- the portal module 1224 can also acquire video data from the terminal-side protocol module 1222, and then display the main page on the desktop to play the video.
- the end-side protocol module 1222 may be implemented by a bytecode specification, such as a WebAssembly bytecode specification.
- the end-side protocol module 1222 runs in the WebAssembly runtime environment and can natively support multithreading. Therefore, the browser client 122 can create concurrent threads, such as concurrent video processing threads, image processing threads, audio processing threads, peripheral processing threads, and transmission threads, through the terminal-side protocol module 1222, thereby concurrently executing the following multiple steps any combination of:
- Decode source data from encoded data
- desktop protocol operations can be decoupled, and synchronization dependencies between desktop protocol operations can be avoided to affect the real-time performance of desktop operations.
- memory can be shared between threads, so that threads can directly exchange data through the shared memory when exchanging data, thereby reducing the number of data copies, reducing resource occupation, and improving resource utilization.
- the peripheral processing thread and the transmission thread can share memory. After the peripheral processing thread encodes the peripheral input event to obtain the encoded event, the transmission thread directly obtains the encoded event through the shared memory and transmits it to the desktop cloud server 14 .
- memory can also be shared between the portal module 1224 and the end-side protocol module 1222.
- memory can also be shared between the portal module 1224 and the end-side protocol module 1222. In this way, the number of times of data copying between the portal module 1224 and the terminal-side protocol module 1222 can be reduced, resource occupation can be reduced, resource utilization can be improved, and delay caused by data copying can be reduced.
- the terminal-side protocol module 1222 implemented based on bytecode specifications such as WebAssembly can perform computationally intensive tasks such as protocol encoding and decoding in the browser client 122 with performance close to a binary executable program, thereby realizing encoding and decoding acceleration.
- the performance can be improved several times or even more than 10 times. In this way, the number of browser clients 122 that can be served by the desktop cloud server 14 is further increased, and the hardware cost is reduced.
- the desktop cloud system 10 can utilize the efficient coding and compression algorithm provided by the private protocol specification to compress the event or source data to obtain data with a high compression ratio. Only less bandwidth resources are required for transmission between the terminal 12 (eg, the browser client 122 ) and the desktop cloud server 14, which improves the utilization efficiency of bandwidth resources, thereby ensuring the real-time interaction of the keyboard and mouse, and Solve the problem of video image jitter, smear and so on.
- the desktop cloud system 10 may further include a desktop gateway 18 .
- the desktop gateway 18 is specifically configured to route encoded events of different browser clients 122 and route encoded data of different virtual desktop instances 142 .
- An application layer persistent connection can be established between the browser client 122 and the desktop cloud server 14, and the application layer persistent connection is used to transmit encoded events or encoded data, and the desktop cloud server 14 does not encode and decode the encoded data output by the virtual desktop instance 142, That is, there is no need to perform secondary transcoding, the number of browser clients 122 that can be served by the desktop cloud server 14 is increased, and the hardware cost is reduced.
- the application layer persistent connection refers to a persistent connection established at the application layer, and the application layer persistent connection may specifically be a web socket (WebSocket) persistent connection.
- the application layer long connection established between the browser client 122 and the desktop cloud server 14 may be established between the terminal-side protocol module 1222 and the desktop gateway 18 Application layer long connection between.
- the terminal-side protocol module 1222 can send the encoded event to the desktop gateway 18 through the application layer long connection between the terminal-side protocol module 1222 and the desktop gateway 18, and then the desktop gateway 18 is connected with the corresponding virtual desktop instance 142.
- a user datagram (UDP) connection or a transmission control protocol (transmission control protocol, TCP) connection to transmit the encoded event to the corresponding virtual desktop instance 142 .
- the virtual desktop instance 142 can perform operations according to the encoding event, obtain corresponding source data, then encode the source data, and output the encoded data.
- the desktop cloud server 14 obtains the encoded data output by the virtual desktop instance, and transmits the encoded data to the desktop gateway 18 through a connection with the desktop gateway 18 such as a TCP or UDP connection, and then the desktop gateway 18 passes the application with the terminal-side protocol module 1222.
- the layer length connection is transmitted to the end-side protocol module 1222 .
- FIG. 1 only shows one terminal 12 .
- the desktop cloud system 10 may include multiple terminals 12, and the desktop cloud server 14 may provide services for the multiple terminals 12, which is not limited in this embodiment of the present application.
- FIG. 1 illustrates the architecture of the desktop cloud system 10 in detail.
- the method provided by the embodiment of the present application will be described in detail below from the perspective of the desktop cloud system 10 .
- the method includes:
- S202 The terminal 12 receives the event.
- the event can be a peripheral input event or an audio input event.
- the peripheral input events include keyboard input events, mouse input events, touch input events, stylus input events, etc., which will not be listed one by one here.
- the terminal 12 deploys a client for accessing the virtual desktop instance 142 , such as the browser client 122 .
- the browser client 122 can capture peripheral input events through the peripheral capture thread in the portal module 1224, and capture audio input events through the audio capture and playback thread. I will not list them one by one here.
- S204 The terminal 12 encodes the event to obtain an encoded event.
- the terminal-side protocol module 1222 in the browser client 122 deployed by the terminal 12 may be implemented based on bytecode specifications such as WebAssembly.
- the terminal 12 can use the terminal-side protocol module 1222 implemented based on the above bytecode specification to directly use the private desktop access protocol, specifically the algorithm provided by the desktop access protocol, to encode the event on the terminal side, thereby obtaining the encoded event.
- the encoding event may be an encoding event with a high compression ratio, so that bandwidth resource consumption can be reduced.
- the end-side protocol module 1222 implemented based on the bytecode specification does not require interpretation by an interpreter, and can encode events with performance close to a binary executable program, which greatly improves the encoding efficiency.
- terminal-side protocol module 1222 can share memory with the portal module 1224. Based on this, the terminal-side protocol module 1222 can directly obtain events through the shared memory, which can reduce the number of copy operations, thereby reducing unnecessary overhead.
- the terminal 12 can send the encoded event to the desktop gateway 18 through the application layer long connection between the terminal-side protocol module 1222 and the desktop gateway 18, such as a WebSocket long connection, and then the desktop gateway 18 communicates with the desktop cloud server through the desktop gateway 18.
- the desktop gateway 18 may route the encoded event to the virtual desktop instance 142 deployed by the desktop cloud server 14 and corresponding to the terminal 12 .
- the desktop cloud server 14 operates the virtual desktop instance 142 according to the encoding event to obtain encoded data output by the virtual desktop instance 142.
- the desktop cloud server 14 provides the encoded event to the corresponding virtual desktop instance 142, and the virtual desktop instance 142 can decode input events, such as peripheral input events and audio input events, from the encoded events.
- the virtual desktop instance 142 can perform corresponding operations to obtain source data, such as image data, audio data or video data, according to the input event.
- the virtual desktop instance 142 may encode the source data, obtain encoded data, and output the encoded data.
- the desktop cloud server 14 obtains the encoded data output by the virtual desktop instance.
- the method for providing a virtual desktop may not be performed above S202 to S208.
- the desktop cloud server 14 may also directly obtain the encoded data output by the virtual desktop instance 142, which is not limited in the embodiment of the present application.
- the desktop cloud server 14 can send the encoded data to the terminal 12 through the desktop gateway 18 and the application layer long connection of the terminal-side protocol module 1222, such as a WebSocket long connection, for example, to the browser client 122 deployed by the terminal 12.
- the end-side protocol module 1222 in .
- S212 The terminal 12 decodes the source data from the encoded data.
- the terminal-side protocol module 1222 in the browser client 122 deployed by the terminal 12 may be implemented based on bytecode specifications such as WebAssembly.
- the terminal 12 can directly use the private desktop access protocol on the terminal side, specifically the algorithm provided by the desktop access protocol, to decode the encoded data through the terminal-side protocol module 1222 implemented based on the bytecode specification, so as to obtain the source data.
- the end-side protocol module 1222 implemented based on the bytecode specification does not require interpretation by an interpreter, and can decode encoded data with performance close to a binary executable program, which greatly improves decoding efficiency.
- S214 The terminal 12 presents the virtual desktop according to the source data.
- the terminal can perform image rendering according to the image data, thereby presenting a virtual desktop.
- the portal module 1224 in the browser client 122 deployed by the terminal 12 can obtain image data from the terminal-side protocol module 1222, and then perform image rendering through the image rendering thread, and display the rendered image on the desktop display main page, thereby presenting virtual desktop.
- the terminal 12 may also perform video rendering according to the video data, thereby presenting a video picture.
- the terminal 12 may also play audio according to the audio data.
- the end-side protocol module 1222 can perform bidirectional data transmission. Specifically, the end-side protocol module 1222 can implement bidirectional data transmission through a transmission thread.
- the transmission thread may include an uplink data transmission queue, a downlink data transmission queue, and a WebSocket client.
- the uplink data transmission queue obtains the encoding event that needs to be transmitted to the desktop cloud server 14 from the input processing thread such as the peripheral processing thread and the audio processing thread by means of shared memory. Encoded mouse input events (mouse buttons, clicks) or encoded, microphone audio input data.
- the WebSocket client converts the underlying TCP/UDP communication request corresponding to the uplink data (specifically, the above coding event) generated by the terminal-side protocol module 1222 into a WebSocket request, interacts with the WebSocket listening port of the desktop gateway 18, and sends data from the desktop cloud server 14.
- the acquired encoded data is buffered into the downlink data transmission queue.
- the downlink data transmission queue buffers the encoded data obtained from the desktop cloud server 144, including encoded image data, encoded video data, encoded audio data, etc., and then forwards it to the output processing thread through shared memory, such as image processing Threads, audio processing threads, and video processing threads, which are decoded by these output processing threads to obtain source data, such as any one or more of image data, audio data, and video data. Then the thread interacts with the portal module 1224, and the portal module 1224 presents the virtual desktop on the desktop display main page according to the source data.
- the content displayed on the desktop display main page comes from the terminal-side protocol module 1222 .
- the desktop display main page of the portal module 1224 and the terminal-side protocol module 1222 exchange data by way of shared memory.
- the desktop display main page uses shared memory to interact asynchronously with the terminal-side protocol module 1222.
- the portal The module 1224 and the end-side protocol module 1222 determine the time interval according to the set frame rate, and periodically check the flag bit to determine whether there is data refresh. If there is uplink data, the terminal-side protocol module 1222 sends the uplink data to the desktop cloud server 14 through the WebSocket client; if there is downlink data, the desktop displays the main page for corresponding rendering or playback operations.
- different types of data may have different delay-sensitive characteristics, for example, mouse input events and the like are more sensitive to delay, while video data are less sensitive to delay.
- the desktop display main page and the terminal-side protocol module 1222 perform asynchronous interaction based on shared memory, the desktop display main page can be updated and displayed at different time intervals according to the delay-sensitive characteristics of various types of data, so as to avoid blocking the browser client.
- the main thread of 122 affects the overall performance of the desktop cloud system 10 .
- the above embodiments introduce the method for providing a virtual desktop provided by the embodiment of the present application.
- the method provided by the embodiment of the present application will be described in detail from the perspective of the terminal 12 .
- the method includes:
- the terminal 12 receives the event, encodes the event to obtain an encoded event, and sends the encoded event to the desktop cloud server 14 .
- Terminal 12 is deployed with a client, such as browser client 122 , for accessing virtual desktop instance 142 .
- the terminal 12 may receive events through the portal module 1224 of the browser client 122 .
- the terminal 12 can capture peripheral input events, such as keyboard input events and mouse input events, through the peripheral capture thread in the portal module 1224, and the terminal 12 can also capture audio input events through the audio capture thread in the portal module 1224.
- the terminal 12 can encode events through the terminal-side protocol module 1222 of the browser client 122, for example, encode events such as keyboard input events, mouse input events, and audio input events to obtain encoded events.
- an application layer persistent connection such as a WebSocket persistent connection
- the desktop cloud system 10 includes the desktop gateway 18
- an application layer persistent connection such as a WebSocket persistent connection
- the terminal 12 specifically, the terminal-side protocol module 1222
- the desktop gateway 18 can be established between the terminal 12 (specifically, the terminal-side protocol module 1222 ) and the desktop gateway 18 .
- the terminal-side protocol module 1222 of the terminal 12 can send the above-mentioned encoded event through the WebSocket long connection with the desktop gateway 18 , and then send the encoded event to the desktop cloud server 14 through the desktop gateway 18 .
- the terminal 12 receives the encoded data returned by the desktop cloud server 14 .
- the encoded data is obtained by the desktop cloud server 14 operating the virtual desktop instance 142 corresponding to the terminal 12 (specifically, the browser client 122 deployed by the terminal 12 ) according to the encoded event.
- the encoded data may specifically be encoded image data, audio data and video data.
- the encoded data is sent by the desktop cloud server 14 to the desktop gateway 18 , and the terminal 12 can receive the encoded data through a WebSocket long connection with the desktop gateway 18 .
- S506 The terminal 12 decodes the source data from the encoded data, and presents the virtual desktop according to the source data.
- the terminal 12 may create multiple parallel threads through the terminal-side protocol module 1222, and then process any combination of the following multiple steps in parallel through the parallel threads:
- the source data is decoded from the encoded data.
- the portal module 1224 in the browser client 122 may share memory with the end-side protocol module 1222.
- the portal module 1224 can exchange source data with the terminal-side protocol module 1222 in a shared memory manner, and after obtaining the source data, perform image rendering according to the source data such as image data, thereby presenting a virtual desktop.
- the browser client 122 based on WebAssembly can run in a sandbox environment controlled by the browser client 122 and cannot directly access device files, so it can be accelerated by hardware provided by the browser client 122 itself Supports hardware acceleration, such as graphics processor (graphical processing unit, GPU) rendering of two-dimensional (2-dimension, 2D) or 3D images through WebGL.
- graphics processor graphical processing unit, GPU
- an acceleration service may also be provided at the operating system level, and the service provides acceleration capability to the WebAssembly program (for example, the client-side protocol module 1222 ) in the browser client 122 by means of shared memory or WebSocket service, etc., In this way, the operation of a large amount of data can be accelerated at one time, and the extra overhead caused by interaction with the service can be reduced.
- the desktop cloud system provided by the embodiments of the present application and the method for providing virtual desktops based on the desktop cloud system are described in detail above with reference to FIGS. 1 to 5 , and the apparatuses and devices provided by the embodiments of the present application are introduced below.
- An embodiment of the present application provides an apparatus for providing a virtual desktop, and the apparatus includes a module for executing the method steps performed by the terminal 12 in the embodiment shown in FIG. 2 or FIG. 5 .
- the embodiment of the present application further provides another apparatus for providing a virtual desktop, the apparatus including a module for executing the method steps performed by the desktop cloud server 14 in the embodiment shown in FIG. 2 .
- the apparatus for providing virtual desktops may correspond to executing the methods described in the embodiments of the present application, and the above-mentioned and other operations and/or functions of the respective modules/units of the apparatus for providing virtual desktops are for realizing FIG. 2 or For the sake of brevity, the corresponding processes of each method in the embodiment shown in FIG. 5 will not be repeated here.
- the embodiment of the present application further provides a desktop cloud server 14, and the desktop cloud server 14 is specifically used to implement the functions of the desktop cloud server 14 in the desktop cloud system 10 shown in FIG. 1 .
- the desktop cloud server 14 will be introduced in detail from the perspective of hardware materialization.
- FIG. 6 provides a schematic structural diagram of a desktop cloud server 14 .
- the desktop cloud server 14 includes a bus 601 , a processor 602 , a communication interface 603 and a memory 604 . Communication between the processor 602 , the memory 604 and the communication interface 603 is through the bus 601 .
- the bus 601 may be a peripheral component interconnect (PCI) bus or an extended industry standard architecture (EISA) bus or the like.
- PCI peripheral component interconnect
- EISA extended industry standard architecture
- the bus can be divided into address bus, data bus, control bus and so on. For ease of presentation, only one thick line is used in FIG. 6, but it does not mean that there is only one bus or one type of bus.
- the processor 602 can be a central processing unit (central processing unit, CPU), a graphics processing unit (graphics processing unit, GPU), a microprocessor (microprocessor, MP), or a digital signal processor (digital signal processor, DSP) and other processing any one or more of the devices.
- CPU central processing unit
- GPU graphics processing unit
- MP microprocessor
- DSP digital signal processor
- the communication interface 603 is an input/output (I/O) device.
- the communication interface 603 is used for external communication. Specifically, the communication interface 603 can receive the encoded event sent by the terminal 12, or send the encoded data output by the virtual desktop instance 142 to the terminal 12 corresponding to the virtual desktop instance 142, and so on.
- Memory 604 may include volatile memory, such as random access memory (RAM).
- RAM random access memory
- the memory 604 may also include non-volatile memory (non-volatile memory), such as read-only memory (ROM), flash memory, hard disk drive (HDD), or solid state drive (solid state drive) , SSD).
- non-volatile memory such as read-only memory (ROM), flash memory, hard disk drive (HDD), or solid state drive (solid state drive) , SSD).
- Executable program codes are stored in the memory 604, and the processor 602 executes the executable program codes to execute the aforementioned method for providing a virtual desktop.
- the embodiment of the present application further provides a terminal 12, and the terminal 12 is specifically used to implement the functions of the terminal 12 in the desktop cloud system 10 shown in FIG. 1 .
- the terminal 12 will be described in detail from the perspective of hardware materialization.
- FIG. 7 provides a schematic structural diagram of a terminal 12 .
- the terminal 12 includes a bus 701 , a processor 702 , a communication interface 703 and a memory 704 .
- the processor 702 , the memory 704 and the communication interface 703 communicate through the bus 701 .
- the bus 701 may be a peripheral component interconnection standard PCI bus or an extended industry standard structure EISA bus or the like.
- the bus can be divided into address bus, data bus, control bus and so on. For ease of presentation, only one thick line is used in FIG. 7, but it does not mean that there is only one bus or one type of bus.
- the processor 702 may be any one or more of processors such as a central processing CPU, a graphics processor GPU, a microprocessor MP, or a digital signal processor DSP.
- processors such as a central processing CPU, a graphics processor GPU, a microprocessor MP, or a digital signal processor DSP.
- the communication interface 703 is an input and output device.
- the communication interface 703 is used for external communication.
- the communication interface 703 can send encoded events to the desktop cloud server 14, or receive encoded data sent by the desktop cloud server 14, and so on.
- the communication interface 703 may also include a display.
- displays can be divided into liquid crystal displays (LCD), organic light emitting diode (OLED) displays, etc.
- Communication interface 903 may also include a microphone. Among them, the display can present a virtual desktop, and the microphone can receive audio input.
- Memory 704 may include volatile memory, such as random access memory RAM.
- the memory 704 may also include non-volatile memory such as read only memory ROM, flash memory, mechanical hard disk HDD or solid state drive SSD.
- Executable program codes are stored in the memory 704, and the processor 702 executes the executable program codes to execute the aforementioned method for providing a virtual desktop.
- the embodiment of the present application further provides a virtual desktop instance 142, and the virtual desktop instance 142 is used to implement the functions of the virtual desktop instance 142 in the desktop cloud system 10 as shown in FIG. 1 .
- Embodiments of the present application further provide a computer-readable storage medium, where the computer-readable storage medium includes instructions, and the instructions instruct the desktop cloud server 14 to execute the foregoing method for providing a virtual desktop.
- Embodiments of the present application further provide a computer-readable storage medium, where the computer-readable storage medium includes instructions, and the instructions instruct the terminal 12 to execute the foregoing method for providing a virtual desktop.
- Embodiments of the present application further provide a computer program product, when the computer program product is executed by a computer, the computer executes any one of the foregoing methods for providing a virtual desktop.
- the computer program product can be a software installation package, which can be downloaded and executed on a computer if any one of the aforementioned methods of providing a virtual desktop needs to be used.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Multimedia (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请提供了一种桌面云系统,包括:桌面云服务器和终端。桌面云服务器部署虚拟桌面实例。桌面云服务器用于获取虚拟桌面实例输出的编码数据,将编码数据发送至与虚拟桌面对应的终端,终端用于从编码数据中解码出源数据,根据源数据呈现虚拟桌面。由于无需进行二次转码,避免了额外的计算开销,桌面云服务器能够服务较多的终端,降低了桌面云系统的硬件成本。
Description
本申请涉及云计算技术领域,尤其涉及一种桌面云系统以及提供虚拟桌面的方法、装置、设备以及计算机可读存储介质。
为了满足随时随地办公的需求,业界提出了虚拟桌面基础框架(virtual desktop infrastructure,VDI)。基于该架构实现的系统称作桌面云系统。桌面云系统包括终端等个人设备和桌面云服务器。用户可以通过在个人设备上安装的桌面云客户端访问部署在桌面云服务器上的桌面虚机环境。
桌面云系统的核心技术是桌面访问协议。桌面访问协议定义了桌面云客户端和桌面云服务器(例如是桌面云服务器上的虚机)之间传输桌面图像、视频、外设事件等数据的交互协议和通信通道。
然而,不同的桌面云产品各自定义了私有的协议规范。为了对接不同的协议规范,开源HTML5客户端项目如Apache Guacamole,在Web服务器端部署了可扩展的协议转换组件架构,通过增加独立的组件(例如guacd+远程桌面协议组件)对接不同的协议规范,并转换为符合Guacamole协议规范的协议数据。前端的Web客户端与服务端组件之间通过公开的Guacamole协议规范对接。
这种架构增加了灵活性、协议扩展性,但是带来较大的性能问题。具体地,协议转换组件需要耗费大量的计算能力进行服务端协议数据如视频流的解密、解码,并将解码后的数据重新按照Guacamole协议的算法重新进行视频、图像、音频等数据的压缩。由此产生大量的额外计算开销,限制了单个Web服务器所服务的Web客户端数量,增加了桌面云系统的硬件成本。
发明内容
本申请提供了一种桌面云系统,该桌面云系统包括桌面云服务器和终端,桌面云服务器获取虚拟桌面实例输出的编码数据,将该编码数据发送至终端,由终端直接在端侧进行解码,并根据解码出的源数据呈现虚拟桌面,无需进行二次转码,避免了额外的计算开销,桌面云服务器能够服务较多的终端,降低了桌面云系统的硬件成本。本申请还提供了基于桌面云系统提供虚拟桌面的方法以及对应的装置、设备、计算机可读存储介质以及计算机程序产品。
第一方面,本申请提供了一种桌面云系统。该桌面云系统包括桌面云服务器和终端。桌面云服务器部署有虚拟桌面实例。其中,虚拟桌面实例具体是用于提供虚拟桌面的进程或线程,该进程或线程可以直接运行在物理机如桌面云服务器中,或者是运行在物理机上的虚拟机或容器中。该虚拟桌面实例可以是桌面云服务器执行具有提供虚拟桌面功能的代码块生成。
具体地,桌面云服务器用于获取虚拟桌面实例输出的编码数据,将该编码数据发送至对应的终端,然后由终端在端侧从编码数据中解码出源数据,并根据源数据呈现虚拟桌面。由于无需进行二次转码,避免了二次转码导致的额外计算开销,提升了桌面云服务器所能服务的终端的数量,降低了桌面云系统的硬件成本。
在一些可能的实现方式中,所述桌面云服务器不对所述虚拟桌面实例输出的所述编码数据编解码,由此解决了相关技术中需要耗费大量的计算能力进行服务端协议数据如视频流的解密、解码,并将解码后的数据重新按照统一协议的算法重新进行视频、图像、音频等数据压缩的问题,减少了计算开销,降低了桌面云系统的硬件成本。
在一些可能的实现方式中,终端具体用于利用字节码规范,例如将私有的桌面访问协议所提供的算法编译为字节码,以便后续直接执行字节码,实现从编码数据中解码出所述源数据。其中,字节码规范包括但不限于网络组装(WebAssembly,wasm)字节码规范和Java字节码规范。
一方面,私有的桌面访问协议所提供的算法的源代码被编译为字节码后,其源代码在终端不可见,由此解决了私有的桌面访问协议泄露的问题。另一方面,私有的桌面访问协议所提供的算法被编译为字节码,例如被编译为WebAssembly字节码,其体积大幅减小,而且无需解释器进行解释,能够较快地加载和实例化,减少运行前等待时间,能够实现以接近于二进制可执行程序的性能执行编解码等计算密集型任务,实现编解码加速,进一步提高了桌面云服务器所能服务的终端的数量,降低了硬件成本。
在一些可能的实现方式中,终端还用于接收事件,对事件进行编码得到编码事件,然后向桌面云服务器发送所述编码事件,对应地,桌面云服务器具体用于根据编码事件操作虚拟桌面实例,以获取虚拟桌面实例输出的编码数据。
由此可以实现远程操作虚拟桌面,并获得在本地操作桌面近似的效果,为用户提供了便利,提高了用户体验。
在一些可能的实现方式中,终端可以并行处理如下多个步骤中的任一种组合:
对所述事件进行编码得到编码事件;
向所述桌面云服务器发送所述编码事件;
接收所述编码数据;
从所述编码数据中解码出所述源数据。
具体地,终端可以创建多个并发的线程,例如创建多个并发的外设处理线程、音频处理线程、传输线程、视频处理线程、图像处理线程等等,这多个并发的线程可以并行执行,如此可以解耦桌面协议操作,避免桌面协议操作之间的同步依赖性影响桌面操作的实时性。
在一些可能的实现方式中,终端创建的多个并发的线程之间可以共享内存,如此,这些线程之间可以通过该共享内存交互数据,减少了数据拷贝,一方面可以减少资源占 用,另一方面节省了数据拷贝导致的时延。
在一些可能的实现方式中,事件具体包括鼠标输入事件、键盘输入事件和音频输入事件中的至少一种。如此可以提供键鼠交互、语音交互等不同交互方式,满足用户个性化的需求。
在一些可能的实现方式中,所述源数据包括图像数据、音频数据和视频数据中的任意一种或多种。基于此,桌面云系统不仅可以为用户提供虚拟桌面,还可以远程播放音频或视频,满足用户个性化的需求。
在一些可能的实现方式中,所述终端部署用于接入所述虚拟桌面实例的浏览器客户端。由于浏览器客户端具有良好的兼容性,基于浏览器客户端的桌面云系统具有较高的可用性。而且,无需针对不同个人设备开发相应版本的专用客户端,进一步降低了桌面云系统的成本。
在一些可能的实现方式中,终端和桌面云服务器之间可以建立应用层长连接,例如是WebSocket长连接。如此,终端和桌面云服务器之间可以通过该应用层长连接直接传输编码数据,而不必进行二次转码,减少了计算开销,降低了桌面云系统的硬件成本。
第二方面,本申请提供了一种提供虚拟桌面的方法。该方法可以由桌面云系统执行。具体地,所述桌面云系统包括桌面云服务器和终端,所述桌面云服务器部署虚拟桌面实例,所述方法包括:
所述桌面云服务器获取所述虚拟桌面实例输出的编码数据,将所述编码数据发送至与所述虚拟桌面实例对应的所述终端;
所述终端从所述编码数据中解码出源数据,根据所述源数据呈现虚拟桌面。
在一些可能的实现方式中,所述方法还包括:
桌面云服务器不对所述虚拟桌面实例输出的所述编码数据编解码。
在一些可能的实现方式中,所述终端从所述编码数据中解码出源数据,包括:
所述终端利用字节码规范,从所述编码数据中解码出所述源数据。
在一些可能的实现方式中,所述方法还包括:
所述终端接收事件,对所述事件进行编码得到编码事件,然后向所述桌面云服务器发送所述编码事件;
所述桌面云服务器获取所述虚拟桌面实例输出的编码数据,包括:
所述桌面云服务器根据所述编码事件操作所述虚拟桌面实例,获取所述虚拟桌面实例输出的所述编码数据。
在一些可能的实现方式中,所述终端并行处理如下多个步骤中的任一种组合:
对所述事件进行编码得到编码事件;
向所述桌面云服务器发送所述编码事件;
接收所述编码数据;
从所述编码数据中解码出所述源数据。
在一些可能的实现方式中,所述事件包括鼠标输入事件、键盘输入事件和音频输入事件中的至少一种。
在一些可能的实现方式中,所述源数据包括图像数据、音频数据和视频数据中的任意一种或多种。
在一些可能的实现方式中,所述终端部署用于接入所述虚拟桌面实例的浏览器客户端。
第三方面,本申请提供了一种提供虚拟桌面的装置。该装置包括用于执行上述第二方面或第二方面的任一种实现方式中桌面云服务器所执行的方法步骤的模块。
第四方面,本申请提供了一种提供虚拟桌面的装置。该装置包括用于执行上述第二方面或第二方面的任一种实现方式中终端所执行的方法步骤的模块。
第五方面,本申请提供了一种桌面云服务器。所述桌面云服务器用于实现如第一方面或第一方面的任一种实现方式所述的桌面云系统中所述桌面云服务器的功能。
第六方面,本申请提供了一种终端。所述终端用于实现如第一方面或第一方面的任一种实现方式所述的桌面云系统中所述终端的功能。
第七方面,本申请提供了一种虚拟桌面实例。所述虚拟桌面实例用于实现如第一方面或第一方面的任一种实现方式所述的桌面云系统中所述虚拟桌面实例的功能。
第八方面,本申请提供一种桌面云服务器。所述桌面云服务器包括处理器和存储器。所述处理器、所述存储器进行相互的通信。所述处理器用于执行所述存储器中存储的指令,以使得设备执行如第二方面或第二方面的任一种实现方式中的方法。
第九方面,本申请提供一种终端。所述终端包括处理器和存储器。所述处理器、所述存储器进行相互的通信。所述处理器用于执行所述存储器中存储的指令,以使得终端执行如第二方面或第二方面的任一种实现方式中的方法。
第十方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,所述指令指示桌面云服务器执行上述第二方面或第二方面的任一种实现方式所述的方法。
第十一方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,所述指令指示终端执行上述第二方面或第二方面的任一种实现方式所述的方法。
第十二方面,本申请提供了一种包含指令的计算机程序产品。当其在桌面云服务器上运行时,使得桌面云服务器执行上述第二方面或第二方面的任一种实现方式所述的方法。
第十三方面,本申请提供了一种包含指令的计算机程序产品。当其在桌面云服务器 上运行时,使得终端执行上述第二方面或第二方面的任一种实现方式所述的方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
为了更清楚地说明本申请实施例的技术方法,下面将对实施例中所需使用的附图作以简单地介绍。
图1为本申请实施例提供的一种桌面云系统的系统架构图;
图2为本申请实施例提供的一种提供虚拟桌面的方法的流程图;
图3为本申请实施例提供的一种端侧协议模块传输数据的流程示意图;
图4为本申请实施例提供的一种浏览器客户端交互数据的流程示意图;
图5为本申请实施例提供的一种提供虚拟桌面的方法的流程图;
图6为本申请实施例提供的一种桌面云服务器的结构示意图;
图7为本申请实施例提供的一种终端的结构示意图。
本申请实施例中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
首先对本申请实施例中所涉及到的一些技术术语进行介绍。
虚拟桌面基础框架(virtual desktop infrastructure,VDI)是一种为用户提供虚拟桌面的系统架构。基于VDI架构的虚拟桌面解决方案的原理是在服务器侧为每个用户准备专用的虚拟机并在虚拟机中部署用户所需的操作系统和各种应用,然后通过桌面访问协议将完整的虚拟机桌面(即虚拟桌面)交付给远程用户使用。
基于VDI架构的系统也称作桌面云系统。桌面云系统包括桌面云服务器和终端。桌面访问协议定义了终端(例如是部署在终端的桌面云客户端)和桌面云服务器(例如是部署在桌面云服务器的虚拟机)之间传输桌面图像、视频、外设事件等数据的交互协议和通信通道。
不同类型的桌面云系统各自定义了私有的桌面访问协议。为了对接不同的协议规范,开源客户端项目在网络(web)服务器部署了可扩展的协议转换组件架构。可扩展的协议转换组件架构通过增加独立的组件对接不同的协议规范,并转换为符合指定协议规范如Guacamole协议规范的协议数据。终端和桌面云服务器之间通过Guacamole协议规范对接,如此,可以提升桌面云系统的灵活性以及协议扩展性。
然而,协议转换组件需要耗费大量的计算能力进行服务端协议数据如视频流的解密、解码,并将解码后的数据重新按照Guacamole协议的算法重新进行视频、图像、音频等数据的压缩。由此产生大量的额外计算开销,限制了web服务器所服务的web客户端的 数量,增加了桌面云系统的硬件成本。
有鉴于此,本申请实施例提供了一种桌面云系统以及基于该桌面云系统提供虚拟桌面的方法。该桌面云系统包括桌面云服务器和终端。其中,桌面云服务器部署有虚拟桌面实例。桌面云服务器用于获取虚拟桌面实例输出的编码数据,将该编码数据发送至对应的终端,然后由终端在端侧从编码数据中解码出源数据,并根据源数据呈现虚拟桌面。由于无需进行二次转码,避免了二次转码导致的额外计算开销,提升了桌面云服务器所能服务的终端的数量,降低了桌面云系统的硬件成本。
其中,终端可以利用字节码规范,例如利用网络组装(WebAssembly,wasm)字节码规范,将私有的桌面访问协议所提供的算法预编译为字节码,直接执行字节码以进行编解码,私有的桌面访问协议所提供的算法的源代码在终端不可见,由此解决了私有的桌面访问协议泄露的问题。
并且,私有的桌面访问协议所提供的算法被编译为字节码,例如被编译为WebAssembly字节码,其体积大幅减小,而且无需解释器进行解释,能够较快地加载和实例化,减少运行前等待时间,能够实现以接近于二进制可执行程序的性能执行编解码等计算密集型任务,实现编解码加速,进一步提高了桌面云服务器所能服务的终端的数量,进一步降低了硬件成本。
为了使得本申请的技术方案更加清楚、易于理解,下面结合附图对本申请实施例提供的桌面云系统进行介绍。
参见图1所示的桌面云系统的架构示意图,该桌面云系统10包括终端12和桌面云服务器14。桌面云服务器14部署虚拟桌面实例142。其中,虚拟桌面实例142具体是用于提供虚拟桌面的进程或线程,该进程或线程可以直接运行在物理机如桌面云服务器14中,或者是运行在物理机上的虚拟机或容器中。终端12可以部署用于接入虚拟桌面实例142的客户端,例如是用于接入虚拟桌面实例的浏览器客户端122。在一些实施例中,浏览器客户端122(或者是终端12)与虚拟桌面实例142一一对应。
具体地,桌面云服务器14用于获取虚拟桌面实例142输出的编码数据,该编码数据是指对源数据进行编码,例如是按照私有的桌面访问协议中的算法进行编码所得的数据。该源数据可以包括图像数据、音频数据和视频数据中的任意一种或多种。然后桌面云服务器14将编码数据发送至与虚拟桌面实例142对应的终端12。终端12用于从编码数据中解码出源数据,根据源数据呈现虚拟桌面。其中,终端12解码出源数据以及呈现虚拟桌面具体可以通过浏览器客户端122实现。
在一些可能的实现方式中,参见图1,浏览器客户端122包括端侧协议模块1222和门户模块1224。其中,端侧协议模块1222用于从编码数据中解码出源数据,门户模块1224用于根据源数据呈现虚拟桌面。
需要说明的是,浏览器客户端122中的端侧协议模块1222可以是在需要使用虚拟桌面时实时获取的。具体地,桌面云系统10还包括接入控制子系统,该接入控制 子系统包括网络服务器16。门户模块1224可以呈现桌面用户登录页面,通过桌面用户登录页面捕获用户输入的登录信息,如用户名、密码、验证码等信息,然后向网络服务器16中网络服务模块162发送登录信息。网络服务模块162可以根据登录信息进行登录验证,例如是将登录信息与账户数据库中的相关信息进行比较,从而实现登录验证。当登录验证通过时,浏览器客户端122可以从网络服务器16例如是网络服务模块162中下载端侧协议模块1222的代码,然后根据该代码在浏览器客户端122部署端侧协议模块1222。
进一步地,网络服务器16中还可以包括权限控制模块164。该权限控制模块164用于对登录用户进行鉴权,例如是对访问虚拟桌面实例142进行鉴权。当鉴权通过后,允许登录用户访问虚拟桌面实例142,为此,浏览器客户端122可以从网络服务器16下载端侧协议模块1222的代码,否则,拒绝该登录用户访问虚拟桌面实例142,浏览器客户端122下载端侧协议模块1222的代码失败。
其中,网络服务模块162和权限控制模块164可以是具有相应功能的软件模块或硬件模块。当其为软件模块时,可以集成在同一软件中,也可以分布在不同软件中。此外,图1是以网络服务模块162和权限控制模块164部署在网络服务器16进行示例说明,在一些实施例中,网络服务模块162和权限控制模块164也可以分别部署在不同服务器中,例如网络服务模块162部署在网络服务器16中,权限控制模块164部署在鉴权服务器中。
在一些可能的实现方式中,浏览器客户端122用于接收事件,例如是键盘输入事件、鼠标输入事件或者是音频输入事件等事件中的任意一个多个,然后对事件进行编码,得到编码事件,向桌面云服务器14发送编码事件。对应地,桌面云服务器14用于根据编码事件操作虚拟桌面实例142,以获取虚拟桌面实例142输出的编码数据。
其中,浏览器客户端122通过门户模块1224接收事件。门户模块1224包括外设捕获线程、音频捕获与播放线程和图像渲染线程,其中,外设捕获线程用于捕获外设输入事件,例如键盘输入事件、鼠标输入事件等等,音频捕获与播放线程用于捕获音频输入事件。
端侧协议模块1222可以从门户模块1224获取上述事件,然后对事件进行编码得到编码事件,然后将编码事件发送至桌面云服务器14。具体地,端侧协议模块1222包括传输线程、外设处理线程和音频处理线程。传输线程可以用于从门户模块1224获取事件,外设处理线程可以用于对事件进行编码得到编码事件,传输线程还用于将编码事件发送至桌面云服务器14。
端侧协议模块1222还可以包括图像处理线程和视频处理线程中的任意一个或多个。其中,传输线程还用于获取虚拟桌面实例142输出的编码数据,该编码数据可以编码后的图像数据、编码后的音频数据或者是编码后的视频数据。图像处理线程用于对编码后的图像数据进行解码,音频处理线程还用于对编码后的音频数据进行解码,视频处理线程用于对编码后的视频数据进行解码。
门户模块1224可以从端侧协议模块1222获取图像数据,通过图像渲染线程进行图像渲染,从而在桌面显示主页面呈现虚拟桌面。门户模块1224还可以从端侧协议模块1222获取音频数据,通过音频捕获与播放线程播放音频。类似地,门户模块1224还可以从端侧协议模块1222获取视频数据,然后在桌面显示主页面播放视频。
在一些可能的实现方式中,端侧协议模块1222可以通过字节码规范例如是WebAssembly字节码规范实现。端侧协议模块1222运行在WebAssembly运行时环境中,可以原生支持多线程。因此,浏览器客户端122可以通过端侧协议模块1222创建并发的线程,如并发的视频处理线程、图像处理线程、音频处理线程、外设处理线程、传输线程,从而并发执行如下多个步骤中的任一种组合:
对事件进行编码得到编码事件;
向桌面云服务器14发送编码事件;
接收编码数据;
从编码数据中解码出源数据。
通过这多个并行的线程可以解耦桌面协议操作,避免桌面协议操作之间的同步依赖性影响桌面操作的实时性。
进一步地,线程之间可以共享内存,如此线程在交互数据时可以直接通过共享内存交互数据,从而减少数据拷贝次数,减少资源占用,提高资源利用率。例如,外设处理线程和传输线程可以共享内存,外设处理线程对外设输入事件进行编码得到编码事件后,传输线程直接通过共享内存获得编码事件,传输至桌面云服务器14。
类似地,门户模块1224和端侧协议模块1222之间也可以共享内存。如此,可以减少门户模块1224和端侧协议模块1222之间数据拷贝次数,减少资源占用,提高资源利用率,而且能够降低数据拷贝导致的时延。
而且基于WebAssembly等字节码规范实现的端侧协议模块1222可在浏览器客户端122中以接近于二进制可执行程序的性能执行协议编解码等计算密集型任务,实现编解码加速。与基于asm.js或javascript等解释型语言的端侧程序相比,性能可提升数倍甚至10倍以上。如此进一步提高了桌面云服务器14所能服务的浏览器客户端122的数量,降低了硬件成本。
此外,桌面云系统10可以利用私有协议规范所提供的高效编码、压缩算法,对事件或者源数据进行压缩,得到高压缩比的数据。在终端12(例如是浏览器客户端122)和桌面云服务器14之间仅需较少的带宽资源即可传输,提高了带宽资源的使用效率,由此可以保证键鼠交互的实时性,以及解决视频图像抖动、拖影等问题。
考虑到桌面云服务器14部署多个虚拟桌面实例,为多个浏览器客户端122提供服务的情况,桌面云系统10还可以包括桌面网关18。该桌面网关18具体用于对不同浏览器客户端122的编码事件进行路由,对不同虚拟桌面实例142的编码数据进行路由。
浏览器客户端122和桌面云服务器14之间可以建立应用层长连接,该应用层长连接用于传输编码事件或编码数据,桌面云服务器14不对虚拟桌面实例142输出的编码数据进行编解码,也即无需进行二次转码,提高了桌面云服务器14所能服务的浏览器客户端122的数量,降低了硬件成本。其中,应用层长连接是指在应用层建立的长连接,该应用层长连接具体可以是网络套接字(WebSocket)长连接。
如图1所示,桌面云系统10中还包括桌面网关18时,浏览器客户端122和桌面云服务器14之间建立的应用层长连接可以是建立在端侧协议模块1222和桌面网关18之间的应用层长连接。如此,端侧协议模块1222可以将编码事件通过端侧协议模块1222和桌面网关18之间的应用层长连接发送至桌面网关18,然后桌面网关18通过与相应的虚拟桌面实例142之间的连接,如用户数据报(user datagram protocol,UDP)连接或传输控制协议(transmission control protocol,TCP)连接,将编码事件传输至相应的虚拟桌面实例142。类似地,虚拟桌面实例142可以根据编码事件执行操作,获得相应源数据,然后对源数据进行编码,输出编码数据。桌面云服务器14获取虚拟桌面实例输出的编码数据,并通过与桌面网关18的连接如TCP或UDP连接,将编码数据传输至桌面网关18,再由桌面网关18通过与端侧协议模块1222的应用层长连接传输至端侧协议模块1222。
需要说明的是,图1仅仅示出了一个终端12。在一些可能的实现方式中,桌面云系统10可以包括多个终端12,桌面云服务器14可以为多个终端12提供服务,本申请实施例对此不作限定。
图1对桌面云系统10的架构进行了详细说明。为了使得本申请的技术方案更加清楚、易于理解,下面将从桌面云系统10的角度对本申请实施例提供的方法进行详细说明。
参见图2所示的提供虚拟桌面的方法的流程图,该方法包括:
S202:终端12接收事件。
该事件可以是外设输入事件或者是音频输入事件。其中,外设输入事件包括键盘输入事件、鼠标输入事件、触摸输入事件、触控笔输入事件等等,在此不再一一列举。
在具体实现时,终端12部署用于接入虚拟桌面实例142的客户端,例如是浏览器客户端122。该浏览器客户端122可以通过门户模块1224中的外设捕获线程捕获外设输入事件,通过音频捕获与播放线程捕获音频输入事件。在此不再一一列举。
S204:终端12对事件进行编码,得到编码事件。
终端12部署的浏览器客户端122中的端侧协议模块1222可以基于WebAssembly等字节码规范实现。终端12可以通过上述基于字节码规范实现的端侧协议模块1222,直接在端侧利用私有的桌面访问协议,具体是该桌面访问协议提供的算法,对事件进行编码,从而得到编码事件。该编码事件具体可以是高压缩比的编码事件,如此可以减少带宽资源消耗。并且,基于字节码规范实现的端侧协议模块1222无需解释器进行解释,能够以 接近于二进制可执行程序的性能对事件进行编码,极大地提升了编码效率。
需要说明的是,端侧协议模块1222可以和门户模块1224共享内存,基于此,端侧协议模块1222可以直接通过共享内存获得事件,如此可以减少拷贝操作次数,进而减少不必要的开销。
S206:终端12将编码事件发送到桌面云服务器14。
具体地,终端12可以通过端侧协议模块1222和桌面网关18之间的应用层长连接,如WebSocket长连接,将编码事件先发送至桌面网关18,然后再由桌面网关18通过与桌面云服务器14之间的连接,如TCP或UDP连接将编码事件发送至桌面云服务器14。其中,桌面网关18可以将编码事件路由至桌面云服务器14部署的、与终端12对应的虚拟桌面实例142中。
S208:桌面云服务器14根据编码事件操作虚拟桌面实例142,以获得虚拟桌面实例142输出的编码数据。
具体地,桌面云服务器14将编码事件提供给相应的虚拟桌面实例142,虚拟桌面实例142可以从编码事件中解码出输入事件,例如外设输入事件、音频输入事件。虚拟桌面实例142可以根据输入事件,执行相应的操作,获得源数据,例如获得图像数据、音频数据或视频数据。虚拟桌面实例142可以对源数据进行编码,得到编码数据,并输出该编码数据。桌面云服务器14获取该虚拟桌面实例输出的编码数据。
需要说明,执行本申请实施例提供虚拟桌面的方法,也可以不执行上述S202至S208,例如桌面云服务器14也可以直接获取虚拟桌面实例142输出的编码数据,本申请实施例对此不作限定。
S210:桌面云服务器14将编码数据发送到终端12。
具体地,桌面云服务器14可以通过桌面网关18与端侧协议模块1222的应用层长连接,如WebSocket长连接,将编码数据发送至终端12,例如是发送至终端12部署的浏览器客户端122中的端侧协议模块1222。
S212:终端12从编码数据中解码出源数据。
终端12部署的浏览器客户端122中的端侧协议模块1222可以基于WebAssembly等字节码规范实现。终端12可以通过上述基于字节码规范实现的端侧协议模块1222,直接在端侧利用私有的桌面访问协议,具体是该桌面访问协议提供的算法,对编码数据进行解码,从而得到源数据。并且,基于字节码规范实现的端侧协议模块1222无需解释器进行解释,能够以接近于二进制可执行程序的性能对编码数据进行解码,极大地提升了解码效率。
S214:终端12根据源数据呈现虚拟桌面。
源数据包括图像数据时,终端可以根据图像数据进行图像渲染,从而呈现虚拟桌面。具体地,终端12部署的浏览器客户端122中的门户模块1224可以从端侧协议模块1222获取图像数据,然后通过图像渲染线程进行图像渲染,在桌面显示主页 面显示渲染后的图像,从而呈现虚拟桌面。
输出数据包括视频数据时,终端12还可以根据视频数据进行视频渲染,从而呈现视频画面。输出数据包括音频数据时,终端12还可以根据音频数据播放音频。
在图2所示实施例中,端侧协议模块1222可以进行双向数据传输。具体地,端侧协议模块1222可以通过传输线程实现双向数据传输。参见图3所示的数据传输的流程示意图,传输线程可以包括上行数据传输队列、下行数据传输队列以及WebSocket客户端。
具体地,上行数据传输队列通过共享内存的方式从输入处理线程如外设处理线程、音频处理线程中获取需要传输到桌面云服务器14的编码事件,该编码事件包括经过编码的键盘输入事件、经过编码的鼠标输入事件(鼠标按键、点击)或者是经过编码的、麦克风音频输入数据。
WebSocket客户端将端侧协议模块1222产生的上行数据(具体是上述编码事件)对应的底层TCP/UDP通信请求转换为WebSocket请求,与桌面网关18的WebSocket监听端口进行交互,并将从桌面云服务器14获取的编码数据缓冲到下行数据传输队列中。
下行数据传输队列缓冲从桌面云服务器144获取到的编码数据,包括编码后的图像数据、编码后的视频数据、编码后的音频数据等,然后通过共享内存方式转发给输出处理线程,如图像处理线程、音频处理线程、视频处理线程,由这些输出处理线程进行解码得到源数据,如图像数据、音频数据和视频数据中的任意一种或多种。再由该线程与门户模块1224交互,门户模块1224根据源数据在桌面显示主页面呈现虚拟桌面。
桌面显示主页面显示的内容来源于端侧协议模块1222。门户模块1224的桌面显示主页面和端侧协议模块1222通过共享内存的方式交互数据。参见图4所示的桌面显示主页面和端侧协议模块1222交互数据的流程示意图,如图4所示,桌面显示主页面利用共享内存与端侧协议模块1222之间异步交互,具体地,门户模块1224和端侧协议模块1222按照设定的帧码率确定时间间隔,周期性地检查标志位,从而判断是否有数据刷新。如果有上行数据,则端侧协议模块1222通过WebSocket客户端发送该上行数据到桌面云服务器14;如果有下行数据,则由桌面显示主页面进行相应的渲染或播放等操作。
进一步地,不同类型数据可以具有不同的时延敏感特征,例如,鼠标输入事件等对时延敏感性较高,而视频数据对时延敏感性较低。基于此,桌面显示主页面与端侧协议模块1222之间基于共享内存进行异步交互时,桌面显示主页面可以根据各类数据的时延敏感特征按照不同时间间隔更新显示,避免阻塞浏览器客户端122的主线程,影响桌面云系统10的整体性能。
以上实施例从桌面云系统10的角度,对本申请实施例提供的提供虚拟桌面的方法进行了介绍。接下来,将从终端12的角度,对本申请实施例提供的方法进行详细说明。
参见图5所示的提供虚拟桌面的方法的流程图,该方法包括:
S502:终端12接收事件,对事件进行编码得到编码事件,将编码事件发送到桌面云服务器14。
终端12部署有用于接入虚拟桌面实例142的客户端,例如浏览器客户端122。终端12可以通过浏览器客户端122的门户模块1224接收事件。具体地,终端12可以通过门户模块1224中的外设捕获线程捕获外设输入事件,如键盘输入事件、鼠标输入事件,终端12也可以通过门户模块1224中的音频捕获线程捕获音频输入事件。
终端12可以通过浏览器客户端122的端侧协议模块1222对事件进行编码,例如对键盘输入事件、鼠标输入事件、音频输入事件等事件进行编码,得到编码事件。
在一些可能的实现方式中,终端12与桌面云服务器14之间建立有应用层长连接,如WebSocket长连接。当桌面云系统10包括桌面网关18时,可以在终端12(具体是端侧协议模块1222)和桌面网关18之间建立应用层长连接,例如WebSocket长连接。如此,终端12中端侧协议模块1222可以通过与桌面网关18之间的WebSocket长连接发送上述编码事件,然后通过桌面网关18将编码事件发送至桌面云服务器14。
S504:终端12接收桌面云服务器14返回的编码数据。
其中,编码数据为桌面云服务器14根据编码事件操作终端12(具体可以是终端12部署的浏览器客户端122)对应的虚拟桌面实例142获得。该编码数据具体可以是经过编码的图像数据、音频数据和视频数据。
在一些可能的实现方式中,编码数据被桌面云服务器14发送至桌面网关18,终端12可以通过与桌面网关18的WebSocket长连接接收上述编码数据。
S506:终端12从编码数据中解码出源数据,根据源数据呈现虚拟桌面。
在一些可能的实现方式中,终端12可以通过端侧协议模块1222创建多个并行的线程,然后通过该并行的线程并行处理如下多个步骤中的任一种组合:
对所述事件进行编码得到编码事件;
向所述桌面云服务器发送所述编码事件;
接收所述编码数据;
从所述编码数据中解码出所述源数据。
其中,多个并行的线程之间可以共享内存。如此可以减少数据拷贝,提高数据处理的效率。进一步地,浏览器客户端122中的门户模块1224可以与端侧协议模块1222共享内存。对应地,门户模块1224可以通过共享内存的方式与端侧协议模块1222交互源数据,在获得源数据后,根据源数据如图像数据进行图像渲染,从而呈现虚拟桌面。
在本申请实施例中,基于WebAssembly的浏览器客户端122可以运行在该浏览器客户端122控制的沙箱环境中,无法直接访问设备文件,因此可以通过浏览器客户端122自身提供的硬件加速支持对进行硬件加速,例如通过WebGL进行二维(2 dimension,2D) 或3D图像的图形处理器(graphical processing unit,GPU)渲染。
在一些可能的实现方式中,还可以在操作系统级别提供加速服务,该服务通过共享内存或WebSocket服务等方式对浏览器客户端122中的WebAssembly程序(例如端侧协议模块1222)提供加速能力,如此可以实现一次性加速大量数据的运算,减少和服务交互带来的额外开销。
上文结合图1至图5对本申请实施例提供的桌面云系统以及基于桌面云系统提供虚拟桌面的方法进行了详细介绍,下面对本申请实施例提供的装置、设备进行介绍。
本申请实施例提供一种提供虚拟桌面的装置,该装置包括用于执行图2或图5所示实施例中终端12所执行的方法步骤的模块。本申请实施例还提供另一种提供虚拟桌面的装置,该装置包括用于执行图2所示实施例中桌面云服务器14所执行的方法步骤的模块。
根据本申请实施例的提供虚拟桌面的装置可对应于执行本申请实施例中描述的方法,并且提供虚拟桌面的装置的各个模块/单元的上述和其它操作和/或功能分别为了实现图2或图5所示实施例中的各个方法的相应流程,为了简洁,在此不再赘述。
本申请实施例还提供了一种桌面云服务器14,该桌面云服务器14具体用于实现图1所示的桌面云系统10中桌面云服务器14的功能。接下来,从硬件实体化的角度对桌面云服务器14进行详细介绍。
图6提供了一种桌面云服务器14的结构示意图,如图6所示,桌面云服务器14包括总线601、处理器602、通信接口603和存储器604。处理器602、存储器604和通信接口603之间通过总线601通信。
总线601可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
处理器602可以为中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。
通信接口603是一种输入输出(input/output,I/O)设备。通信接口603用于和外部通信。具体地,通信接口603可以接收终端12发送的编码事件,或者是将虚拟桌面实例142输出的编码数据发送至与虚拟桌面实例142对应的终端12等等。
存储器604可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。存储器604还可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器,机械硬盘(hard disk drive,HDD)或固态硬盘(solid state drive,SSD)。
存储器604中存储有可执行的程序代码,处理器602执行该可执行的程序代码以执行前述提供虚拟桌面方法。
本申请实施例还提供了一种终端12,该终端12具体用于实现图1所示的桌面云系统10中终端12的功能。接下来,从硬件实体化的角度对终端12进行详细介绍。
图7提供了一种终端12的结构示意图,如图7所示,终端12包括总线701、处理器702、通信接口703和存储器704。处理器702、存储器704和通信接口703之间通过总线701通信。
总线701可以是外设部件互连标准PCI总线或扩展工业标准结构EISA总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
处理器702可以为中央处理CPU、图形处理器GPU、微处理器MP或者数字信号处理器DSP等处理器中的任意一种或多种。
通信接口703是一种输入输出设备。通信接口703用于和外部通信。具体地,通信接口703可以向桌面云服务器14发送编码事件,或者是接收桌面云服务器14发送的编码数据等等。进一步地,通信接口703还可以包括显示器。根据制造材料不同,显示器可以分为液晶显示器(liquid crystal display,LCD)、有机电激光(organic light emitting diode,OLED)显示器等。通信接口903也可以包括麦克风。其中,显示器可以呈现虚拟桌面,麦克风可以接收音频输入。
存储器704可以包括易失性存储器,例如随机存取存储器RAM。存储器704还可以包括非易失性存储器,例如只读存储器ROM,快闪存储器,机械硬盘HDD或固态硬盘SSD。
存储器704中存储有可执行的程序代码,处理器702执行该可执行的程序代码以执行前述提供虚拟桌面方法。
本申请实施例还提供了一种虚拟桌面实例142,该虚拟桌面实例142用于实现如图1所示的桌面云系统10中虚拟桌面实例142的功能。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质包括指令,所述指令指示桌面云服务器14执行上述提供虚拟桌面的方法。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质包括指令,所述指令指示终端12执行上述提供虚拟桌面的方法。
本申请实施例还提供了一种计算机程序产品,所述计算机程序产品被计算机执行时,所述计算机执行前述提供虚拟桌面的方法的任一方法。该计算机程序产品可以为一个软件安装包,在需要使用前述提供虚拟桌面的方法的任一方法的情况下,可以下载该计算机程序产品并在计算机上执行该计算机程序产品。
Claims (23)
- 一种桌面云系统,其特征在于,所述桌面云系统包括桌面云服务器和终端,所述桌面云服务器部署虚拟桌面实例;所述桌面云服务器,用于获取所述虚拟桌面实例输出的编码数据,将所述编码数据发送至与所述虚拟桌面实例对应的所述终端;所述终端,用于从所述编码数据中解码出源数据,根据所述源数据呈现虚拟桌面。
- 根据权利要求1所述的系统,其特征在于,所述桌面云服务器不对所述虚拟桌面实例输出的所述编码数据编解码。
- 根据权利要求1或2所述的系统,其特征在于,所述终端具体用于利用字节码规范,从所述编码数据中解码出所述源数据。
- 根据权利要求1至3任一项所述的系统,其特征在于,所述终端还用于接收事件,对所述事件进行编码得到编码事件,向所述桌面云服务器发送所述编码事件;所述桌面云服务器具体用于根据所述编码事件操作所述虚拟桌面实例,以获取所述虚拟桌面实例输出的所述编码数据。
- 根据权利要求4所述的系统,其特征在于,所述终端并行处理如下多个步骤中的任一种组合:对所述事件进行编码得到编码事件;向所述桌面云服务器发送所述编码事件;接收所述编码数据;从所述编码数据中解码出所述源数据。
- 根据权利要求4或5所述的系统,其特征在于,所述事件包括鼠标输入事件、键盘输入事件和音频输入事件中的至少一种。
- 根据权利要求1至6任一项所述的系统,其特征在于,所述源数据包括图像数据、音频数据和视频数据中的任意一种或多种。
- 根据权利要求1至7任一项所述的系统,其特征在于,所述终端部署用于接入所述虚拟桌面实例的浏览器客户端。
- 一种提供虚拟桌面的方法,其特征在于,应用于桌面云系统,所述桌面云系统包括桌面云服务器和终端,所述桌面云服务器部署虚拟桌面实例,所述方法包括:所述桌面云服务器获取所述虚拟桌面实例输出的编码数据,将所述编码数据发送至与所述虚拟桌面实例对应的所述终端;所述终端从所述编码数据中解码出源数据,根据所述源数据呈现虚拟桌面。
- 根据权利要求9所述的方法,其特征在于,所述方法还包括:桌面云服务器不对所述虚拟桌面实例输出的所述编码数据编解码。
- 根据权利要求9或10所述的方法,其特征在于,所述终端从所述编码数据中解码出源数据,包括:所述终端利用字节码规范,从所述编码数据中解码出所述源数据。
- 根据权利要求9至11任一项所述的方法,其特征在于,所述方法还包括:所述终端接收事件,对所述事件进行编码得到编码事件,向所述桌面云服务器发送所述编码事件;所述桌面云服务器获取所述虚拟桌面实例输出的编码数据,包括:所述桌面云服务器根据所述编码事件操作所述虚拟桌面实例,获取所述虚拟桌面实例输出的所述编码数据。
- 根据权利要求12所述的方法,其特征在于,所述终端并行处理如下多个步骤中的任一种组合:对所述事件进行编码得到编码事件;向所述桌面云服务器发送所述编码事件;接收所述编码数据;从所述编码数据中解码出所述源数据。
- 根据权利要求12或13所述的方法,其特征在于,所述事件包括鼠标输入事件、键盘输入事件和音频输入事件中的至少一种。
- 根据权利要求9至14任一项所述的方法,其特征在于,所述源数据包括图像数据、音频数据和视频数据中的任意一种或多种。
- 根据权利要求9至15任一项所述的方法,其特征在于,所述终端部署用于接入所述虚拟桌面实例的浏览器客户端。
- 一种桌面云服务器,其特征在于,所述桌面云服务器用于实现如权利要求1至8中任一项所述的桌面云系统中所述桌面云服务器的功能。
- 一种终端,其特征在于,所述终端用于实现如权利要求1至8中任一项所述的桌面云系统中所述终端的功能。
- 一种虚拟桌面实例,其特征在于,所述虚拟桌面实例用于实现如权利要求1至8中任一项所述的桌面云系统中所述虚拟桌面实例的功能。
- 一种桌面云服务器,其特征在于,所述桌面云服务器包括处理器和存储器;所述处理器用于执行所述存储器中存储的指令,以使得所述桌面云服务器执行如权利要求9至16中任一项所述的方法。
- 一种终端,其特征在于,所述终端包括处理器和存储器;所述处理器用于执行所述存储器中存储的指令,以使得所述终端执行如权利要求9至16中任一项所述的方法。
- 一种计算机可读存储介质,其特征在于,包括指令,所述指令指示计算机执行如权利要求9至16中任一项所述的方法。
- 一种计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得计算机执行如权利要求9至16中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP21873938.1A EP4206916A4 (en) | 2020-09-29 | 2021-06-23 | DESKTOP CLOUD SYSTEM AND ASSOCIATED METHOD, APPARATUS, APPARATUS AND MEDIUM |
US18/191,385 US20230236856A1 (en) | 2020-09-29 | 2023-03-28 | Desktop Cloud System and Related Method, Apparatus, Device, and Medium |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011052754.3 | 2020-09-29 | ||
CN202011052754 | 2020-09-29 | ||
CN202011268930.7A CN114356465A (zh) | 2020-09-29 | 2020-11-13 | 桌面云系统以及相关方法、装置、设备、介质 |
CN202011268930.7 | 2020-11-13 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US18/191,385 Continuation US20230236856A1 (en) | 2020-09-29 | 2023-03-28 | Desktop Cloud System and Related Method, Apparatus, Device, and Medium |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2022068276A1 true WO2022068276A1 (zh) | 2022-04-07 |
Family
ID=80949682
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2021/101742 WO2022068276A1 (zh) | 2020-09-29 | 2021-06-23 | 桌面云系统以及相关方法、装置、设备、介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230236856A1 (zh) |
EP (1) | EP4206916A4 (zh) |
WO (1) | WO2022068276A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115562794A (zh) * | 2022-12-07 | 2023-01-03 | 天津卓朗昆仑云软件技术有限公司 | 虚拟桌面系统及虚拟桌面的实现方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103475953A (zh) * | 2013-09-13 | 2013-12-25 | 华为技术有限公司 | 一种基于桌面云的媒体控制方法和设备 |
CN103650458A (zh) * | 2013-08-16 | 2014-03-19 | 华为技术有限公司 | 媒体流的传输方法、装置与系统 |
CN105072190A (zh) * | 2015-08-21 | 2015-11-18 | 刘昌平 | 一种实时性桌面云的实现方法及系统 |
CN105224390A (zh) * | 2015-09-22 | 2016-01-06 | 宁夏大学 | 一种虚拟桌面压缩的方法 |
US20160112497A1 (en) * | 2014-10-16 | 2016-04-21 | Amazon Technologies, Inc. | On-demand delivery of applications to virtual desktops |
CN106331733A (zh) * | 2016-09-28 | 2017-01-11 | 广东科学技术职业学院 | 一种桌面云终端音视频数据实时处理方法及系统 |
CN107707622A (zh) * | 2017-08-30 | 2018-02-16 | 华为技术有限公司 | 一种访问桌面云虚拟机的方法、装置及桌面云控制器 |
CN111010582A (zh) * | 2019-12-18 | 2020-04-14 | 深信服科技股份有限公司 | 一种云桌面图像处理方法、装置、设备及可读存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10303497B2 (en) * | 2017-06-22 | 2019-05-28 | Vmware, Inc. | Hybrid software and GPU encoding for UI remoting |
US11880422B2 (en) * | 2019-02-04 | 2024-01-23 | Cloudflare, Inc. | Theft prevention for sensitive information |
-
2021
- 2021-06-23 WO PCT/CN2021/101742 patent/WO2022068276A1/zh unknown
- 2021-06-23 EP EP21873938.1A patent/EP4206916A4/en active Pending
-
2023
- 2023-03-28 US US18/191,385 patent/US20230236856A1/en active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103650458A (zh) * | 2013-08-16 | 2014-03-19 | 华为技术有限公司 | 媒体流的传输方法、装置与系统 |
CN103475953A (zh) * | 2013-09-13 | 2013-12-25 | 华为技术有限公司 | 一种基于桌面云的媒体控制方法和设备 |
US20160112497A1 (en) * | 2014-10-16 | 2016-04-21 | Amazon Technologies, Inc. | On-demand delivery of applications to virtual desktops |
CN105072190A (zh) * | 2015-08-21 | 2015-11-18 | 刘昌平 | 一种实时性桌面云的实现方法及系统 |
CN105224390A (zh) * | 2015-09-22 | 2016-01-06 | 宁夏大学 | 一种虚拟桌面压缩的方法 |
CN106331733A (zh) * | 2016-09-28 | 2017-01-11 | 广东科学技术职业学院 | 一种桌面云终端音视频数据实时处理方法及系统 |
CN107707622A (zh) * | 2017-08-30 | 2018-02-16 | 华为技术有限公司 | 一种访问桌面云虚拟机的方法、装置及桌面云控制器 |
CN111010582A (zh) * | 2019-12-18 | 2020-04-14 | 深信服科技股份有限公司 | 一种云桌面图像处理方法、装置、设备及可读存储介质 |
Non-Patent Citations (1)
Title |
---|
See also references of EP4206916A4 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115562794A (zh) * | 2022-12-07 | 2023-01-03 | 天津卓朗昆仑云软件技术有限公司 | 虚拟桌面系统及虚拟桌面的实现方法 |
CN115562794B (zh) * | 2022-12-07 | 2023-03-10 | 天津卓朗昆仑云软件技术有限公司 | 虚拟桌面系统及虚拟桌面的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
EP4206916A1 (en) | 2023-07-05 |
US20230236856A1 (en) | 2023-07-27 |
EP4206916A4 (en) | 2024-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107277612B (zh) | 用于在web浏览器上播放媒体流的方法和设备 | |
US10567809B2 (en) | Selective media playing method and apparatus according to live streaming and recorded streaming | |
US10298721B2 (en) | Method and system to determine a work distribution model for an application deployed on a cloud | |
JP5129151B2 (ja) | マルチユーザ・ディスプレイ・プロキシ・サーバ | |
US12034987B2 (en) | Systems and methods of orchestrated networked application services | |
CN109068153B (zh) | 视频播放方法、装置和计算机可读存储介质 | |
US11089349B2 (en) | Apparatus and method for playing back and seeking media in web browser | |
US20130093776A1 (en) | Delivering a Single End User Experience to a Client from Multiple Servers | |
US20170046013A1 (en) | Web-browser based desktop and application remoting solution | |
US11909799B2 (en) | Media playback apparatus and method including delay prevention system | |
Kim et al. | Cloud‐based gaming service platform supporting multiple devices | |
US20230236856A1 (en) | Desktop Cloud System and Related Method, Apparatus, Device, and Medium | |
CN114356465A (zh) | 桌面云系统以及相关方法、装置、设备、介质 | |
US10834164B2 (en) | Virtualizing audio and video devices using synchronous A/V streaming | |
CN108337248B (zh) | 媒体重放设备和媒体服务设备 | |
US11784887B1 (en) | Bandwidth throttling | |
KR101480140B1 (ko) | 멀티 인젝션 서버 및 그 방법 | |
US10231004B2 (en) | Network recording service | |
US9357269B2 (en) | Method and system for providing secure handling of information for complete internet anywhere | |
US10367876B2 (en) | Environmentally adaptive and segregated media pipeline architecture for multiple streaming sessions | |
Hu et al. | Multimedia Resource Sharing based on UPnP protocol and embedded device | |
CN113067997A (zh) | 一种实时视频通话的方法和装置 | |
Kwon et al. | A novel device sharing scheme for thin client | |
TW201319822A (zh) | 以圖形處理器提升可互動內容瀏覽服務的系統與方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
ENP | Entry into the national phase |
Ref document number: 2021873938 Country of ref document: EP Effective date: 20230330 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |