用于多个分布式.net服务的单一集中式配置设置存储

用于多个分布式.net服务的单一集中式配置设置存储,.net,configuration,azure-service-fabric,.net,Configuration,Azure Service Fabric,目标:我们的应用程序由分布在多台服务器上的微服务体系结构组成(使用prem服务结构构建)。我们希望有一个集中的位置来存储配置设置,如连接字符串、入口点等。这些设置不会因服务实例的不同而有所不同,这意味着我们不必将其与服务一起存储,而是更希望有一个集中的存储,在其中可以动态更新这些设置,所有军种都能在不重新部署的情况下接收。编辑此设置的用户友好界面很好,但不是很必要,我们可以在最坏的情况下使用简单的记事本。存储设置的格式可以是xml、json或支持分层数据结构的任何其他格式 问题:服务结构是否提供

目标:我们的应用程序由分布在多台服务器上的微服务体系结构组成(使用prem服务结构构建)。我们希望有一个集中的位置来存储配置设置,如连接字符串、入口点等。这些设置不会因服务实例的不同而有所不同,这意味着我们不必将其与服务一起存储,而是更希望有一个集中的存储,在其中可以动态更新这些设置,所有军种都能在不重新部署的情况下接收。编辑此设置的用户友好界面很好,但不是很必要,我们可以在最坏的情况下使用简单的记事本。存储设置的格式可以是xml、json或支持分层数据结构的任何其他格式

问题:服务结构是否提供了一些开箱即用的东西来帮助我们?如果没有,是否有任何第三方.net工具,或者我们必须从头开始构建“存储、存储库和api”


我试着搜索了一些这样的框架,但在市场上找不到任何东西,在SF中也找不到任何东西,也许我只是知道这类东西是如何命名的。

据我所知,没有现成的解决方案。我可以建议使用一个单独的有状态服务作为配置存储(我们将此服务称为-configservice

因此,您的所有配置都将在此服务中完成

然后,您可以在服务中使用订阅配置更改事件,该事件将由configservice在配置更改时发布

这种方法的优点是,configservice的实现使您能够实现所需的任何功能(定时配置更新、验证等)。缺点很明显——您需要手工实现它


希望这能有所帮助。

您需要的是配置服务,互联网上有很多解决方案可供使用,您有以下几种选择:

  • 使用云解决方案,例如,在这种情况下,您只需为每个环境的服务以及指向同一KeyVault命名空间的所有服务添加身份验证详细信息

  • 使用本地解决方案,或者,在本例中,您可以将it部署到集群中,并将服务配置为与之通信

  • 创建您自己的,您可以在其中创建作为服务结构的服务,并将其部署到您的服务中。老实说,我不推荐这种方法,除非其他服务没有为您的解决方案提供所需的功能,老实说,这些服务非常完整

还有其他解决方案,但它们基本上是基于这些方法的


关于Service Fabric内置解决方案,目前没有现成的秘密管理作为Service Fabric的一部分,但路线图中有一个选项,但可能在Service Fabric Mesh明年发布之前不会发布。

听起来很简单,但是,您正在将一个故障点引入到您的体系结构中,这可能会冲击所有其他微服务。对于微服务的配置管理,有非常成熟、可靠和易于使用的解决方案(如Consor)。@BasilMusa虽然您对现有解决方案的看法是绝对正确的,但它们存在的简单事实与内部解决方案的可靠性无关。服务结构可以很好地确保您的服务始终可用,因此有状态服务可能成为“单点故障”的唯一原因是实现不好,而在选择现有解决方案和内部解决方案时,应始终考虑这一点。内部解决方案和现有解决方案都有其优缺点,但这并不意味着它们是好是坏,而是或多或少适用于具体情况。