1.Spring-boot之Eureka-Service集群搭建
Eureka是Spring Cloud提供的众多模块中的一个,它主要用于服务管理,对服务进行分布式和集群,Eureka提供了服务器端和客户端,服务端致力于服务列表的维护和后台管理,客户端分为提供者(provider)和消费者(consumer)。
每一个客户端将自己注册到服务器端之后,其余的客户端就能检索发现对应的服务,所以提供者和消费者是针对调用关系来说的,实际上每一个客户端都可以同时作为提供者和消费者。如图简易的集群结构所示,一个Eureka服务器端,两个Eureka客户端(两个作为提供者,一个作为消费者),来演示具体的调用过程。
2创建Eureka服务器端
使用https://start.spring.io/ 链接创建三个springCloud的maven工程,在Selected Dependencies选择需要的服务,至少包涵以下服务web,Eureka Server, Ribbon如图所示,把三个工程解压到同一个工作目录下,启动intellij idea把工作目录切换到该目录,然后给每个工程添加maven管理(具体步骤详见:intiallije idea中配置spring-boot并启动文档)。如图所示。
打开resource目录新建文件application.yml,在文件中进行服务配置,配置如下:
server:
port: 8810
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
其中port: 8810表示启动占用端口号,可以随意配置。
Hostname:localhost服务的名称,也可以随意配置
registerWithEureka 表示是否将自身注册到服务器,false表示不将自身注册,true将自身注册,这里不注册。
fetchRegistry :如果为true,启动时会报警。
完成了上面的配置和代码编写,就可以启动我们的eureka-server了,运行EurekaService的main()方法,访问http://localhost:8810,在浏览器看到我们的后台管理页面,Eureka服务器端就搭建完成了。
3创建Eureka客户端的提供者(Eureka-Provider)
同第2节类似,打开springCloud1.02工程中的application.java文件,修改文件名为EurekaProvider,其他不变。
创建provider案例:在同一个目录下创建ApplicationProviderController.java和user.java如图所示
在resource目录下配置application.yml
spring:
application:
name: eureka-provider
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8810/eureka/
其中defaultZone: http://localhost:8810/eureka/:表示向Eureka-server注册服务。
如图:
运行EurekaProvider的main()方法,启动成功后访问http://localhost:8080/search/1,这里没有配置端口,就默认使用了8080端口,在浏览器端可以看到控制器返回的数据。
刷新访问http://localhost:8810,可以看到我们的服务提供者已经注册到Eureka服务器了。
4创建Eureka客户端的消费者
同第三节一样,打开springCloud1.03工程中的application.java文件,修改文件名为EurekaConsumer,其他不变。
创建consumer消费者案例:在同一个目录下创建ApplicationConsumerController.java,住已配置负载均衡,RestTemplate是Spring框架里面提供的,它可以自动配置去使用Ribbon。要创建一个负载均衡的RestTemplate,使用创建RestTemplate的Bean组件(@Bean)并使用@LoadBalanced限定符。
在src/main/resources下创建application.yml,写明自己的服务名称和需要注册到那个Eureka服务器上,并配置属于自己的端口。
server:
port: 8811
spring:
application:
name: eureka-consumer
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8810/eureka/
运行EurekaConsumer的main()方法,启动成功后访问http://localhost:8811/consumer,在浏览器端,我们可以看见eureka-consumer成功调用了eureka-provider的方法。
再次访问http://localhost:8810,我们可以看到eureka-server控制台上维护着两个Eureka客户端
自此,集群配置成功。
完整代码地址:https://github.com/ZFCC/springCloud1.0.1
https://github.com/ZFCC/springCloud1.0.2
https://github.com/ZFCC/springCloud1.0.3
有关springCloud的更多更新内容,请移步:个人博客 https://zfcc.github.io/ (Spring Cloud 技术标签)