基于Apollo实现.NET Core微服务统一配置(测试环境-单机)

时间:2021-06-30 18:55:58

一、前言


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

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

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实现.NET Core微服务统一配置(测试环境-单机)

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

文件内容

基于Apollo实现.NET Core微服务统一配置(测试环境-单机)

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

具体如下:

基于Apollo实现.NET Core微服务统一配置(测试环境-单机)

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

 chmod +x demo.sh

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

./demo.sh start

启动完毕:

基于Apollo实现.NET Core微服务统一配置(测试环境-单机)

打开地址:192.168.250.131:8070

默认账号和密码: apollo /  admin

基于Apollo实现.NET Core微服务统一配置(测试环境-单机)

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

基于Apollo实现.NET Core微服务统一配置(测试环境-单机)

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

基于Apollo实现.NET Core微服务统一配置(测试环境-单机)

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

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

A、创建项目

基于Apollo实现.NET Core微服务统一配置(测试环境-单机)

B、开始配置我们的namespace.

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

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

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

创建我的swagger 私有配置

基于Apollo实现.NET Core微服务统一配置(测试环境-单机)

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

添加两个  title和 version。

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

基于Apollo实现.NET Core微服务统一配置(测试环境-单机)

基于Apollo实现.NET Core微服务统一配置(测试环境-单机)

然后选择 “发布”即可。

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

三、.NET Core中集成Apollo


1、新建一个.net core项目

在appsettings.json 中添加apollo配置

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

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

基于Apollo实现.NET Core微服务统一配置(测试环境-单机)

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

基于Apollo实现.NET Core微服务统一配置(测试环境-单机)

基于Apollo实现.NET Core微服务统一配置(测试环境-单机)

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

基于Apollo实现.NET Core微服务统一配置(测试环境-单机)

3、在Program.cs 中注入配置

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

基于Apollo实现.NET Core微服务统一配置(测试环境-单机)

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实现.NET Core微服务统一配置(测试环境-单机)

四、总结


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微服务统一配置(测试环境-单机)                基于Apollo实现.NET Core微服务统一配置(测试环境-单机)