8

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

 3 years ago
source link: http://developer.51cto.com/art/202012/634311.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

【51CTO.com快译】.NET Foundation不仅仅包括.NET,还是众多语言和框架的开源中心,可帮助您在各种.NET运行时环境和编译器的基础上构建代码,全球的公司和个人为之贡献代码。

2amqey.png!mobile

一种较流行的工具来自Pivotal(现在再次隶属VMware)。Steeltoe旨在帮助开发人员构建更好的.NET微服务,充当.NET与Pivotal的Spring Cloud和Cloud Foundry平台以及Kubernetes和其他容器之间的桥梁,拥有一组可加快应用程序开发的库。它现已开放,接受.NET社区(包括微软团队)贡献的代码,立足于Netflix的开源库方面完成的工作。你可以在GitHub上找到存储库(https://github.com/SteeltoeOSS/steeltoe)。

微服务和Steeltoe

Steeltoe基于熟悉的工作方式,还可以用作从Java和其他企业语言进入到.NET开发的跳板。你可以将在Spring Cloud上用Java编写的代码移植到.NET,或使用Steeltoe连接件来混合不同技术,以便可以通过.NET微服务改进现有的应用程序。项目经理会发现这种方法很有帮助,因为他们可以根据需要混合搭配可用资源,不必担心兼容性问题。

Steeltoe可以使用初始化工具创建云微服务,添加提供不同云服务的提供商,并自动配置用于部署的代码。配置可以轻松地存储在代码之外,那样您可以将令牌及其他重要的验证详细信息保留在Hashicorp的Vault之类的安全服务中,无需暴露在代码存储库中。

最大优点是其库,库预包装在您的代码中准备使用的云设计模式。这包括借助Eureka和Consul客户端以及有助于调试代码的分布式跟踪支持服务发现。其他关键元素通过处理网络文件共享来支持消息传递,并提供与要使用的云服务对接的连接件。云原生微服务需要无状态、易于组合且定义明确,而Steeltoe的库有助于构建支持云原生设计模式的代码,无需更改编写.NET Core应用程序的方式。

最新版本是Steeltoe 3.0。这将支持从.NET Framework转移到.NET Core,为.NET 5和将来基于.NET Core的版本做好了准备。它增加了支持其他分布式应用程序平台(比如Kubernetes)和基于消息传递的架构的功能。这意味着要更改程序包命名,因此升级到新版本时,代码需要一番重构。

使用断路器模式

Steeltoe的一项实用功能是使用基于Netflix Hystrix的工具支持断路器(Circuit Breaker)模式。最初的Hystrix处于维护模式,但它使用的模式仍适用于使微服务具有容错能力,并通过提供一种快速锁定故障并防止连锁反应的方法为应用程序增添弹性。

在远程或第三方服务可见性有限的分布式架构中,断路器是一种重要工具。这使得它们适用于这些地方:服务由不同的Devop团队构建和管理,以及您使用的服务被太多应用程序使用而变得不可靠。断路器监测代码中对服务的所有调用。如果太多调用失败,它会退回到替代方法并发出警报。这会触发重新启动,或者就等到远程服务再次可用。

有了Steeltoe,就很容易为任何服务调用添加断路器包装件。这在其自己的线程池中运行,有助于管理目标服务上的负载。如果线程因代码调用过多而不可用,或者断路器在远程服务没有响应时等待,可以调用后备方法。同样,呼叫可能超时,所有操作会被记录并显示在各自的仪表板上,以便您查看服务的运行情况。这些日志是有用的诊断工具,您可以使用ELK堆栈或Azure的Monitor之类的工具将它们纳入Devops流程中。

使用Project Tye部署到Kubernetes

如果您想使.NET成为更广泛的云原生环境的一部分,Steeltoe与微软的Project Tye很搭,可将.NET微服务引入到Kubernetes(尤其是Azure Kubernetes Service)。在这里您可以使用Steeltoe库构建服务,然后使用Project Tye将它们添加到容器中。这可以自动执行这个过程:创建.NET容器和Kubernetes清单文件,以及查找其他服务和处理容器依赖项。这是一个实用的工具,可使用.NET命令行工具来安装。一旦安装完成,很容易从应用程序脚手架转到运行中代码,仪表板监测运行中的服务并查看日志。可将多个服务添加到单个.NET解决方案,然后可以使用单个tye调用来运行。

更复杂的配置可使用Project Tye自己的YAML清单文件来加以管理。tye.yaml文件将帮助管理依赖项、与Docker文件和容器注册表一起引入服务并根据需要进行部署。一些场景需要预配置和部署外部服务,比如数据库或缓存。

使用Steeltoe构建服务以及使用Project Tye进行捆绑是开始使用云原生.NET开发的快速方法。虽然Project Tye仍然是试验项目,但.NET 5发布后微软会不会继续致力于它值得拭目以待,因为计划与Dapr等工具的集成会使其成为任何.NET开发环境的一组实用扩展。在我看来,将其集成到.NET命令行环境中非常有意义,其对.NET的意义如同Draft等工具对更广泛的Kubernetes生态系统的意义。

.NET中与云无关的分布式应用程序方法

构建和运行分布式应用程序应该不难;它们是在多个云中和跨多个云工作的关键。通过支持Spring Cloud和Kubernetes,Steeltoe提供了一种中立的多云开发方法。您可以使用熟悉的工具和技术以及Steeltoe来构建.NET代码,然后使用配置工具支持将代码分发到目标平台的工作。

结果是可以将代码从一个云快速切换到另一个云,以及从数据中心快速切换到托管平台。基于.NET Core的现代代码是为微服务设计的,Steeltoe可帮助提供原本您需要自行编写的许多功能。探究.NET基金会托管的各个项目非常值得,您可能会找到帮您更快速地编写更好代码的项目。

原文标题:Steeltoe: Simplify building .NET cloud microservices,作者:Simon Bisson

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK