由我们之前学习的消息总线,我们知道实现配置的自动刷新,需要用到spring-cloud-config-server,还需要一个消息中间件来实现发布订阅的功能从而实现自动的刷新,这里是用了kafkazookeeper这两样。

所以,首先要准备好这两者的环境。

首先是安装jdk,然后安装zookeeper(我这里就建一个,不做集群),最后安装kafka,依次启动。

在zookeeper的学习和spring cloud组件的学习后安装这些不是问题。对于 kafka的后台启动:

默认端口为9092:

1
nohup ./kafka-server-start.sh ../config/server.properties 1>/dev/null  2>&1  &

对于zookeeper的启动:

1
2
3
./zkServer.sh start//启动,默认端口为2181

./zkServer.sh status//查看状态

zookeeper简单地修改一下配置文件中data文件夹即可。

image

ok,现在的环境已经准备好了,我全部部署在了腾讯云服务器上。下面我创建一个config server的工程,用来获取git的信息。所以先准备git文件:

image

至于里面的内容,比如我的用户服务,就是一个user-service-dev.properties文件(后面创建用户服务的时候,注册到eureka的名字就必须是user-service了,就是spring.application.name这个属性),里面我搞一个测试内容为:user.name=sunweiguo:

image

ok,下面新建一个module叫做mama-buy-server-config:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<parent>
<groupId>com.njupt.swg</groupId>
<artifactId>mama-buy</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>

<artifactId>mama-buy-config-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mama-buy-config-server</name>
<packaging>jar</packaging>
<description>配置中心</description>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!--config 读取配置-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<!--消息总线 发布订阅-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-kafka</artifactId>
</dependency>
<!--触发更新-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--注册-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
</dependencies>

增加注解,表示是eureka客户端和server config服务端:

1
2
3
4
5
6
7
8
@SpringBootApplication
@EnableConfigServer
@EnableDiscoveryClient
public class MamaBuyConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(MamaBuyConfigServerApplication.class, args);
}
}

最最重要的是配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
server:
port: 8001
spring:
application:
name: config-server
cloud:
config:
server:
git:
uri: https://github.com/sunweiguo/spring-cloud-config-center.git
username: sunweiguo
password: *********
# 对应的文件夹
search-paths: gateway-config,user-service-config,trade-service-config,stock-service-config,common-config,key-generator-config,scheduler-config
bus:
trace:
enabled: true
stream:
kafka:
binder:
brokers: 111.231.119.253:9092 #这里是测试,所以连到了腾讯云服务器上,注意要开放端口才行
zk-nodes: 111.231.119.253:2181
auto-create-topics: true
eureka:
client:
service-url:
defaultZone: http://111.231.119.253:8761/eureka #eureka已经被我以jar包形式部署上去了
management:
security:
enabled: false
instance:
ip-address: 111.231.119.253 # 告诉注册中心这个服务的公网ip,github可以真正访问到
prefer-ip-address: true

ok,启动程序,如果没有报错的话:

image

看看注册到eureka上成功没有:

image

那么,我可以访问到位于git上面的内容吗?

image

看到这个就大功告成啦!下面我将这个服务放到服务器上去:

首先是更改ip地址,改为本地访问即可,安全组就可以把暴露出来的端口删除了:

image

将其打包部署到服务器:

image