appolo+dotnetcore

官网地址:https://github.com/ctripcorp/apollo

官方演示环境(Demo):

一、创建应用

在客户端接入 Apollo 之前,先在 Apollo 管理后台(106.54.227.205:8070)创建一个 appid为【sara0208】 应用,并添加配置项,如下:

二、创建 Namespace

在 Apollo 中,还可以通过建 Namespace 供应用进行关联使用。比如:有 N 个服务,每个服务有自己的配置信息,那就需要在 Apollo 中建 N 个应用,每个服务引用对应的应用配置,但有的配置可能是所有或部分服务都需要的,这时候就可以考虑创建一个公共的 Namespace 配置,需要这些配置信息的应用引用此 Namespace 即可。

通过应用右侧的 添加 Namespace 或者顶部的 管理员工具 进行 Namespace 的创建,然后在 Namespace 中添加配置项。

三、.NET Core客户端代码实现

Apollo .NET 客户端支持 .NET Framework 和 .NET Core ,这里以 .NET Core 为例来介绍,更多可参考:apollo.net 中的 Demo。

  1. 创建一个 .NET Core API 项目,添加 Com.Ctrip.Framework.Apollo.Configuration NuGet 包

  2. 在 appsettings.json 添加 Apollo 配置信息

{
  "apollo": {
    "AppId": "sara0208", // 应用id
    "MetaServer": "http://106.12.25.204:8080/",
    "Env": "DEV"
  }
}

    3.修改 Program.cs

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
  WebHost.CreateDefaultBuilder(args)
    .ConfigureAppConfiguration(builder => builder
      .AddApollo(builder.Build().GetSection("apollo"))
      .AddNamespace("sara.common") // 引入 TEST1.Common 命名空间
      .AddDefault()) // 默认 namespace: application
      .UseStartup<Startup>();

以上配置如果 Default 中具有 sara.Common 相同的 key,那么 Default 会覆盖掉 sara.Common 中相同 key 的值。

   4.添加获取配置信息接口

public class ValuesController : Controller
    {
        private IConfiguration _configration;
        public ValuesController(IConfiguration configuration)
        {
            _configration = configuration;
        }

        [HttpGet]
        public async Task<object> Get()
        {
            await Task.CompletedTask;
            return new
            {
                timeout = _configration["timeout"],
                appkey = _configration["appkey"]
            };
        }
    }

服务启动成功后,配置信息会注入到 IConfiguration 中,可以从容器中的 IConfiguration 对象获取具体配置。

   5.启动并调用接口

https://localhost:44303/api/values

{"timeout":"800","appkey":"11111"}

在之前的介绍中提到了客户端拉取到配置信息之后,会在本地文件中进行缓存,目的是在遇到服务不可用,或网络不通的时候,依然能从本地恢复配置。经过以上测试,可以在以下目录进行查看缓存文件:

Mac/Linux: /opt/data/{appId}/config-cache
Windows: C:\opt\data\{appId}\config-cache

在缓存文件存的情况下,可以将 Apollo 服务全部 kill 进行测试,服务依然能拉起到配置信息。

Apollo 修改配置发布后是实时生效的,但有些情况下并不能反应出来,主要原因还是在代码的实现上,如果存在这样的情况,需要看看代码的具体实现。比如:配置信息赋给了静态变量、程序内部有自己的缓存策略等。

相关链接

https://blog.csdn.net/ningjiebing/article/details/90638974

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值