Aller au contenu principal
Clustron Zaris logoClustron Zaris
Produit phare

La plateforme de données en mémoire que votre équipe peut vraiment exploiter

Zaris est une plateforme de données en mémoire pour .NET — un cache compatible Redis, une recherche indexée et de la coordination dans un seul moteur, partitionné et répliqué sur votre cluster. Il est mesurablement plus rapide que Redis sur des nœuds de production, recherche un million d'enregistrements en millisecondes — plus vite qu'une base de données sur disque — et passe à l'échelle avec chaque nœud que vous ajoutez. Embarquez-le pour le développement, puis passez à un cluster sans changer une ligne de code.

ordersRF 2 · 3 nodes · healthynode-0LEADERP0P1P2node-1P0P1P2node-2P0P1P2Cache · Recherche · Streams · Pub/Sub · HA
+87%
plus rapide que Redis · nœud 8 cœurs (mesuré)
sub-ms
recherche indexée sur 1 M d'enregistrements
RF ≥ 2
réplication pour la disponibilité
0
coordinateurs externes
Capabilities

Tout ce dont une plateforme de données en mémoire a besoin — rien à rajouter

Zaris livre le plan de données et le plan de contrôle ensemble, de sorte que vous obtenez stockage, coordination, sécurité et outillage dans une seule dépendance.

Partitionné et répliqué

Les données sont réparties en partitions sur les nœuds et répliquées pour la disponibilité, avec placement et rééquilibrage automatiques à mesure que le cluster grandit.

Recherche indexée

Une recherche de style SQL sur vos données en mémoire — correspondance exacte, plages, filtres combinés, préfixe et top-N ordonné — servie depuis des index par nœud, sans disque sur le chemin de requête. Un million d'enregistrements recherchés en millisecondes, plus vite qu'une base de données sur disque, et cela passe à l'échelle à mesure que vous ajoutez des nœuds.

Parle Redis, tous langages

Un frontend natif de protocole Redis (RESP) permet à des clients Redis ordinaires — Python, Ruby, Java, Go et plus — d'utiliser Zaris comme store de remplacement direct, avec basculement en Load Balancer et en Cluster.

Structures de données natives

Hachages, listes, ensembles et ensembles triés côté serveur — les analogues des types Redis — comme API .NET de premier ordre et derrière les commandes RESP HSET/LPUSH/SADD/ZADD.

Pub/sub et Streams

Publication/abonnement à l'échelle du cluster et Streams durables avec groupes de consommateurs et lectures bloquantes — natifs, et derrière les commandes RESP SUBSCRIBE/PUBLISH et X*.

Transactions et CAS

Les transactions atomiques multi-clés et le compare-and-swap maintiennent les mises à jour concurrentes correctes sous charge.

Surveillances, baux et verrous

Diffusez les changements en temps réel, coordonnez le travail avec des baux et des verrous distribués, et élisez des leaders.

Compteurs et TTL

Des compteurs atomiques avec bornes, et une expiration par durée de vie pour les caches, les sessions et les fenêtres de limitation de débit.

Sécurité intégrée

TLS mutuel avec quatre modèles de CA/confiance, authentification par jeton et RBAC refusé par défaut — activé par store.

Console et PowerShell

Une console web et un outillage PowerShell complet pour créer, mettre à l'échelle, sécuriser et observer chaque store.

How it works

In-process pour le dev. En cluster pour la production.

Une clé est possédée par une partition et répliquée vers des suiveurs. Les clients sont routés automatiquement vers le propriétaire, de sorte que les lectures et les écritures restent cohérentes tandis que le cluster tolère la perte de nœuds.

  • S'exécute en embarqué sans aucun serveur — parfait pour le dev et les tests locaux.
  • Passez à un cluster multi-nœuds avec le même code client.
  • Propriété de partition et placement de réplicas automatiques.
  • La panne d'un nœud est tolérée jusqu'à votre facteur de réplication.
routerrépliquerClientPropriétaireprimairepartition qui possède la cléRéplicasuiveurdétient une copie de secours
The console

See your whole cluster at a glance

Chaque cluster Zaris est livré avec une console web intégrée — débit en temps réel, propriété des partitions, santé des nœuds, données en direct et sécurité.

console · clustron zaris
Console Clustron Zaris — tableau de bord du cluster avec débit, nœuds et santé des partitions
Use cases

De la mise en cache à la coordination

Les équipes font appel à Zaris dès que l'état partagé ou la coordination est sur le chemin critique.

Performance

Accélérer une application lente

Mettez en cache les requêtes coûteuses, les réponses d'API et les fragments rendus avec une latence quasi nulle in-process — puis partagez le cache entre les instances lorsque vous passez à l'échelle.

Applications web

Store de sessions distribué

Gardez les sessions utilisateur cohérentes sur chaque instance derrière votre load balancer, avec l'expiration TTL gérée pour vous.

Plateforme

Coordination et élection de leader

Exécutez des singletons en toute sécurité, protégez les sections critiques avec des verrous distribués et élisez un leader pour la planification et l'orchestration.

Temps réel

Mises à jour en direct avec les surveillances

Réagissez aux changements de données à l'instant où ils se produisent — rechargements de configuration, présence, tableaux de bord et diffusion d'événements.

APIs

Limitation de débit et quotas

Appliquez des fenêtres fixes et glissantes avec des compteurs atomiques, à l'échelle du cluster, sans service séparé.

Charges de travail

Files de tâches et de jobs

Coordonnez producteurs et workers concurrents avec des baux et des revendications atomiques sur l'état partagé.

In your code

Un cache distribué en quelques lignes

Enregistrez un store avec l'injection de dépendances, puis écrivez et lisez. Commencez in-process ; pointez le même code vers un cluster quand vous êtes prêt.

Read the docs
Zaris example
// In-process is just a connection string: zaris://inproc/orders
var services = new ServiceCollection()
.AddClustronZaris("orders", "zaris://inproc/orders")
.BuildServiceProvider();

var client = await services
.GetRequiredService<IZarisClientProvider>()
.GetAsync("orders");

// Cache an expensive computation for 5 minutes
await client.PutAsync("cart:42", cart, Put.WithTtl(TimeSpan.FromMinutes(5)));
var cached = await client.GetAsync<Cart>("cart:42");