Spring Boot整合Apollo+Eureka实现不重启应用修改配置的快速入门

Eureka是微服务中的注册中心,Apollo是配置中心,同类似的框架有点多,已经可以整理出一个表格了:

注册中心 配置中心
Spring Cloud Eureka Spring Cloud Config
Nacos Nacos
Zookeeper Apollo

Eureka是Spring Cloud最开始支持和推荐的服务注册中心,但是现在Eureka2.x版本已经宣布不开源了,国内使用的大部分还是1.x版本,所以注册中心的选择可以考虑更换其他的了,比如Nacos。

Apollo官方文档:www.apolloconfig.com/#/zh/deploy...

Apollo的官方文档已经很全了。

Apollo环境搭建

建表

执行两个SQL,链接在这里:

github.com/apolloconfi...

github.com/apolloconfi...

安装包下载

下载安装包到本地(这是demo包,实际作分布式部署的时候不用这个的)

  • 通过网盘链接下载,提取码: 9wwe
  • 下载到本地后,在本地解压apollo-quick-start.zip

修改启动脚本

找到这个:demo.sh,修改里面的数据库连接和账密,如果是MySQL5.7之后版本,记得加:useSSL=false,不然无法启动。

修改:config_server_url为上面Eureka服务的链接和端口,他们需要连接起来。

启动Apollo

保证这几个端口未被占用:8080/8070/8090

启动命令:

shell 复制代码
./demo.sh start

输出以下这段表示Apollo启动成功:

shell 复制代码
Windows new JAVA_HOME is: /d/Java/jdk1.8.0_311
==== starting service ====
Service logging file is ./service/apollo-service.log
Started [2881]
Waiting for config service startup
Config service started. You may visit http://localhost:8761 for service status now!
Waiting for admin service startup....
Admin service started
==== starting portal ====
Portal logging file is ./portal/apollo-portal.log
Started [2926]
Waiting for portal startup...
Portal started. You can visit http://localhost:8070 now!

访问:http://localhost:8070,这是Apollo的管理页面

账密:apollo / admin

这个安装包里面内置了Eureka,所以可以访问:http://localhost:8080,这是Eureka的服务

这时候到Eureka就能看到两个Apollo的服务已经被注册进来。

Apollo创建配置

进入apollo管理页面:http://localhost:8070

创建一个应用,保证AppId是唯一的:cloud-demo

其他的随意就好,Apollo会有一些示例样本数据供选择。

重启Apollo记得杀掉这几个端口占用:8080/8070/8090

shell 复制代码
# Windows命令
netstat -aon|findstr "8070"

taskkill /T /F /PID 34884

新增配置

点击这个按钮,Key为my.number,值随便填,提交

返回发布,发布才能生效。

整合到Spring Boot中

xml 复制代码
<dependency>
    <groupId>com.ctrip.framework.apollo</groupId>
    <artifactId>apollo-client</artifactId>
    <version>1.9.0</version>
</dependency>
yml 复制代码
server:
  port: 8888

spring:
  profiles:
    active: dev

app:
  id: cloud-demo
apollo:
  bootstrap:
    enabled: true
  meta: http://localhost:8080

写一个接口测试:

java 复制代码
@RestController
public class TestController {
    @Value("${my.number}")
    private String number;

    @GetMapping("/number")
    public String getNumber() {
        return number;
    }
}

启动服务,访问接口:http://localhost:8888/number

可以看到配置中心的值,现在修改一下,再次发布,就可以在不重启Spring Boot应用的前提下更新配置。

相关推荐
神奇小汤圆1 小时前
2026 Java岗面试题库(已收录GitHub),覆盖所有考点
后端
ArixBit1 小时前
用 Go 手撸 Agent 框架 #4:工具定义与契约——让 Agent 学会调用多工具
后端
枕星而眠1 小时前
【数据结构】红黑树入门指南
运维·数据结构·c++·后端
神奇小汤圆1 小时前
JDK 8 → 17 → 21 → 25:一次性讲清四代版本的关键跃迁
后端
2601_949817721 小时前
C++指针与引用深度精讲:底层原理、差异对比与高阶实战陷阱
java·jvm·c++
要阿尔卑斯吗1 小时前
无限深度章节树如何一遍建成?路径编码+单调栈
后端
大东_tom1 小时前
Python 与 PyTorch 工程实践——从脚本到训练框架
后端
Joose都有人用1 小时前
我把一个「九成正常、一成作恶」的风控难题做稳了,聊聊踩过的坑
后端
va学弟1 小时前
Java 网络通信编程(10):Channel 和 Selector
java·开发语言
小张小张爱学习2 小时前
Apache Dubbo 3 + Spring Boot 3 多模块 Maven 项目,演示基于 Zookeeper 注册中心的 RPC 调用
java·dubbo