.NET服务发现(Microsoft.Extensions.ServiceDiscovery)集成Consul

💡 原文中文,约5700字,阅读约需14分钟。
📝

内容提要

随着Aspire发布preview5的更新,Microsoft.Extensions.ServiceDiscovery也进行了更新。该更新主要介绍了Microsoft.Extensions.ServiceDiscovery(preview5)以及如何扩展其他中间件的发现集成。

🔎

延伸解读

从配置到动态发现:Consul Provider 的扩展价值

文章指出,官方默认的 Config、DNS、YARP 三种 Provider 虽然使用简单,但通过 appsettings.json 写死终结点的方式不够灵活。因此,作者以 Consul 为例,演示了如何扩展自定义的服务发现 Provider。这为读者提供了一种思路:当现有 Provider 无法满足动态服务注册与发现需求时,可以基于 IServiceEndPointProvider 和 IServiceEndPointProviderFactory 接口自行实现,从而接入 Consul 等注册中心。

实现自定义 Provider 的关键步骤

扩展 Consul 服务发现需要实现两个核心接口:IServiceEndPointProvider 负责从 Consul 健康服务中查询实例并填充终结点,IServiceEndPointProviderFactory 则用于创建 Provider 实例。最后通过扩展 IServiceCollection 的 AddConsulServiceEndpointProvider 方法注册工厂,并在 AddServiceDiscovery 后链式调用即可启用。文章中的代码示例展示了完整的实现流程,包括日志记录和异常处理,为

使用与注意事项

完成扩展后,只需在 AddServiceDiscovery 后添加 .AddConsulServiceEndpointProvider() 即可同时支持配置和 Consul 两种发现方式。作者已将实现发布为 NuGet 包 Biwen.Microsoft.Extensions.ServiceDiscovery.Consul,方便直接引用。但需注意,由于 Aspire 仍在快速迭代,该包后续可能随版本更新而变化,早期版本已做适配,建议以最新版本为准。

❓

Q&A

Microsoft.Extensions.ServiceDiscovery的最新更新内容是什么?

最新更新主要介绍了Microsoft.Extensions.ServiceDiscovery(preview5)及其扩展其他中间件的发现集成。

如何在项目中配置服务发现?

可以通过appsettings.json配置服务终结点,并使用builder.Services.AddServiceDiscovery()进行服务发现的设置。

Microsoft.Extensions.ServiceDiscovery支持哪些Provider?

官方提供Config、DNS、YARP三种Provider,使用简单。

如何扩展Consul服务发现Provider?

通过实现核心接口IServiceEndPointProvider和IServiceEndPointProviderFactory来扩展Consul服务发现Provider。

如何使用HttpClient进行服务调用?

可以通过IHttpClientFactory创建HttpClient,并使用服务发现自动解析配置文件中的服务。

Biwen.Microsoft.Extensions.ServiceDiscovery.Consul的更新频率如何?

Biwen.Microsoft.Extensions.ServiceDiscovery.Consul会随着Aspire的迭代而更新,早期版本已做适配。

🏷️

标签

➡️

继续阅读