- 搭建spring cloud 服务端
点击finish后,就进入到了项目了
如果什么都不做,直接启动项目,会报错,如图:
此时,在启动类上面一个注解:@EnableEurekaServer,来代表这个项目具有注册中心这个功能。如图:
接着再启动,发现虽然控制台还是会报Cannot execute request on any known server这个错误,但是我们已经可以访问到注册中心的页面了,如图:
如何解决Cannot execute request on any known server这个错误呢?在配置文件里面添加如下配置
虽然启动一开始还是会报错,这是因为这个项目本身既是server有时client,当server还没有启动好,client就去注册当然会报错。但是当server启动好了之后,client会通过心跳再次去注册,注册成功之后就不会报错了。在注册中心页面可以看到:
但是会让人感觉很奇怪,就是这个项目明明是eureka server,为啥自己还去注册中心注册个client。
所以感觉多次一举,我们再加个配置,让它不要去注册了。
由于很多java项目都是8080端口,所以我们可以自己给这个项目一个端口:
end:然后我们的eureka server就创建好了。
- 搭建spring cloud客户端
版本最好与server端的统一
然后开始写配置文件:
然后再启动类上面加注解,表明它是客户端:@EnableDiscoveryClient
然后就可以启动了
启动时出现问题:Completed shut down of DiscoveryClient
解决办法:在pom.xml中加上如下依赖就可以了
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
启动后,在注册中心可以看到这客户端的注册信息,如下图
end:然后我们的eureka client就创建好了。
- 搭建spring cloud 统一配置中心服务端
统一配置中心的架构思路:配置服务器从远端的git/svn等拉取配置文件,然后放在本地的git/svn等,再将配置转发给其他的server。
注:这个只能实现统一配置,但是保证配置改变后,其他服务要重启才能得到最新的配置。要实现改了配置不重启的话,需要引入消息队列来进行异步通知。
然后开始搭建配置服务器:
finish之后,版本最好统一
然后就开始配置:
启动类加上注解:
启动之后,可以在配置中心看到它,如图:
然后它现在其实啊,就是相当于一个client而已,要让它成为配置中心还需要加上注解:@EnableConfigServer
接着再启动,发现报错或者启动卡住了:原因是没有提供给它远程的仓库(git/svn等)
在git上新建一个项目跟配置文件
在配置文件中配置在git信息
启动之后,可以在浏览器中输入ip+端口+/config-a.ym,就可以看到我们在git上面的配置:(路径格式参照下下图)
从git拉取的配置文件会保存在本地,路径可以查看自己的日志输出:
这个路径也可以自定义:
在配置文件里面指定路径就可以了:
end:然后我们的spring cloud的配置中心服务端就创建好了。
- 搭建spring cloud配置中心客户端
在client项目的pom.xml添加配置中心服务端jar包依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
在git中新增文件(注意路径及文件命名)
配置文件:
验证1:
验证2:
注意事项:如果将server的端口改成其他的(默认是8761),那么上面的配置就会报错。
原因:因为client默认去找注册中心是8761端口。这个时候端口已经被改成其他的了,client就不知道注册中心在哪里,于是又去8888的端口找,发现也没有,于是就报错了。
解决办法:提前告诉client注册中心在哪里,就是注册中心的地址是写在项目的配置文件上面,而不是写在git上面。
如图:
end:然后我们的spring cloud的配置中心客服端就创建好了。