Java开发网站(后端篇)——SpringBoot集成Apollo(搭建、使用)

本文详细介绍了如何在Linux环境下搭建Apollo配置中心,包括下载文件、配置数据库、修改服务参数、启动服务等步骤。同时,文章还展示了在SpringBoot应用中集成Apollo的配置,包括引入依赖、配置文件设置、创建应用以及测试动态获取配置的效果。使用Apollo可以实现配置的动态更新,避免应用因配置变更而频繁重启。
摘要由CSDN通过智能技术生成

一、Apollo的搭建

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

1.下载相关文件

我们演示将Apollo搭建到Linux下,虚拟机或云服务器都可以。安装下载有两种方式,一是下载官网源码自己进行编译,一是下载官方编译好的文件。这里选取第二种方式讲解。
下载地址:
https://github.com/ctripcorp/apollo/releases
下载下方三个文件
在这里插入图片描述
下载完成后,分别解压,然后放到一个新建apollo的文件夹下,打包上传到服务器的/usr/local/目录下
在这里插入图片描述

2.上传文件至服务器后解压。

apollo需要jdk支持,所以需要服务器安装一个jdk,请自行百度安装。。。

3.下载apollo需要的两个数据库文件

下载地址
https://github.com/nobodyiam/apollo-build-scripts/tree/master/sql
在这里插入图片描述
在你的数据库中执行这两个sql即可
在这里插入图片描述

4.进入到服务器中修改apollo的相关配置

分别修改apollo下三个文件下的/config/application-github.properties文件

spring.datasource.url = jdbc:mysql://{数据库ip}:{数据库port}/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = 数据库用户名
spring.datasource.password = 数据库密码

5.修改三个服务的启动端口和日志输出位置(尽量不用改)

修改三个服务下/script目录中的start.sh脚本文件
建议只修改apollo-configservice服务下的启动端口,避免8080冲突。我这里是将三个服务的端口开头的8全部修改为9了。

## Adjust log dir if necessary 日志位置
LOG_DIR=/opt/logs/100003172
## Adjust server port if necessary 服务启动端口号
SERVER_PORT=${SERVER_PORT:=9090}

6.修改apollo-portal服务下的meta配置

修改apollo-portal/config/apollo-env.properties,配置不同环境下的服务地址

local.meta=http://{你的ip}:9080
dev.meta=http://{你的ip}:9080

同时修改数据库apolloconfigdb中serverconfig表的eureka.service.url
其中的地址就是apollo-configservice的服务地址
在这里插入图片描述
再修改apolloportaldb数据库中serverconfig表的apollo.portal.envs字段。
此为可支持的环境列表,上面写的local和dev中间使用英文逗号分隔。
在这里插入图片描述

7.编写一个apollo的启动和停止脚本

编写一个一键启动的脚本,省的三个服务一个一个操作
startAll.sh

#!/bin/bash

cd /usr/local/apollo/apollo-adminservice-1.9.1-github/scripts/
./shutdown.sh
cd ~

cd /usr/local/apollo/apollo-configservice-1.9.1-github/scripts/
./shutdown.sh
cd ~

cd /usr/local/apollo/apollo-portal-1.9.1-github/scripts/
./shutdown.sh
cd ~

rm -rf /opt/logs/

ps -ef | grep apollo

shutdownAll.sh

#!/bin/bash

cd /usr/local/apollo/apollo-adminservice-1.9.1-github/scripts/
./shutdown.sh
cd ~

cd /usr/local/apollo/apollo-configservice-1.9.1-github/scripts/
./shutdown.sh
cd ~

cd /usr/local/apollo/apollo-portal-1.9.1-github/scripts/
./shutdown.sh
cd ~

rm -rf /opt/logs/

ps -ef | grep apollo

两个脚本放到apollo目录下,与三个服务同级,并赋予chmod 777 权限。

chmod 777 startAll.sh shutdownAll.sh

在这里插入图片描述

8.启动apollo,三个服务启动是有顺序的,脚本中已经排序好了。

./startAll.sh

启动后会打印日志
在这里插入图片描述
这样就启动了,访问apollo地址 http://ip:9070 (9070是我设置的端口)
在这里插入图片描述
默认账号密码是 : apollo/admin

PS:apollo比较占内存,停止的话就执行

./shutdownAll.sh

输出以下日志就停止apollo了
在这里插入图片描述

二、SpringBoot使用Apollo

1.引入pom依赖

		<!--apollo配置-->
        <dependency>
            <groupId>com.ctrip.framework.apollo</groupId>
            <artifactId>apollo-client</artifactId>
            <version>1.3.0</version>
        </dependency>

2.配置文件

上一篇文章讲过springboot配置多个环境的配置文件,现在暂且使用dev环境来演示,在application-dev.yml文件中加入以下配置

app:
  id: csdn-server-app-dev #在配置中心配置的应用身份信息(apollo中创建的,暂时咱们还没创建)
apollo:
  meta: http://{ip}:9080 #{ip}换成你自己的ip,端口上文讲过
  bootstrap:
    namespaces: application # 配置的命名空间,多个逗号分隔,一个namespace相当于一个配置文件
    enabled: true #在应用启动阶段是否向Spring容器注入被托管的properties文件配置信息
    eagerLoad:
      enabled: true #将Apollo配置加载提到初始化日志系统之前

3.apollo创建应用

在apollo页面中创建一个csnd-server-app-dev的应用
在这里插入图片描述

在这里插入图片描述

4.配置启动类

启动类中加上@EnableApolloConfig注解

package com.luoye.csdn_course_server;

import com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableApolloConfig
public class CsdnCourseServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(CsdnCourseServerApplication.class, args);
    }

}

测试

apollo的csnd-server-app-dev应用中增加一个配置
在这里插入图片描述
新增的配置需要发布之后才能生效
在这里插入图片描述
编写controller测试

	@Value("${ceshi:local}") //给一个默认值,如果没有找到输出local
    private String ceshi;

    @GetMapping(value = "/test")
    @ApiOperation(value = "测试apollo接口")
    public String test(){
        return ceshi;
    }

此时,我application-dev.yml中并没有配置ceshi这个字段,只配置了apollo的相关,但是在apollo中添加了ceshi字段,value为dev。
但是如果你此时在本地环境启动项目,将会报错

reason: Could not complete get operation [Cause: connect timed out]

需要配置一句话
-Dapollo.configService=http://{ip}:9080
在这里插入图片描述
启动项目,请求测试接口。
在这里插入图片描述
返回dev,证明apollo已经配置的没问题了,并且可以成功的取到值。

三、动态获取配置

我们尝试在项目启动时,修改apollo的配置,将ceshi字段的value修改一下,改成stg。
在这里插入图片描述
再来请求接口
在这里插入图片描述
哦吼!返回了stg。
这里我记得动态获取不到的,但是不知道为什么现在又可以了,那动态获取配置就没啥说的了。

使用apollo的好处就是,当你的项目部署上去之后,如果需要修改某个配置文件的value,就不需要重新打包部署了。比如说有一段代码需要执行一次,在代码外层使用一个开关控制,将开关配置到apollo上,当你执行完一次之后,通过apollo修改开关关闭就可以了。当然也有更多的便利性功能,你可以慢慢的探索。

如果您有疑问的话,请在下方留言,谢谢!

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值