扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
本篇内容主要讲解“SpringCloud中Eureka的使用方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringCloud中Eureka的使用方法”吧!
网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、小程序制作、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了环翠免费建站欢迎大家使用!
在前期准备的文章中也说过了Spring Cloud的5大组件,今天就来讲讲服务发现(注册)。无论是Spring Cloud H版还是最新的版本,Eureka都是作为服务发现和注册的常用组件。
构建一个eureka的父模块,具体怎么实现可以参考前篇文章。
在空项目里面构建2个模块
eureka的服务端,eureka的客户端,其中客户端在本例仅包括服务的生产者。
Eureka父模块的pom文件如下,为了方便直接引入了server和client
spring-cloud-learning com.cutey.none 1.0-SNAPSHOT 4.0.0 eureka pom eureka-server8001 eureka-client-provide7001 eureka-client-consume9001 9 8 org.springframework.cloud spring-cloud-starter-netflix-eureka-server org.springframework.cloud spring-cloud-starter-netflix-eureka-client
可以看到pom文件中指明了父模块,同时也继承了父模块的依赖。全部完成后,我的项目结构如下图所示:
项目的规约,不一定是和真正开发一样,但是为了方便记忆:
服务注册中心的端口为8xxx
生产端的端口为7xxx
消费端的端口为9xxx
在上一步的pom文件中就已经通过maven导入了Eureka Server的依赖。如果没有在父模块中导入,则需加入下面的代码:
org.springframework.cloud spring-cloud-starter-netflix-eureka-server
接下来要做的就是增加配置文件和启动类以及业务代码的编写。
配置文件
application.yml
server: port: 8001 eureka: instance: hostname: localhost client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
注意我这里的端口是8001,但是eureka默认的端口是8761,这个端口可以自行修改,所以问题不大。
还有一个需要注意的点是,defaultZone
是一定需要的,官方文档里面是说service-url
是以键值对的形式存储,所以必须要有key和value。
启动类
@SpringBootApplication @EnableEurekaServer public class EurekaServer8001 { public static void main(String[] args) { SpringApplication.run(EurekaServer8001.class, args); } }
主要是加了一个@EnableEurekaServer
的注解,由于是服务端的原因,在这种demo中就没有添加其它多余的业务类。
生产端可以说真正调用的地方,提供了业务代码。同样在父模块中已经引入了Eureka Client依赖,如果没有在父类中引用,那么需要添加以下代码:
org.springframework.cloud spring-cloud-starter-netflix-eureka-client
配置文件
server: port: 7001 spring: application: name: eureka-provide eureka: client: fetch-registry: true register-with-eureka: true service-url: defaultZone: http://localhost:8001/eureka/ instance: instance-id: eureka-provide7001
其实会发现配置文件大差不差,客户端的时候因为需要往服务端中注册,所以register-with-eureka
为true,并且后续可能去注册中心获取其它地址,fetch-registry
也为true。然后这个instance-id
是服务注册到Eureka的实例id,在后面创建集群的时候也会说到。
启动类和业务类
本例把启动类和业务类放在了一起,因为仅仅是入门的原因,所以基本上能简则简,官网上的demo也是这样的。
@SpringBootApplication @RestController @EnableEurekaClient public class EurekaProvide7001 { @Value("${server.port}") int port; @GetMapping("/eureka/provide") public String getInfo() { return "hello, eureka provide:" + port; } public static void main(String[] args) { SpringApplication.run(EurekaProvide7001.class, args); } }
首先在主启动类上添加了@EnableEurekaClient
的注解表明自己是Eureka Client
;其次添加@RestController
作为web项目的controller
,然后业务逻辑也比较简单,就不再赘述。
服务端和客户端已经有了,现在就可以开启服务来进行测试,先开启端口为8001的服务端,接着开启端口为7001的客户端。
先来看看客户端能否正常地访问业务http://localhost:7001/eureka/provide,肯定是可以的,就是正常的简单的Spring Boot项目
再来看看Eureka界面,访问http://localhost:8001/ ,可以发现服务已经被注册进Eureka
要声明一点,集群的作用是什么呢,在现阶段能想到的答案是两方面,一方面是做负载均衡;其次是防止服务挂掉。所以Eureka集群也可以分为两个方面,一个是服务端的集群,一个是客户端负责提供服务的集群。本小节重点讲的是后面的集群。
启动两个端口来模拟两台服务器,值得注意的是,虽然端口不一样,但是服务的名字都是一样的。在idea中只需要修改配置文件就能启动不同端口的实例。
注意,还记得上面配置文件中有一项instance-id
吗,为了演示,已经修改了上面的配置文件
在不指定id情况下eureka会自动为我们生成实例id,这时候只需要简单修改端口即可。
但是,如果上面的instance-id
已经指定过了(正如原本的配置文件),如果只修改端口会发现7002端口并没有注册进去
idea输出文件如下
这种情况下,只需要在上面配置的基础上再添加一个参数即可
重新启动7002端口,此时可以发现服务已经注册进Eureka中
本篇文章只讲了Eureka Client的生产端,还有消费端没讲。并不是忘记了,而是留着下一讲Ribbon的时候再讲解。
到此,相信大家对“SpringCloud中Eureka的使用方法”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流