Apollo配置中心 结合springboot

41 篇文章 0 订阅
20 篇文章 0 订阅

一、准备工作

 

1.1 Java

  • Apollo服务端:1.8+
  • Apollo客户端:1.7+

由于Quick Start会在本地同时启动服务端和客户端,所以需要在本地安装Java 1.8+。

在配置好后,可以通过如下命令检查:

java -version

样例输出:

java version "1.8.0_74"
Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)

 

1.2 MySQL

  • 版本要求:5.6.5+

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

连接上MySQL后,可以通过如下命令检查:

SHOW VARIABLES WHERE Variable_name = 'version'
Variable_nameValue
version5.7.11

 

1.3 下载Quick Start安装包

我们准备好了一个Quick Start安装包,大家只需要下载到本地,就可以直接使用,免去了编译、打包过程。

安装包共50M,如果访问github网速不给力的话,可以从百度网盘下载。

  1. 从Github下载
  2. 从百度网盘下载
    • 通过网盘链接下载
    • 下载到本地后,在本地解压apollo-quick-start.zip
  3. 为啥安装包要50M这么大?
    • 因为这是一个可以自启动的jar包,里面包含了所有依赖jar包以及一个内置的tomcat容器

 

二、安装步骤

 

2.1 创建数据库

Apollo服务端共需要两个数据库:ApolloPortalDBApolloConfigDB,我们把数据库、表的创建和样例数据都分别准备了sql文件,只需要导入数据库即可。

注意:如果你本地已经创建过Apollo数据库,请注意备份数据。我们准备的sql文件会清空Apollo相关的表。

 

2.1.1 创建ApolloPortalDB

通过各种MySQL客户端导入sql/apolloportaldb.sql即可。

下面以MySQL原生客户端为例:

source /your_local_path/sql/apolloportaldb.sql

导入成功后,可以通过执行以下sql语句来验证:

select `Id`, `AppId`, `Name` from ApolloPortalDB.App;
IdAppIdName
1SampleAppSample App

 

2.1.2 创建ApolloConfigDB

通过各种MySQL客户端导入sql/apolloconfigdb.sql即可。

下面以MySQL原生客户端为例:

source /your_local_path/sql/apolloconfigdb.sql

导入成功后,可以通过执行以下sql语句来验证:

select `NamespaceId`, `Key`, `Value`, `Comment` from ApolloConfigDB.Item;
NamespaceIdKeyValueComment
1timeout100sample timeout配置

 

2.2 配置数据库连接信息

Apollo服务端需要知道如何连接到你前面创建的数据库,所以需要编辑demo.sh,修改ApolloPortalDB和ApolloConfigDB相关的数据库连接串信息。

注意:填入的用户需要具备对ApolloPortalDB和ApolloConfigDB数据的读写权限。

#apollo config db info
apollo_config_db_url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
apollo_config_db_username=用户名
apollo_config_db_password=密码(如果没有密码,留空即可)

# apollo portal db info
apollo_portal_db_url=jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8
apollo_portal_db_username=用户名
apollo_portal_db_password=密码(如果没有密码,留空即可)

注意:不要修改demo.sh的其它部分

 

三、启动Apollo配置中心

 

3.1 确保端口未被占用

Quick Start脚本会在本地启动3个服务,分别使用8070, 8080, 8090端口,请确保这3个端口当前没有被使用。

例如,在Linux/Mac下,可以通过如下命令检查:

lsof -i:8080

 

3.2 执行启动脚本

./demo.sh start

当看到如下输出后,就说明启动成功了!

==== starting service ====
Service logging file is ./service/apollo-service.log
Started [10768]
Waiting for config service startup.......
Config service started. You may visit http://localhost:8080 for service status now!
Waiting for admin service startup....
Admin service started
==== starting portal ====
Portal logging file is ./portal/apollo-portal.log
Started [10846]
Waiting for portal startup......
Portal started. You can visit http://localhost:8070 now!

 

3.3 异常排查

如果启动遇到了异常,可以分别查看service和portal目录下的log文件排查问题。

注:在启动apollo-configservice的过程中会在日志中输出eureka注册失败的信息,如com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused。需要注意的是,这个是预期的情况,因为apollo-configservice需要向Meta Server(它自己)注册服务,但是因为在启动过程中,自己还没起来,所以会报这个错。后面会进行重试的动作,所以等自己服务起来后就会注册正常了。

 这里是直接使用的阿波罗已经打好的快速启动的jar包,如果想自己拉取配置的话请参考

https://blog.csdn.net/z960339491/article/details/80667559

 

下面我将讲一下,应用是如何接入apollo的

首先是新建一个springboot应用 然后加入maven依赖

<!--apollo-->
        <dependency>
            <groupId>com.ctrip.framework.apollo</groupId>
            <artifactId>apollo-client</artifactId>
            <version>1.1.0</version>
        </dependency>
<!--apollo-->

之后就是在application.properties中进行配置

server.port= your-port
#你在apollo的应用ID
app.id= your-appId
#连接apollo的配置
apollo.meta = http://localhost:8080
# 主动拉取配置时间间隔,单位分钟
apollo.refreshInterval: 1
# will inject 'application' namespace in bootstrap phase
apollo.bootstrap.enabled = true
# will inject 'application' and 'FX.apollo' namespaces in bootstrap phase
apollo.bootstrap.namespaces = application,FX.apollo
# put apollo initialization before logging system initialization
apollo.bootstrap.eagerLoad.enabled=true

这样之后就可以了,基本的配置文件都会自动去找了

但是有时候我们代码中需要用到配置文件中的一些value就需要做些操作了

新建一个配置类

package com.example.myapolloclient.config;

import org.springframework.beans.factory.annotation.Value;

/**
 * @Author: 
 * @Date: 2019/1/15 16:07
 * @Description:
 */
public class TestJavaConfigBean {
    @Value("${timeout:1000}")
    private int timeout;
    private int batch;
    private String myname;

    @Value("${batch:2000}")
    public void setBatch(int batch) {
        this.batch = batch;
    }

    public int getTimeout() {
        return timeout;
    }

    public int getBatch() {
        return batch;
    }

    public String getMyname() {
        return myname;
    }

    @Value("${myname:null}")
    public void setMyname(String myname) {
        this.myname = myname;
    }
}
package com.example.myapolloclient.config;

import com.ctrip.framework.apollo.Config;
import com.ctrip.framework.apollo.model.ConfigChange;
import com.ctrip.framework.apollo.model.ConfigChangeEvent;
import com.ctrip.framework.apollo.spring.annotation.ApolloConfig;
import com.ctrip.framework.apollo.spring.annotation.ApolloConfigChangeListener;
import com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig;
import lombok.ToString;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

/**
 * @Author: 
 * @Date: 2019/1/15 15:19
 * @Description:
 */
/**
 *
 * 使用@EnableApolloConfig自动注入
 */
@Configuration
@EnableApolloConfig
public class JavaConfigSample {

    @Bean
    public TestJavaConfigBean javaConfigBean() {
        return new TestJavaConfigBean();
    }

}

然后再到controller中调用

就这样你就可以看到自己的配置信息实时的更新了

此外如果想知道更多的配置方式可以到apollo官网查看https://github.com/ctripcorp/apollo/wiki/Java%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97#3213-spring-boot%E9%9B%86%E6%88%90%E6%96%B9%E5%BC%8F%E6%8E%A8%E8%8D%90

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Apollo配置中心是一个开源的配置管理平台,它提供了集中式的配置管理和动态配置更新的功能。通过Apollo,开发人员可以将应用程序的配置统一管理起来,并实现配置的动态更新。Spring Boot是一个用于快速开发基于Spring框架的应用程序的工具,它提供了一种简化配置和部署的方式。Apollo和Spring Boot可以很好地结合使用,通过引入Apollo客户端依赖,应用程序可以从Apollo配置中心读取配置信息,并实时接收到最新的配置更新。这样,开发人员可以更灵活地管理和调整应用程序的配置,提高开发效率和运维便利性。引用<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [SpringBoot整合Apollo配置中心快速入门](https://blog.csdn.net/qq_42667717/article/details/123897120)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Apollo配置中心(Springboot接入)](https://blog.csdn.net/wyplj2015/article/details/119420156)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值