8. .NET5微服务中的Apollo配置

什么是Apollo

Apollo(阿波罗)是携程框架部门研发的配置管理平台,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。

那么Apollo能解决什么问题呢,在我们的微服务程序中,随着接入的中间件越来越多,相关的配置项也越来越多,如何对这些配置项进行统一管理就成了一个问题,若配置项需要改动,则直接在apollo中配置好进行推送,系统就可以直接升级,方便快捷。

Apollo的安装

由于apollo本地配置比较复杂,需要安装java相关环境和mysql,所以这里推荐使用docker一键部署,首先去github上下载apollo的源码,地址在这里https://github.com/ctripcorp/apollo,下载好源码之后,找到下图这个目录。
在这里插入图片描述
然后启动docker,进入到docker-quick-start目录下,运行如下命令。

docker-compose up

这里时间比较长,需要下载mysql等相关的依赖,等待下载完成,可以用images命令查看一下。

docker images

在这里插入图片描述
这里就会发现多了两个镜像,一个mysql一个apollo-quick-start。接着运行ps命令。

docker ps    //查看正在运行的容器
docker ps -a   //查看所有的容器

在这里插入图片描述
启动这两个容易即可。
这里有一点需要注意下,apollo中占用了两个端口80708080,

  • 8070 为后台管理系统的地址端口号。
  • 8080 为为外部服务提供接口的地址。

在这里插入图片描述
如果容器能正常启动,这时候打开localhost:8070看一下,若能出现如下页面表示登录成功。
在这里插入图片描述
用户名密码为:apollo / admin。
接着就可以创建项目了。
在这里插入图片描述

AppId 为整个项目中的唯一标识,之后在项目中是需要用到的。

项目创建好,接下来需要创建一个键值对了,这里是数据库连接字符串举例,每个服务都需要配置数据库连接字符串,所以就统一放到apollo中配置。
在这里插入图片描述
这里我已经配置好,并且发布了。好了接下来就该去代码中接入Apollo了。

.NET5接入Apollo

这里我们以商品服务举例,其他服务操作都是一样的,首先还是需要引入nuget包。

 <PackageReference Include="Com.Ctrip.Framework.Apollo.Configuration" Version="2.4.1" />

接着在appsetting.json中配置apollo的地址。

  //Apollo的配置
  "Apollo": {
    "AppId": "easy-shop",
    "Env": "DEV",
    "MetaServer": "http://localhost:8080",
    "ConfigServer": [ "http://localhost:8080" ]
  }

注意这里的端口是8080,是apollo提供服务的地址。
然后需要修改下Program.cs文件,把apollo的配置项加进去。

  public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
             .ConfigureAppConfiguration((hostingContext, builder) =>
             {
                 builder.AddApollo(builder.Build().GetSection("Apollo")).AddDefault();
             })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseUrls("https://*:5070").UseStartup<Startup>();
                });

接着在Configuration下就可以使用apollo了,例如获取数据库连接字符串。

   //原始写法
       services.AddDbContext<MySqlDBContext>(options =>
       options.UseMySQL(Configuration.GetConnectionString("MysqlConnectionString")));
  //采用apollo的写法
       services.AddDbContext<MySqlDBContext>(options =>
       options.UseMySQL(Configuration.GetValue<string>("MysqlConnectionString")));

使用apollo来管理配置项之后,就可以把appsetting.json下对应的配置项删除了。

总结

这里的apollo使用的比较简单,还有一些功能暂时没有涉及到,不过整体的使用就是这样。

项目地址:https://gitee.com/limeng66/easy-shop

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李公子lm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值