Distributed Clusters

Distributed Architecture

Distributed Systems Architecture allows multiple nodes of backend services to run on multiple servers and incorporate them together to form clusters.

                            "Orleans": {
                                "Definitions": "definitions",
                                "ServiceId": "serviceId",
                                "ClusterId": "clusterId",
                                "AdoNetProvider": "",
                                "ConnectionString": "",
                                "GatewayPort": 30000,
                                "SiloPort": 11111,
                                "NodeIpAddresses": [ "127.0.0.1", "192.168.0.1" ],
                                "GrainAssemblies": [
                                    "ardvro.core.lib",
                                    "ardvro.core.stl"
                                ]
                            }
                        

Microkernel Architecture

Microkernel Architectures decomposed components into smaller parts and become reusable to the higher application layer. As a result, interconnection dependencies on those higher layer can be avoided. Reducing the number of coupling leads to the enhancement of code quality. Furthermore, those smaller parts can be installed in the service instance without any downtime.

Disributed Cache Memory

Distributed cache memory allows distributing the memory cache across the nodes in clusters with an unlimited amount of data.

Distributed Message Queue

Distributed Message Queue allows distributing the message queue across the nodes in clusters with an unlimited amount of queue.

ARDVRO's' Distributed Message Queue features can be easily configured through the data containers options. It can be configured to send messages specifically per user, or per service.


Distributed Load Balancing

Once nodes run together in a cluster, each request will be automatically routed to particular nodes to process the request.

Powered by Microsoft Orleans

Orleans is a cross-platform framework for building robust, scalable distributed applications. Distributed applications are defined as apps that span more than a single process, often beyond hardware boundaries using peer-to-peer communication. Orleans scales from a single on-premises server to hundrends to thousands of distributed, highly available applications in the cloud. Orleans is designed to scale elastically. When a host joins a cluster, it can accept new activations. When a host leaves the cluster, either because of scale down or a machine failure, the previous activations on that host will be reactivated on the remaining hosts as needed. An Orleans cluster can be scaled down to a single host. The same properties that enable elastic scalability also enable fault tolerance. The cluster automatically detects and quickly recovers from failures

One of the primary design objectives of Orleans is to simplify the complexities of distributed application development by providing a common set of patterns and APIs. Orleans runs anywhere that .NET is supported. This includes hosting on Linux, Windows, and macOS. Orleans apps can be deployed to Kubernetes, virtual machines, and PaaS services.