Orleans 3.0 est sorti

Ceci est un article invité de l'équipe d'Orléans. Orleans est un framework multiplateforme pour la création d'applications distribuées à l'aide de .NET. Voir https://github.com/dotnet/orleans pour plus d'informations.

Nous sommes heureux d'annoncer la sortie d'Orléans 3.0. Comparé à Orléans 2.0, il présente de nombreuses améliorations et correctifs, ainsi que plusieurs nouvelles fonctionnalités. Ces changements sont dictés par l'expérience de nombreuses personnes qui utilisent des applications basées à Orléans en production dans un large éventail de scénarios et d'environnements, ainsi que par l'enthousiasme de la communauté mondiale d'Orléans, qui aide le cadre à devenir meilleur, plus rapide et plus flexible. Un grand merci à tous ceux qui ont contribué à cette version de différentes manières!



Changements majeurs par rapport à Orléans 2.0


Orleans 2.0 est sorti il ​​y a un peu plus de 18 mois, et le framework a fait des progrès significatifs depuis lors. Quelques changements par rapport à 2.0:

  • Transactions ACID distribuées
  • Un nouvel ordonnanceur qui dans certains cas a augmenté la productivité de plus de 30%
  • Nouveau générateur de code basé sur Roslyn
  • Adhésion au cluster réécrite pour améliorer la vitesse de récupération
  • Support de co-hébergement

Ainsi que de nombreuses autres améliorations et correctifs.

Remplacement de la couche réseau par ASP.NET Bedrock


Le maintien de communications sécurisées à l'aide de TLS est une préoccupation majeure depuis un certain temps. De plus, tant de la communauté que des partenaires internes. Dans la version 3.0, nous ajoutons la prise en charge TLS, disponible via le package Microsoft.Orleans.Connections.Security . Voir l' exemple de TransportLayerSecurity pour plus d'informations.

L'implémentation de la prise en charge TLS était une préoccupation majeure en raison de la façon dont la couche réseau était implémentée dans les versions précédentes d'Orléans: elle ne pouvait pas être facilement adaptée pour utiliser SslStream , qui est la méthode la plus courante pour implémenter TLS. En utilisant TLS comme moteur, nous avons réécrit la couche réseau d'Orléans.

Dans Orleans 3.0, la couche réseau entière est remplacée par une couche créée sur la base de Project Bedrock , une fonctionnalité de groupe ASP.NET. L'objectif de Bedrock est d'aider les développeurs à créer des clients et des serveurs réseau rapides et fiables.

L'équipe ASP.NET et l'équipe d'Orléans ont travaillé ensemble pour créer des abstractions qui prennent en charge à la fois les clients réseau et les serveurs, sont indépendantes du transport et peuvent être configurées à l'aide d'un middleware. Ces abstractions nous permettent de changer le «transport» du réseau à travers la configuration sans changer le code réseau interne propre à Orléans. Le support Orleans TLS est implémenté en tant que middleware Bedrock, et nous avons l'intention de le rendre universel afin qu'il puisse être partagé avec d'autres dans l'écosystème .NET.

Bien que l'incitation à cette innovation ait été l'ajout du support TLS, dans nos tests de charge de nuit, le débit augmente en moyenne d'environ 30%.

La réécriture de la couche réseau comprenait également le remplacement de notre pool de tampons personnalisé par un MemoryPool<byte> , et avec ce changement, la sérialisation tire désormais Span<T> parti de Span<T> . Certains chemins de code qui reposaient auparavant sur le verrouillage via des threads dédiés qui appellent BlockingCollection<T> utilisent désormais le Channel<T> pour le passage de messages asynchrones. Cela se traduit par moins de threads dédiés, au lieu de déplacer le travail vers le pool de threads .NET.

Co-hébergement via Generic Host


Co-héberger Orléans avec d'autres plates-formes comme ASP.NET Core dans le même processus est maintenant plus facile qu'auparavant grâce à l' hôte générique .NET .

Voici un exemple d'ajout d'Orléans avec ASP.NET Core à un hôte utilisant UseOrleans :
 var host = new HostBuilder() .ConfigureWebHostDefaults(webBuilder => { //  ASP.NET Core webBuilder.UseStartup<Startup>(); }) .UseOrleans(siloBuilder => { //  Orleans siloBuilder.UseLocalHostClustering(); }) .ConfigureLogging(logging => { /*   ,    */ }) .ConfigureServices(services => { /*    */ }) .UseConsoleLifetime() .Build(); //      . await host.RunAsync(); 

Cette fonctionnalité peut être utilisée pour simplifier la topologie de déploiement ou pour ajouter des fonctionnalités supplémentaires à une application existante. Certaines équipes utilisent l'hébergement mutualisé en interne pour ajouter des tests Kubernetes à leurs projets à Orléans à l'aide d' ASP.NET Core Health Checks .

Améliorations de la fiabilité


Les clusters sont désormais plus rapides à récupérer après des échecs grâce à des potins avancés. De plus, les erreurs de messagerie sont désormais gérées de manière plus cohérente, ce qui se traduit par des erreurs renvoyées à l'appelant. Cela aide les développeurs à trouver les bogues plus rapidement. Par exemple, lorsqu'un message ne peut pas être complètement sérialisé ou désérialisé, une exception détaillée sera renvoyée à l'appelant d'origine.

Extensibilité améliorée


Les flux peuvent désormais avoir leurs propres adaptateurs de données, ce qui leur permet de recevoir des données dans n'importe quel format. Cela donne aux développeurs plus de contrôle sur la façon dont les éléments de flux sont représentés dans le référentiel. Il permet également au fournisseur de flux de contrôler la façon dont les données sont écrites, permettant aux flux de s'intégrer aux systèmes existants et / ou aux services non-Orléans.

L'état personnalisé de la transaction peut désormais déclarer les rôles qu'elle peut jouer dans la transaction. Par exemple, une implémentation d'un état de transaction qui écrit des événements de cycle de vie de transaction dans la file d'attente du bus de service ne peut pas remplir les fonctions d'un gestionnaire de transactions car il est en écriture seule.

Rejoignez-nous maintenant!


Maintenant que Orleans 3.0 est sorti, nous tournons notre attention vers les futures versions - et nous avons des plans passionnants! Rejoignez notre communauté chaleureuse et accueillante sur GitHub .



Voir aussi: 7 cours gratuits pour les développeurs

Source: https://habr.com/ru/post/fr474240/


All Articles