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
启动命令:
./demo.sh start
输出以下这段表示Apollo启动成功:
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
# Windows命令
netstat -aon|findstr "8070"
taskkill /T /F /PID 34884
新增配置
点击这个按钮,Key为my.number,值随便填,提交
返回发布,发布才能生效。
整合到Spring Boot中
com.ctrip.framework.apollo
apollo-client
1.9.0
server:
port: 8888
spring:
profiles:
active: dev
app:
id: cloud-demo
apollo:
bootstrap:
enabled: true
meta: http://localhost:8080
写一个接口测试:
@RestController
public class TestController {
@Value("${my.number}")
private String number;
@GetMapping("/number")
public String getNumber() {
return number;
}
}
启动服务,访问接口:http://localhost:8888/number
可以看到配置中心的值,现在修改一下,再次发布,就可以在不重启Spring Boot应用的前提下更新配置。