The Agni project has been superseded by Azos Project https://github.com/azist/azos
Agni Cluster OS is a UNISTACK® software platform for writing custom distributed, SaaS, and PaaS solutions. The sharp focus is kept on business-oriented systems which have much domain logic/messages/services/contracts and other rules.
Agni OS, is not just a library - it is a full stack framework(an Application Operating System) for high scalability having all development done using lean .NET (free from 3rd parties)
According to UNISTACK® ideology - all code is written only in C# and JavaScript (used in some Web Admin UI tools). The same base libraries are used in the same consistent way throught the code base. This project only uses language and runtime features which are standard to the CLR and language itself, as provided by primary Microsoft implementation.
- Hierarchy of geo-spread regions, NOC, zones
- Host and zone governor supervisor processes
- Logical to physical addressing/node name resolution
- Hierarchical version-controlled configuration engine; data mounted via Virtual File System (e.g. SVN, Web, RDBMS etc.) the configuration bank is called "The Metabase"
- Global Distributed Unique ID (GDID) generation - monotonic increasing integers
- Distributed lock manager (DLM) - operates in hierarchical cluster allowing to coordinate tasks on the relevant level of hierarchy/scope
- WorkSets - a set of virtual work which coordinates item execution among multiple nodes - akin to C# Parallel.Foreach in a cluster
- HostSets - sets of workers providing balancing and sharding on topic/key
- Todo Queues - queues of "serverless" Todo instances - similar to distributed Tasks
- Processes - distributed contexts which coordinate Todo execution strands. Process exchange Signals to
- Database Sharding Router - splis data into range partitions and then shards - supports any RDBMS or NoSQL as leaf nodes backend
- Key-Value Cluster Database with expiration
Agni includes a module called Agni.Social - a core for custom systems like Twitter/Facebook which have much social network logic. It is important to mention scalability - the social component uses Agni sharding, Processes and Todos executed in a cluster to serve a truly unlimited number of clients/social profiles.
Social features:
- Social Graph Node - cluster database solution for storing business entities (e.g. "friends", "groups", "rooms", "organizations" etc) and their relationships. The concrete systems provide GraphHost implementations which map graph nodes to concrete business entities
- Graph node subscriptions and event delivery - done in the cloud, e.g. the system can handle users with as low as a few to multi-multi million node subscriptions (think Facebook or Twitter)
- Node "Friendship"
- Comment system - voting like/dislike. Comments, Questions, Answers, Moderation
- Trending - special-purpose OLAP engine harvesting, storing and querying data in real time, "top prodyucts in xyz category in the past week/month/year" etc.
See Agnicore Documentation Site for more details
Agni is built on NFX; the whole stack is based on .NET Standard and runs on .NET Framework 4.7+ and .NET Core 2+ runtimes.
Agni support on platforms is the same as for its base core library NFX - .NET Standard 2+ which works on different runtimes. Officially we support .NET Core and .NET Framework:
- .NET Standard 2 - supported
- .NET Core 2 - supported
- .NET Framework 4.7.1 - supports classic .NET Framework 4.7.1+
NFX supports cross-platform development and is tested on:
- Windows Win 2010 Core 2 and Net Fx
- Linux Ubuntu 16 LTS using Core 2
- Mac OS 14 using Core 2
NFX Builds on:
- Windows / MSBuild 15 / VS 2017
- in process - *nix (need scripts and build process refinements)