Product Profiles


ZStack Functional Architecture

The functional architecture of ZStack is shown in Figure 1.

Figure 1. ZStack Functional Architecture


ZStack helps enterprises better manage infrastructure resources, such as the compute, storage, and network resources, in their data centers. The bottom layer of ZStack supports both KVM and VMware virtualization technologies. In addition, ZStack supports various storage types, such as DAS, NAS, SAN, and DFS. To be more specific, local storage, NFS storage, SAN storage, and distributed block storage are supported. ZStack also supports various network models, such as VLAN and VXLAN.

ZStack uses a message bus to communicate with the MariaDB database and different service modules, providing diversified features such as VM instance management, host management, storage management, network management, billing management, and real-time monitoring. That is the core cloud engine of ZStack. In addition, ZStack provides Java SDKs and Python SDKs, and allows you to schedule and manage resources by using RESTful APIs. With ZStack, you can build a private cloud that is Simple, Strong, Scalable, and Smart.

Highlights of ZStack functional architecture:
  1. Asynchronous Architecture: asynchronous message, asynchronous method, and asynchronous HTTP call
    • ZStack uses a message bus to connect various services. When a service calls another service, the source service sends a message to the destination service, registers a callback function, and then returns back immediately. Once the destination service finishes the task, it gives a feedback on the task result by triggering the callback function that was registered by the source service. Asynchronous messages can be processed in parallel.
    • Services in ZStack communicate with each other through asynchronous messages. Inside services, the associated components and plugins are also called by using asynchronous methods. These methods are consistent with that of calling asynchronous messages.
    • Every plugin in ZStack has a corresponding agent. ZStack puts a callback URL in the HTTP header of every request. Therefore, agents can send responses to the URL of the caller when tasks are finished.
    • Based on asynchronous message, asynchronous method, and asynchronous HTTP call, ZStack builds a layered architecture to ensure that asynchronous operations can be performed on all components.
    • Based on the asynchronous architecture, a single ZStack management node can process tens of thousands of concurrent API requests per second, and simultaneously manage tens of thousands of servers and hundreds of thousands of VM instances.
  2. Stateless Service: A single request does not rely on other requests.
    • In ZStack, requests sent by compute node agents, storage agents, network services, console agent services, and configuration services can be processed without relying on other requests. The sent requests contain all the required information, and related nodes do not need to maintain and store any information.
    • ZStack authenticates resources such as management nodes and compute nodes through consistent hashing ring by using their UUIDs as the unique ID. Because of the consistent hashing ring, a message sender does not need to know which service instance is about to handle the message. Services do not need to maintain and exchange information about what resources they are managing. All the services need to do is to handle the incoming messages.
    • Little information is shared among ZStack management nodes. Therefore, a minimum of two management nodes can meet the requirements of high availability and scalability.
    • The stateless service mechanism makes the system more robust. Restarting the server will not lose any state information. This also simplifies the scaling out and scaling in of a data center.
  3. Lock-free Architecture: consistent hashing algorithm
    • The consistent hashing algorithm guarantees all messages of the same resource are always handled by the same service instance. In this way, messages are congregated to a specified node, reducing the complexity of synchronization and concurrency.
    • ZStack uses work queue to avoid lock contention. Serial tasks are stored in memory as work queues. Work queues can process any operation of any resource in parallel to improve system concurrency.
    • The queue-based lock-free architecture enables tasks to run in parallel, thereby improving the system performance.
  4. In-Process Microservices Architecture: microservices decoupling
    • ZStack uses a message bus to isolate and control various services, such as VM instance services, identity authentication services, snapshot services, volume services, network services, and storage services. All microservices are enclosed in the same process of a management node. These services communicate with each other through the message bus. After all messages are sent to the message bus, the destination service is selected by the consistent hashing ring for message forwarding.
    • In-process microservices provide a star-like architecture, ensuring every service in microservices to run independently. This architecture also decouples the highly centralized control business, and achieves a high degree of autonomy and isolation of the system. Failure of any service does not affect other components. This effectively guarantees the system reliability and stability.
  5. Versatile Plugin System: supports horizontal expansion of plugins
    • In ZStack, every plugin provides services independently. Any newly added plugin has no impact on other existing plugins.
    • ZStack concludes plugins into two patterns: strategy pattern and observer pattern. Strategy pattern plugins will inherit parent-class interfaces and then perform specific implementations. Observer pattern plugins will register a listener to monitor event changes of the internal business logic in an application. Once an event is detected inside the application, the observer pattern plugins will respond to this event automatically and execute a piece of code to affect the corresponding business flow.
    • ZStack supports horizontal expansion of plugins. The cloud can be quickly upgraded, and the overall system architecture still remains robust.
  6. Workflow Engine: sequence-based management, rollback on errors
    • ZStack clearly defines every workflow by using XML files. Every flow can be rolled back on errors. A workflow can roll back all prior executed steps and clean up the garbage resources during the execution when an error happens in a step.
    • Every workflow can contain sub-flow to decouple the business logic further.
  7. Tag System: extends the business logic and adds resource properties
    • ZStack uses system tags and plugins to extend the original business logic.
    • You can use tags to group your resources and search for resources with specific tags.
  8. Cascade Framework: supports cascading operations on resources
    • ZStack uses a cascade framework to perform cascading operations on resources. The cascade framework allows an operation to be cascaded from one resource to other resources. For example, the operation of uninstalling or deleting a resource can be cascaded to the descendant resources.
    • Resources can join a cascade framework through a plugin. Joining or quitting the cascade framework will not affect other resources.
    • The cascading mechanism makes the configuration of ZStack more flexible and simple, meeting the requirements of resource configuration changes.
  9. Full Automation By Ansible: automated deployment by agentless Ansible
    • Being seamlessly integrated with Ansible (which is agentless), ZStack can automatically install dependencies, configure physical resources, and deploy agents. This whole process is transparent to users and requires no additional intervention. You can upgrade your agents simply by reconnecting the agents.
  10. Comprehensive Query API: Every property of every resource can be queried.
    • ZStack supports millions of query conditions, comprehensive query APIs, and any way of condition combinations.
Download

Already filled the basic info? Click here.

Enter at least 2 characters.
Invalid mobile number.
Enter at least 4 characters.
Invalid email address.
Wrong code. Try again. Send Code Resend Code (60s)

The download link will be sent to your email. Make sure the address you provided is valid and correct.

Download

Not filled the basic info yet? Click here.

Invalid email address or mobile number.

Email Us

contact@zstack.io

The download link is sent to your email address.

If you don't see it, check your spam folder, subscription folder, or AD folder. After receiving the email, click the URL to download the documentation.

The download link is sent to your email address.

If you don't see it, check your spam folder, subscription folder, or AD folder.
Or click on the URL below. (For Internet Explorer, right-click the URL and save it.)

Thank you for using ZStack products and services.

Back to Top