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

简介: 一、前言注:此篇只是为测试环境下的快速入门。后续会给大家带来生产环境下得实战开发。具体的大家可以去看官方推荐。非常的简单明了。以下介绍引用官方内容:Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

一、前言


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

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

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

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

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

                

LouieGuo
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
10月前
|
测试技术 微服务
使用Istio实现流量镜像:提升微服务测试的利器
使用Istio实现流量镜像:提升微服务测试的利器
389 99
|
缓存 Java API
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的配置
本文介绍了在Spring Boot中配置Swagger2的方法。通过创建一个配置类,添加`@Configuration`和`@EnableSwagger2`注解,使用Docket对象定义API文档的详细信息,包括标题、描述、版本和包路径等。配置完成后,访问`localhost:8080/swagger-ui.html`即可查看接口文档。文中还提示了可能因浏览器缓存导致的问题及解决方法。
1376 0
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的配置
|
Java 关系型数据库 数据库
微服务——SpringBoot使用归纳——Spring Boot事务配置管理——Spring Boot 事务配置
本文介绍了 Spring Boot 中的事务配置与使用方法。首先需要导入 MySQL 依赖,Spring Boot 会自动注入 `DataSourceTransactionManager`,无需额外配置即可通过 `@Transactional` 注解实现事务管理。接着通过创建一个用户插入功能的示例,展示了如何在 Service 层手动抛出异常以测试事务回滚机制。测试结果表明,数据库中未新增记录,证明事务已成功回滚。此过程简单高效,适合日常开发需求。
1917 0
|
Java 测试技术 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——少量配置信息的情形
本课主要讲解Spring Boot项目中的属性配置方法。在实际开发中,测试与生产环境的配置往往不同,因此不应将配置信息硬编码在代码中,而应使用配置文件管理,如`application.yml`。例如,在微服务架构下,可通过配置文件设置调用其他服务的地址(如订单服务端口8002),并利用`@Value`注解在代码中读取这些配置值。这种方式使项目更灵活,便于后续修改和维护。
415 0
|
SQL Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— application.yml 中对日志的配置
在 Spring Boot 项目中,`application.yml` 文件用于配置日志。通过 `logging.config` 指定日志配置文件(如 `logback.xml`),实现日志详细设置。`logging.level` 可定义包的日志输出级别,例如将 `com.itcodai.course03.dao` 包设为 `trace` 级别,便于开发时查看 SQL 操作。日志级别从高到低为 ERROR、WARN、INFO、DEBUG,生产环境建议调整为较高级别以减少日志量。本课程采用 yml 格式,因其层次清晰,但需注意格式要求。
1553 0
|
Java 数据库连接 微服务
微服务——MyBatis配置——事务管理
本段内容主要介绍了事务管理的两种类型:JDBC 和 MANAGED。JDBC 类型直接利用数据源连接管理事务,依赖提交和回滚机制;而 MANAGED 类型则由容器全程管理事务生命周期,例如 JEE 应用服务器上下文,默认会关闭连接,但可根据需要设置 `closeConnection` 属性为 false 阻止关闭行为。此外,提到在使用 Spring + MyBatis 时,无需额外配置事务管理器,因为 Spring 模块自带的功能可覆盖上述配置,且这两种事务管理器类型均无需设置属性。
254 0
|
Java 数据库连接 数据库
微服务——MyBatis配置——多环境配置
在 MyBatis 中,多环境配置允许为不同数据库创建多个 SqlSessionFactory。通过传递环境参数给 SqlSessionFactoryBuilder,可指定使用哪种环境;若忽略,则加载默认环境。`environments` 元素定义环境配置,包括默认环境 ID、事务管理器和数据源类型等。每个环境需唯一标识,确保默认环境匹配其中之一。代码示例展示了如何构建工厂及配置 XML 结构。
252 0
|
缓存 Java 数据库连接
微服务——MyBatis配置——常见配置
本文介绍了 MyBatis 的常见配置及其加载顺序。属性配置优先级为:方法参数传递的属性 > resource/url 属性中配置 > properties 元素中指定属性。同时列举了多个关键配置项,如 `cacheEnabled`(全局缓存开关)、`lazyLoadingEnabled`(延迟加载)、`useGeneratedKeys`(使用 JDBC 自动生成主键)等,并详细说明其作用、有效值及默认值。这些配置帮助开发者优化 MyBatis 的性能与行为。
257 0
|
存储 网络协议 Nacos
高效搭建Nacos:实现微服务的服务注册与配置中心
Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。它旨在帮助开发者更轻松地构建、部署和管理分布式系统,特别是在微服务架构中。
2966 81
高效搭建Nacos:实现微服务的服务注册与配置中心
|
Shell Go 开发工具
【环境】Rocky8使用gvm配置Go多版本管理的微服务开发环境(go-zero)
通过本文的介绍,我们详细讲解了如何在Rocky8上使用gvm来管理多个Go版本,并配置go-zero框架的开发环境。通过gvm的灵活管理,开发者可以轻松切换不同的Go版本,以适应不同项目的需求。同时,go-zero框架的使用进一步提升了微服务开发的效率和质量。希望本文能帮助开发者构建高效的Go语言开发环境,提高项目开发的灵活性和稳定性。
533 63