当前位置: 首页 > 科技观察

Steeltoe:简化.NET云微服务的构建

时间:2023-03-19 01:38:40 科技观察

【.com快译】.NETFoundation不仅包括.NET,还是一个多语言和框架的开源中心,可以帮助你构建代码构建在服务器之上,世界各地的公司和个人都在为它做出贡献。更流行的工具之一来自Pivotal(现在又是VMware的一部分)。Steeltoe旨在帮助开发人员构建更好的.NET微服务,充当.NET与Pivotal的SpringCloud和CloudFoundry平台以及Kubernetes和其他容器之间的桥梁,具有一组加快应用程序开发的库。它现在是开放的,接受来自.NET社区(包括MicrosoftTeams)的代码贡献,并建立在Netflix的开源库上完成的工作之上。您可以在GitHub(https://github.com/SteeltoeOSS/steeltoe)上找到存储库。微服务和SteeltoeSteeltoe建立在熟悉的工作方式之上,也可以用作从Java和其他企业语言进入.NET开发的跳板。您可以将在SpringCloud上用Java编写的代码移植到.NET,或使用Steeltoe连接器混合不同的技术,以便可以使用.NET微服务改进现有应用程序。项目经理会发现这种方法很有帮助,因为他们可以根据需要混合和匹配可用资源,而不必担心兼容性问题。Steeltoe可以使用初始化工具创建云微服务,添加提供不同云服务的供应商,并自动配置部署代码。配置可以很容易地存储在代码之外,这样您就可以将令牌和其他重要的身份验证详细信息保存在Hashicorp的Vault等安全服务中,而无需将它们暴露在代码存储库中。最大的优势是它的库,它在您的代码中预先打包了随时可用的云设计模式。这包括在Eureka和Consul客户端的帮助下支持服务发现,以及有助于调试代码的分布式跟踪。其他关键元素通过处理网络文件共享来支持消息传递,并提供连接到要使用的云服务的连接器。云原生微服务需要无状态、易于组合且定义明确,Steeltoe的库可帮助构建支持云原生设计模式的代码,而无需改变您编写.NETCore应用程序的方式。最新版本是Steeltoe3.0。这将支持从.NETFramework转移到.NETCore,为.NET5和未来基于.NETCore的版本做准备。它增加了支持其他分布式应用程序平台(例如Kubernetes)和基于消息传递的架构的能力。这意味着更改包命名,因此升级到新版本需要对代码进行一些重构。使用断路器模式Steeltoe的一个有用功能是使用基于NetflixHystrix的工具支持断路器模式。最初的Hystrix处于维护模式,但它使用的模式仍然适用于通过提供一种快速锁定故障和防止连锁反应的方法来使微服务容错并为应用程序增加弹性。断路器是分布式架构中的重要工具,对远程或第三方服务的可见性有限。这使得它们适用于由不同Devop团队构建和管理服务的地方,以及您使用的服务被太多应用程序使用并且变得不可靠的地方。断路器监视代码中对服务的所有调用。如果太多呼叫失败,它会回退到替代方法并发出警报。这会触发重启,或者只是等待远程服务再次可用。使用Steeltoe,可以轻松地向任何服务调用添加断路器包装器。它在自己的线程池中运行,有助于管理目标服务上的负载。如果由于代码调用过多导致线程不可用,或者断路器在远程服务未响应时等待,则可以调用回退方法。同样,调用可能会超时,并且所有操作都会被记录并显示在相应的仪表板上,因此您可以查看服务的运行情况。这些日志是有用的诊断工具,您可以使用ELK堆栈或Azure的监视器等工具将它们合并到您的Devops流程中。使用ProjectTye部署到Kubernetes如果您想让.NET成为更广泛的云原生环境的一部分,Steeltoe可以与Microsoft的ProjectTye很好地协作,将.NET微服务引入Kubernetes(尤其是AzureKubernetes服务)。在这里,您使用Steeltoe库构建服务,然后使用ProjectTye将它们添加到容器中。这会自动执行创建.NET容器和Kubernetes清单文件以及查找其他服务和处理容器依赖项的过程。这是一个有用的工具,可以使用.NET命令行工具进行安装。安装后,很容易从应用程序脚手架转到运行代码,再到仪表板以监控正在运行的服务和查看日志。可以将多个服务添加到单个.NET解决方案,然后可以使用单个tye调用运行。可以使用ProjectTye自己的YAML清单文件来管理更复杂的配置。tye.yaml文件将帮助管理依赖项、引入服务以及Docker文件和容器注册表,并根据需要进行部署。某些场景需要预先配置和部署外部服务,例如数据库或缓存。使用Steeltoe构建服务并与ProjectTye捆绑是开始云原生.NET开发的快速方法。虽然ProjectTye仍处于试验阶段,但有趣的是看看微软是否会在.NET5发布后继续致力于它,因为计划中与Dapr等工具的集成将使它成为适用于任何.NET开发环境的一组有用的扩展。将它集成到.NET命令行环境中对我来说意义重大,就像Draft这样的工具对更广泛的.NETKubernetes生态系统所做的一样。.NET中分布式应用程序的云不可知方法构建和运行分布式应用程序应该不难;它们是在多个云中和跨多个云工作的关键。借助对SpringCloud和Kubernetes的支持,Steeltoe为多云开发提供了一种中立的方法。您可以使用熟悉的工具和技术与Steeltoe一起构建.NET代码,然后使用配置工具支持将代码分发到目标平台。结果是能够将代码从一个云快速切换到另一个云,以及从数据中心切换到托管平台。基于.NETCore的现代代码专为微服务而设计,而Steeltoe有助于提供您原本需要自己编写的许多功能。值得探索.NET基金会托管的各种项目,您可能会找到一个可以帮助您更快地编写更好的代码的项目。原标题:Steeltoe:简化构建.NET云微服务,作者:SimonBisson