Apollo在NetCore实践

Apollo解析

参考文章
在这里插入图片描述

Apollo Config Service:提供配置的读取、推送等功能,服务对象是 Apollo 客户端。

Apollo Admin Service:提供配置的修改、发布等功能,服务对象是Apollo Portal。

Apollo Portal:Apollo 的管理界面,进行不同项目的配置(项目配置、权限配置等),服务对象是开发者和开放平台API。

一、Apollo搭建

MingW安装

MingW安装文章

首先重要一点,要在windows下运行启动脚本demo.sh的前提是安装"MingW"不能用“CygWin”。因为在CygWin里运行java会报找不到jar文件的问题。

1.下载Apollo

https://github.com/nobodyiam/apollo-build-scripts

在这里插入图片描述

2.执行sql脚本

运行sql目录中的两个sql脚本,如果原来有库注意备份。

3.编辑demo.sh

设置两个数据库的账号和密码,以及数据库地址

在这里插入图片描述

4.运行demo.sh

使用git指令开启apollo

./demo.sh start

使用git指令关闭apollo

./demo.sh stop

5.提示成功,访问网址

http://localhost:8070

出现登录页面即为成功

二、Apollo功能解析

参考这篇文章

1.创建项目

在这里插入图片描述

部门:选择应用所在的部门。部门数据来自 ApolloPortalDB 库的 ServerConfig 表的 Key = organizations 对应的记录。
应用 AppId:用来标识应用身份的唯一 id,格式为 string,需要和客户端 app.properties 中配置的 app.id 对应。
应用名称:应用名,仅用于界面展示。
应用负责人:默认具有项目管理员权限。
项目管理员:可以创建 Namespace 和集群、分配用户权限。

2.添加Namesapce

在这里插入图片描述

public:
公共的Namespace的配置能被任何项目读取
通过创建公共Namespace可以实现公共组件的配置,或多个应用共享同一份配置的需求如果其它应用需要覆盖公共部分的配置,可以在其它应用那里关联公共Namespace,然后在关联的Namespace里面配置需要覆盖的配置即可如果其它应用不需要覆盖公共部分的配置,那么就不需要在其它应用那里关联公共Namespace

private:
私有Namespace的配置只能被所属的应用获取到
通过创建一个私有的Namespace可以实现分组管理配置私有Namespace的格式可以是xml、yml、yaml、json、txt.

3.关联Namespace

已经存在的公共命名空间

在这里插入图片描述

再次创建一个应用,添加Namespace,选择关联公共,然后选择已有的公共Namespace

在这里插入图片描述

提交后,也可以配置覆盖选项

在这里插入图片描述

当我们读取Name,查看输入值

在这里插入图片描述

4.添加配置信息

Namespace中添加Key/Value配置项(可以通过文本形式添加,速度更快),添加之后记得点击发布

在这里插入图片描述

5.存储其他格式数据

在这里插入图片描述

6.灰度发布

1.添加灰度版本,会出现下面的界面

在这里插入图片描述

2.然后添加灰度规则,上面图片,已经添加了一条

在这里插入图片描述

添加一条配置信息
在这里插入图片描述

3.测试两个用例
配置项

在这里插入图片描述
在这里插入图片描述

现在是读取得灰度版本得配置信息,将灰度规则信息得AppId更改为MASD而配置文件不变,再次测试

在这里插入图片描述

这里是主版本得配置信息

现在点击全量发布
然后再次测试

在这里插入图片描述

现在发布到所有了,即使不满足灰度规则,也能访问

点击放弃灰度,然后就回到只有主版本界面

在这里插入图片描述

7.Apollo多环境配置

三、netcore配置

nuget包安装

Install-Package Com.Ctrip.Framework.Apollo.Configuration 

1.配置program

 public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder
                    .ConfigureAppConfiguration((hostingContext, builder) =>
                    {
                        builder
                            .AddApollo(builder.Build().GetSection("apollo"))
                            .AddDefault()
                            .AddNamespace("TEST2.Shared");
                    })
                    .UseStartup<Startup>();
                });

2.配置文件appsetting.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "apollo": {
    "AppId": "MSAD", //AppId
    "MetaServer": "http://192.168.136.129:8080", // Eureka地址
  }
}

3.获取配置信息

using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Apollo.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private readonly IConfiguration _configuration;

        public WeatherForecastController( IConfiguration configuration)
        {
            _configuration = configuration;
        }

        [HttpGet]
        public ActionResult<IEnumerable<string>> Get()
        {
            var appName = _configuration["liutongyang"];
            return new string[] { "value1", "value2", appName };
        }
    }
}

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

有诗亦有远方

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

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

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

打赏作者

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

抵扣说明:

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

余额充值