一、前言


注:此篇只是为测试环境下的快速入门。后续会给大家带来生产环境下得实战开发。

具体的大家可以去看官方推荐。非常的简单明了。以下介绍引用官方内容:

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

服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。

Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有额外支持。

.Net客户端不依赖任何框架,能够运行于所有.Net运行时环境。

官方github地址:https://github.com/ctripcorp/apollo/wiki

二、环境介绍及安装Apollo


1、环境介绍

虚拟机服务器:CentOS 7.4

IP地址:192.168.250.131

安装包下载:apollo-build-scripts项目

基础软件环境:

JAVA JDK 1.8+
Mysql 5.7

2、安装Apollo

第一步:JAVA环境安装

A、下载JDK 1.8

命令:

wget --no-check-certificate --no-cookie --header "Cookie: oraclelicense=accept-securebackup-cookie;" http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.rpm

如果上述命令无法使用,则直接去oracle网站下载即可。

Oracle地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

B、下载压缩包后,我们就要解压JDK即可

rpm -ivh jdk-8u181-linux-x64.rpm

C、检查 JDK 是否安装完毕

java -version

第二步:安装mysql 5.7

由于 apollo需要的mysql数据版本为5.6.5+,因此安装5.7版本的。

具体原因是:Apollo的表结构对timestamp使用了多个default声明,所以需要5.6.5以上版本。

A、此mysql 我才用docker安装即可。简单方便。

B、安装完成后需要把apollo的两个数据库文件执行以下即可

apolloconfigdb.sql

apolloportaldb.sql

执行完毕后就可以在数据库中看到这两个数据库啦

第三步:下载Apollo-build-scripts 项目到服务器上 

文件内容

A、然后修改 项目中的 demo.sh 文件里面的数据库地址即可。

具体如下:

 B、然后把demo.sh 项目设置可执行权限

 chmod +x demo.sh

C、设置完毕后就启动 demo.sh吧

./demo.sh start

启动完毕:

打开地址:192.168.250.131:8070

默认账号和密码: apollo /  admin

登录后就可以看到一个demo。

注:如果提示系统出错,请稍后几秒钟重试一下,因为通过Eureka注册的服务有一个刷新的延时。

第四步:开始创建一个自己的项目配置

注:在接下去的.net core 项目中,我们会把swagger的配置信息配置在apollo上。

A、创建项目

B、开始配置我们的namespace.

此处的namespace其实直观说是命名空间,也可以说是 分组。

namespace中有分为  public 和private,公有就是共享的,其他项目可以用,私有就是只有特定的项目可以用。

其实这个分组的概念非常的好,也很清楚的隔开每一个项目配置。

创建我的swagger 私有配置

C、然后添加配置,添加配置可以选择文本添加或者按钮添加

添加两个  title和 version。

文本添加或者  按钮点击添加都可以。

然后选择 “发布”即可。

apollo 配置完毕。接下来就要配置.NET Core项目啦。

三、.NET Core中集成Apollo


1、新建一个.net core项目

在appsettings.json 中添加apollo配置

其中 AppId 是项目的唯一标识,就是我们在apollo上创建项目的唯一标识。

  "apollo": {
"AppId": "LouieSwaggerDemo",
"MetaServer": "http://192.168.250.131:8080"
}

2、在项目中引入apollo包和 swagger包

然后右键项目 选择“属性” 把 调试改为 swagger

3、在Program.cs 中注入配置

需要注入我们创建的命名空间哟。并且注入到Configuration 配置中。

4、在Startup.cs中配置一下swagger的信息

其中 Configuration["XXXXX"]   中的字符串名称是  和apollo上面的我们创建的项目的名称要保持一致。

public void ConfigureServices(IServiceCollection services)
{
services.AddSwaggerGen(c =>
{
c.SwaggerDoc(Configuration["swagger.version"], new Info
{
Version = Configuration["swagger.version"],
Title = Configuration["swagger.title"]
});
var basePath = PlatformServices.Default.Application.ApplicationBasePath;
var xmlPath = Path.Combine(basePath, "ApolloConfigureCenter.xml");
c.IncludeXmlComments(xmlPath);
});
services.AddMvc();
} // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v2/swagger.json", Configuration["swagger.title"]);
});
app.UseMvc();

5、至此,项目配置已搞定。我们就可以运行一下啦。

发现配置应用成功。至此,测试环境-单机搭建已经OK。

四、总结


apollo配置实在是强大,方便管理我们多个微服务应用配置。用起来也是棒棒的。大家如果有时间可以尝试一下。

此篇为apollo下的测试环境单机部署,如果想要运用到生产环境中,就要用上分布式部署啦,官网上也有介绍。

后续我也会继续给大家带来生产环境中的部署。大家尽情期待吧。

五、参考资料


0、本文案例代码:github:https://github.com/LouieGuo/ApolloConfigureCenter_Demo

1、Apollo官方github:WIKI

2、Edison Zhou:.NET Core微服务之基于Apollo实现统一配置中心

3、乔达摩:Asp.Net Core与携程阿波罗(Apollo)的第一次亲密接触

asp.net core 交流群: 欢迎加群交流
如果您认为这篇文章还不错或者有所收获,您可以点击右下角的【推荐】按钮精神支持,因为这种支持是我继续写作,分享的最大动力!

作者:LouieGuo
声明:原创博客请在转载时保留原文链接或者在文章开头加上本人博客地址,如发现错误,欢迎批评指正。凡是转载于本人的文章,不能设置打赏功能,如有特殊需求请与本人联系!

微信公众号:欢迎关注                                                 QQ技术交流群: 欢迎加群

                

基于Apollo实现.NET Core微服务统一配置(测试环境-单机)的更多相关文章

  1. 携程框架Apollo实现.NET Core微服务统一配置(测试环境-单机)

    Apollo实现.NET Core微服务统一配置(测试环境-单机) https://www.cnblogs.com/guolianyu/p/10065999.html 一.前言 注:此篇只是为测试环境 ...

  2. .Net Core微服务系列--配置中心

    什么是配置中心 简单来说配置中心就是对配置进行管理的一个中心.对于配置这个司空见惯的东西,我们想想为什么对于应用程序需要各种各样的配置来支撑? 我们人类没有办法掌控和预知一切,所以映射到软件系统这个领 ...

  3. .NET Core微服务之基于Apollo实现统一配置中心

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.关于统一配置中心与Apollo 在微服务架构环境中,项目中配置文件比较繁杂,而且不同环境的不同配置修改相对频繁,每次发布都需要对应修改 ...

  4. .NET Core微服务之基于Steeltoe使用Spring Cloud Config统一管理配置

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 =>  Steeltoe目录快速导航: 1. 基于Steeltoe使用Spring Cloud Eureka 2. 基于Steelt ...

  5. .NET Core微服务之基于Ocelot+IdentityServer实现统一验证与授权

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.案例结构总览 这里,假设我们有两个客户端(一个Web网站,一个移动App),他们要使用系统,需要通过API网关(这里API网关始终作为 ...

  6. .NET Core微服务之基于Steeltoe集成Zuul实现统一API网关

    Tip: 此篇已加入.NET Core微服务基础系列文章索引,本篇接上一篇<基于Steeltoe使用Eureka实现服务注册与发现>,所演示的示例也是基于上一篇的基础上而扩展的. => ...

  7. .NET Core微服务之基于App.Metrics+InfluxDB+Grafana实现统一性能监控

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.关于App.Metrics+InfluxDB+Grafana 1.1 App.Metrics App.Metrics是一款开源的支持. ...

  8. .NET Core微服务之基于Exceptionless实现分布式日志记录

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.Exceptionless极简介绍 Exceptionless 是一个开源的实时的日志收集框架,它可以应用在基于 ASP.NET,AS ...

  9. 基于Docker Compose的.NET Core微服务持续发布

    是不是现在每个团队都需要上K8s才够潮流,不用K8s是不是就落伍了.今天,我就通过这篇文章来回答一下. 一.先给出我的看法和建议 我想说的是,对于很多的微小团队来说,可能都不是一定要上K8s,毕竟上K ...

随机推荐

  1. 20155230 2016-2017-2《Java程序设计》第六周学习总结

    20155230 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 Java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象. 从应用程序角度 ...

  2. 【leetcode 简单】 第六十六题 用栈实现队列

    使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部. pop() -- 从队列首部移除元素. peek() -- 返回队列首部的元素. empty() -- 返回队列是否为空. ...

  3. STL-map and multimap

    定义 map<int,int> a; map<int,string> a; map<double,int> a; …… 首先要知道的一些 Map是STL的一个关联容 ...

  4. 【前端】直击源头的让你3秒理解并且会用Jsonp!!!

    1. 同源策略 ajax之所以需要“跨域”,罪魁祸首就是浏览器的同源策略.即,一个页面的ajax只能获取这个页面相同源或者相同域的数据. 如何叫“同源”或者“同域”呢?——协议.域名.端口号都必须相同 ...

  5. 解决windows文件夹不能自动刷新的问题

    我用的是win7系统,最近忽然发现我的文档文件夹里的文件不能自动刷新了,就是当剪切或删除某个文件后,文件夹里的文件没有变化,看起来文件还在原文件夹中,只有通过手动刷新后才能看到效果,该如何解决? 网上 ...

  6. [转]std::set、自定义类型与比较函数

    转自:http://www.189works.com/article-42025-1.html 怎样在set中放入自定义类型?这个问题通过谷歌就可以得到不少答案:1.定义一个函数对象并在定义set的时 ...

  7. 关于java线程锁synchronized修饰普通方法与静态方法的区别

    最近研究线程方面问题,关于这个synchronized锁修饰的问题,先是修饰普通方法,然后通过两个线程,各自执行自己对象的锁,发现方法执行互不影响,代码如下: private static int n ...

  8. jQuery学习(二) 自定义扩展函数

    jQuery函数调用写法很优雅,在项目开发过程中,有需要自定义函数经常被使用到,将这些函数放置到项目ExtTool.js中,为了编码方式的统一,也希望这些自定义函数与jQuery函数一致的调用方式.在 ...

  9. C# 调用WSDL接口及方法

    1.首先需要清楚WSDL的引用地址 如:http://XX.XX.4.146:8089/axis/services/getfileno?wsdl 上述地址的构造为 类名getfileno. 2.在.N ...

  10. unity 代码有调整,重新导出 iOS 最烦的就是 覆盖导出后项目不能打开

    unity  代码有调整,重新导出 iOS 最烦的就是 覆盖导出后项目不能打开,原因是 editor 里面的脚本,破坏了 Unity-iPhone.xcodeproj 里面的结构,具体是什么原因,也不 ...