版权所有,转载请注明出处 https://www.cnblogs.com/netqq/p/14251403.html

  

一、使用apollo作为配置中心

  首先apollo 项目简介和安装请自行百度,本文只介绍如何使用

     坑:

  1、window10下使用脚本无法运行起apollo的项目,进入项目目录,地址栏输入cmd,使用以下命令可以运行起apollo项目,请依次各个运行

java  -jar   apollo-xxxxxx.jar

  

  运行前的配置:

  1、确保8080,8070,8090端口未被占用,如果占用请自行修改 apollo 的运行端口

  2、修改 apolloconfigdb.serverconfig 表 eureka.service.url  的为公司的Eureka  地址

  3、修改apolloportaldb.serverconfig 表 apollo.portal.envs ,增加test,pro两个环境变量,多个值之间使用英文逗号分隔

   启动apollo项目

    

配置aollo   

在浏览器中分别访问8070 8080  8090端口号

  

  使用默认账号apollo/admin 登录到apollo配置中心(8070端口)

     1、点击右上角菜单,进入系统参数页面

    查找organizations  key,在表单中新增或者修改,1分钟后生效,此处数据在创建项目中会用到。

    2、创建一个项目

    3、在左侧选择环境,右侧添加配置键值对,作为netcore的程序员,善用json,所以,在左侧点击添加 Namespace

      选中框中的选项  ,记住  “名称”  这个选项,下问中要用到,也可以在项目中心查看

      提交后就可以存放json格式的数据了

    4、填写此namespace 下的配置项

在netcore 中使用 apollo

  笔者使用的框架是netcore3.1

  1、配置appsetting.json ,增加apollo配置节点

 "apollo": {
"AppId": "f664d4241996307a", // 应用id
"MetaServer": "http://localhost:8080", //localhost:8080 是apollo 的服务地址,如果apollo在本地这使用localhost即可
"ConfigServer": "http://localhost:8080",

"Env": "DEV"    //要使用的环境变量,上文数据库中有配置过环境
},

  2、安装apollo客户端引用

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

  3、修改Program.cs 中的  Host 配置项

 .ConfigureAppConfiguration((context, configBuiler) =>
{
var env = context.HostingEnvironment;
configBuiler.SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true); if (env.IsDevelopment())
{
var appAssembly = Assembly.Load(new AssemblyName(env.ApplicationName));
if (appAssembly != null)
{
configBuiler.AddUserSecrets(appAssembly, optional: true);
}
}
configBuiler.AddApollo(configBuiler.Build().GetSection("apollo")) //apollo配置中心,加载配置中心
.AddNamespace("appsettings", ConfigFileFormat.Json) // 引入 namespace:appsettings ,在apollo配置中心可查
.AddDefault(); // 默认 namespace: application
configBuiler.AddEnvironmentVariables(); //加载环境变量
configBuiler.AddConfigServer(); //加载远程配置中心
if (args != null)
{
configBuiler.AddCommandLine(args); //控制台命令参数最后加载
}
})

  至此,netcore 使用 apollo作为配置中心大概做法已经完成

扩展: apollo,此处使用的是单机配置,也可以使用slb 给apolloadmin和apolloconfig  做集群。因为笔者搜遍全网也没有找到apollo   通过Eureka 注册中心提供服务的案例,所以使用slb做集群也可以

二、使用git作为配置中心(伪)

    安装 Steeltoe.Extensions.Configuration.ConfigServerCore 引用

    此组件依赖服务发现:Steeltoe.Discovery.ClientCore ,Steeltoe.Discovery.Eureka

   说明: 公司自己的Eureka 注册中心,公司使用git作为配置中心版本管理,有自己的配置中心项目,并且注入到Eureka中心

  由于公司使用spring全家桶,所以配置中心也在Eureka 中注册了,项目读取配置时候只需要配置 “配置中心”的服务id 这种方式,所以你需要首先运行起来一个Euraka注册中心,Spring Cloud Config 配置中心

配置中心注册到Euraka

  1、配置 appsetting.json ,增加spring 节点  

  

"spring": {
"application": {
"name": "xxx-serverId"
},
"cloud": {
"config": {
"enabled": true,
"env": "test",
"password": "123456",
"username": "user",
"label": "master",
"discovery": {
"serviceId": "config-content-serverId",
"enabled": true
}
}
}
},
"eureka": { //eureka注册中心
"client": { //作为client使用
"serviceUrl": "http://xxxx.inner.com:8889/eureka/",
"shouldFetchRegistry": true, //是否启用发现服务
"shouldRegisterWithEureka": true //是否注册到服务中心
},
"instance": { //作为服务使用
"port": 5002,
"PreferIpAddress": true,
"instanceId": "" //如果不填写,则使用ip:port格式,此处需要在staup 中手动实现,Steeltoe实现的是计算机名称+端口号
}
},

  节点说明: config节点用于获取配置中心的配置 ,eureka 用户服务注册和服务发现,config 依赖于服务发现

  2、Program.cs  中 host 增加配置

  

 Host.CreateDefaultBuilder(args)

               .ConfigureAppConfiguration((context, configBuiler) =>
{
var env = context.HostingEnvironment;
configBuiler.SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true); if (env.IsDevelopment())
{
var appAssembly = Assembly.Load(new AssemblyName(env.ApplicationName));
if (appAssembly != null)
{
configBuiler.AddUserSecrets(appAssembly, optional: true);
}
}
configBuiler.AddApollo(configBuiler.Build().GetSection("apollo")) //加载配置中心
.AddNamespace("appsettings", ConfigFileFormat.Json) // 引入 TEST1.Common 命名空间
.AddDefault(); // 默认 namespace: application configBuiler.AddEnvironmentVariables(); //加载环境变量
configBuiler.AddConfigServer(); //用于加载配置中心的配置,通过 appsetting.json config节点的配置调用
if (args != null)
{
configBuiler.AddCommandLine(args); //控制台命令参数最后加载
}
})

  3、因为要使用服务治理,所以需要将服务治理加入到ioc容器中

    在   public void  ConfigureServices(IServiceCollection services) 方法中加入如下代码

services.AddDiscoveryClient(Configuration); //服务治理相关组件
services.Configure<EurekaInstanceOptions>(options => //重新设置
{
if (string.IsNullOrWhiteSpace(options.InstanceId))
{
options.InstanceId = options.IpAddress + ":" + options.Port;
}
});

  4、服务治理相关配置加入到了IOC中,但是并未启用,所以需要启用

  在 public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime lifetime, IServiceProvider svp, ILoggerFactory loggerFactory)   中启用服务治理功能

  
//使用服务治理
app.UseDiscoveryClient();

  扩展:笔者搜遍全网也未找到通过Eureka 注册中心获取配置的示例,此示例经过笔者两天查找和翻阅资料实现,希望笔者的贡献能让netcore 猿 少写一个bug,少奋斗一个小时,少掉10跟头发,希望你眼中有光,心中有向往

参考资料: 《steeltoe》  https://docs.steeltoe.io/api/v3/configuration/config-server-provider.html

      《apollo》https://github.com/ctripcorp/apollo/releases     

      《apollo分布式部署》https://github.com/ctripcorp/apollo/wiki/%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97

  

版权所有,转载请注明出处  

netcore项目中使用 SpringCloudConfig 和apollo做配置中心的更多相关文章

  1. 每天学点SpringCloud(八):使用Apollo做配置中心

    由于Apollo支持的图形化界面相对于我们更加的友好,所以此次我们使用Apollo来做配置中心 本篇文章实现了使用Apollo配置了dev和fat两个环境下的属性配置.Apollo官方文档https: ...

  2. 使用Apollo做配置中心

    https://blog.51cto.com/12980017/2158490?source=dra 由于Apollo支持的图形化界面相对于我们更加的友好,所以此次我们使用Apollo来做配置中心 本 ...

  3. netcore项目中IStartupFilter使用

    背景: netcore项目中有些服务是在通过中间件来通信的,比如orleans组件.它里面服务和客户端会指定网关和端口,我们只需要开放客户端给外界,服务端关闭端口.相当于去掉host,这样省掉了些指定 ...

  4. 在 .NetCore 项目中使用 SkyWalkingAPM 踩坑排坑日记

    SkyWalking 概述 SkyWalking 是观察性分析平台和应用性能管理系统.提供分布式追踪.服务网格遥测分析.度量聚合和可视化一体化解决方案.支持Java, .Net Core, PHP, ...

  5. 在Winform项目和Web API的.NetCore项目中使用Serilog 来记录日志信息

    在我们常规的调试或者测试的时候,喜欢把一些测试信息打印在控制台或者记录在文件中,对于.netframework项目来说,我们输出控制台的日志信息习惯的用Console.WriteLine来输出查看,不 ...

  6. .netcore项目中使用log4net

    log4net配置文件 引入log4net包,创建一个config目录,专门用来放配置文件,添加log4net.config文件. 编写配置文件. <?xml version="1.0 ...

  7. .Net Core 商城微服务项目系列(十四):分布式部署携程Apollo构建配置中心

    一.开场白 在系统设计里我们有很多配置希望独立于系统之外,而又能够被系统实时读取.但是在传统的系统设计里,配置信息通常是耦合在系统内的,比如.net里通常会放在App.config或者web.conf ...

  8. SpringBoot项目中应用Jedis和一些常见配置

    优雅的使用Jedis Redis的Java客户端有很多,Jedis是其中使用比较广泛和性能比较稳定的一个.并且其API和RedisAPI命名风格类似,推荐大家使用 在项目中引入Jedis 可以通过Ma ...

  9. ANT 发布项目中 build.xml 文件的详细配置

    xml 代码 <?xml version="1.0" encoding="UTF-8"?> <!-- name:对应工程名字 default: ...

随机推荐

  1. Day6 Scrum 冲刺博客

    一.站立式会议# 1. 会议照片 2. 工作进度+燃尽图  团队成员 昨日完成工作  今日工作计划 遇到的困难  周梓波  将方块旋转变形  添加键盘监听事件  不熟悉监听事件的操作  纪昂学  左右 ...

  2. 个人项目作业WC

    项目github地址 https://github.com/gs735028922gs/wordc 项目相关要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写 ...

  3. asp.net在线人数限制

    1.网站启动初始化在线人数变量 Application["WebsiteCount"] = 0; 2.新的会话进来 只有在全新的会话进来的时候,该方法才会执行.可以过滤掉某些不需要 ...

  4. sqoop进行将Hive 词频统计的结果数据传输到Mysql中

    使用sqoop进行将Hive 词频统计的结果数据传输到Mysql中. mysql准备接受数据的数据库与表 hive准备待传输的数据 sqoop进行数据传输  mysql查看传输结果     二:电子书 ...

  5. 开源抓包工具PowerSniff(支持lua,c语言作为脚本实时分析)

    做这个程序的意图是wireshark插件编写复杂(虽然也支持lua),而轻量级的工具如smartsniff,minisniff不支持插件化数据分析,各种工具用下来或多或少不顺手.以前写的外挂也都是手工 ...

  6. django 验证码

    1.django 缓存设置 django的六种缓存(mysql+redis) :https://www.cnblogs.com/xiaonq/p/7978402.html#i6 1.1 安装Djang ...

  7. MySQL 5.7.29安装配置

    一.环境准备(关闭防火墙) 1.清除已安装数据库 [root@mysql01 ~]# rpm -qa | grep mariadb mariadb-libs-5.5.35-3.el7.x86_64 [ ...

  8. 面试 07-安全问题:CSRF和XSS

    07-安全问题:CSRF和XSS #前言 面试中的安全问题,明确来说,就两个方面: CSRF:基本概念.攻击方式.防御措施 XSS:基本概念.攻击方式.防御措施 这两个问题,一般不会问太难. 有人问: ...

  9. 配合php伪协议利用文件包含漏洞

    文章来源: https://blog.csdn.net/zpy1998zpy/article/details/80598768?utm_medium=distribute.pc_relevant.no ...

  10. MyBatis史上最全文章

    老规矩,本篇文章 不做 MyBatis 的 编码讲解 ,只介绍 文章学习的一些优秀文章 重点在于不要循规蹈矩,教程 这样走,你不一定要按他这样走,按自己的方式来,学习效率会更高,网上的教程有很多,今天 ...