携程框架Apollo实现.NET Core微服务统一配置(测试环境-单机)
Apollo实现.NET Core微服务统一配置(测试环境-单机)
https://www.cnblogs.com/guolianyu/p/10065999.html
一、前言
注:此篇只是为测试环境下的快速入门。后续会给大家带来生产环境下得实战开发。
具体的大家可以去看官方推荐。非常的简单明了。以下介绍引用官方内容:
复制代码
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)的第一次亲密接触
携程框架Apollo实现.NET Core微服务统一配置(测试环境-单机)的更多相关文章
- 基于Apollo实现.NET Core微服务统一配置(测试环境-单机)
一.前言 注:此篇只是为测试环境下的快速入门.后续会给大家带来生产环境下得实战开发. 具体的大家可以去看官方推荐.非常的简单明了.以下介绍引用官方内容: Apollo(阿波罗)是携程框架部门研发的分布 ...
- .Net Core微服务系列--配置中心
什么是配置中心 简单来说配置中心就是对配置进行管理的一个中心.对于配置这个司空见惯的东西,我们想想为什么对于应用程序需要各种各样的配置来支撑? 我们人类没有办法掌控和预知一切,所以映射到软件系统这个领 ...
- .NET Core微服务之基于Apollo实现统一配置中心
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.关于统一配置中心与Apollo 在微服务架构环境中,项目中配置文件比较繁杂,而且不同环境的不同配置修改相对频繁,每次发布都需要对应修改 ...
- 基于.NET CORE微服务框架 -surging的介绍和简单示例 (开源)
一.前言 至今为止编程开发已经11个年头,从 VB6.0,ASP时代到ASP.NET再到MVC, 从中见证了.NET技术发展,从无畏无知的懵懂少年,到现在的中年大叔,从中的酸甜苦辣也只有本人自知.随着 ...
- ASP.NET Core微服务+Tabler前端框架搭建个人博客1--开始前想说的话
写在前面 本人为在读研究生,特别喜欢.NET,觉得.NET的编程方式.语法都特别友好,学习.NET Core已经差不多有一年半了,从一开始不知道如何入门到现在终于可以编写一些小的应用程序,想一想还是非 ...
- (7)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- 利用Polly+AOP+依赖注入封装的降级框架
创建简单的熔断降级框架 要达到的目标是: 参与降级的方法参数要一样,当HelloAsync执行出错的时候执行HelloFallBackAsync方法. public class Person { [H ...
- (6)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- AOP框架
AOP 框架基础 要求懂的知识:AOP.Filter.反射(Attribute). 如果直接使用 Polly,那么就会造成业务代码中混杂大量的业务无关代码.我们使用 AOP (如果不了解 AOP,请自 ...
- net core 微服务框架 Viper 调用链路追踪
1.Viper是什么? Viper 是.NET平台下的Anno微服务框架的一个示例项目.入门简单.安全.稳定.高可用.全平台可监控.底层通讯可以随意切换thrift grpc. 自带服务发现.调用链追 ...
- hello world .net core 微服务框架 Viper
1.Viper是什么? Viper 是.NET平台下的Anno微服务框架的一个示例项目.入门简单.安全.稳定.高可用.全平台可监控.底层通讯可以随意切换thrift grpc. 自带服务发现.调用链追 ...
随机推荐
- Memcached stats items 命令
Memcached stats items 命令用于显示各个 slab 中 item 的数目和存储时长(最后一次访问距离现在的秒数). 语法: stats items 命令的基本语法格式如下: sta ...
- springmvc的@Validated/@Valid注解使用和BindingResult bindingResult
关于@Valid和Validated的比较 @Valid是使用hibernate validation的时候使用 @Validated 是只用spring Validator 校验机制使用 一:@V ...
- wordcount程序出现map 100% reduce 0%问题的解决方法
运行wordcount程序一直停在map 100% reduce 0%, input文件夹的内容: 其中: f1.txt中的内容为:hello hadoop f2.txt中的内容为:hello had ...
- 个人学习jQuery笔记
1.$(“#div1”).text()是获取id为div1的文本内容,也可以填充值 $(“#div1”).html() 是获取id 为div1的HTML内容值 也可以填充值 2.$(“#div1”)是 ...
- golang简易版聊天室
功能需求: 创建一个聊天室,实现群聊和单聊的功能,直接输入为群聊,@某人后输入为单聊 效果图: 群聊: 单聊: 服务端: package main import ( "fmt" ...
- C# ASP.NET 验证码
使用C# ASP.NET 获取 验证码的代码书写 一般都采用异步 点击 前台验证码图片 请求一次 : 前台图片代码: <img id="imgvalidatecode" sr ...
- js 多个倒计时,毫秒倒计时
其实主要是借鉴了了这篇文的写法(http://tuzwu.iteye.com/blog/819081),俺稍作了修改,以便更适合我的需要: 实现功能:调用一个函数,传入html元素的id,和一个截止时 ...
- Linux:split命令详解
split 可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志 语法 split(选项)(file)PREFIX 选项 -b:值为每一输出档案的大小,单位为 ...
- CRect类 的介绍
类CRect是对Windows结构RECT的封装,凡是能用RECT结构的地方都可以用CRect代替. 结构RECT表示一个矩形的位置和尺寸,其定义为: typedef struct tagRECT{ ...
- Android支持Split Apks后,如何获得指定包名下的所有类
从Android5.0以后,支持多个apk动态部署,这导致以前通过单一apk获取包路径下的所有类的方法失效,不过稍微修改一下原先的代码就可以,代码如下 public static final List ...