SpringCloud实战二:Spring Cloud Eureka 服务发现与注册中心 Love The Way You Lie 2022-04-06 04:24 179阅读 0赞 Spring Cloud Eureka 它是通过封装 Netflix 开源的Eureka,一款基于 Rest 的服务发现与注册组件,包括 Eureka Server 和 Eureka Client,最新版本为2018年8月发布的1.9.4版本,最新的2.x版本已经不再开源,但是1.9版本已经够用了,不要太过担心 为什么需要服务注册中心?先看几张服务之间调用图 * 项目A写死项目B的IP和端口进行服务间调用 ![在这里插入图片描述][20181207224104278.png] * 如果项目B再以同样的方式访问项目C,当项目B的IP和端口放生变化时,整个调用就会失败 ![在这里插入图片描述][20181207224249402.png] * 当有了Eureka注册中心后,会是什么样子,请看简图 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3podXl1MTk5MTEwMTY1MjA_size_16_color_FFFFFF_t_70] 上图就是为什么会有注册中心的原因 除了Eureka外,还有Consul注册中心,Spring Cloud 也集成 Consul 有了上面的理论基础后,我们进行代码实践 ###### 通过IDEA创建Maven工程,删除src目录,再添加2个Module,分别是eureka-server 、eureka-client ###### ![在这里插入图片描述][20181207235706292.png] * eureka-server 的 pom.xml内容如下(为了篇幅,只显示主要部分,想看全部代码的可以[下载][Link 1]): <properties> <java.version>1.8</java.version> <spring-cloud.version>Finchley.SR2</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies> eureka-server的启动主类,添加一个 @EnableEurekaServer注解即可 @EnableEurekaServer @SpringBootApplication public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } } eureka-server的application.properties配置文件如下: server.port=10025 spring.application.name=eureka-service eureka.instance.hostname=localhost eureka.instance.prefer-ip-address=true eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}:${random.long(1,100)} eureka.client.registerWithEureka=false eureka.client.fetchRegistry=false eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/ -------------------- * eureka-client 的 pom.xml内容如下,其他和eureka-server相同: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> eureka-client的启动主类,添加一个 @EnableDiscoveryClient注解即可 @EnableDiscoveryClient @SpringBootApplication public class EurekaClientApplication { public static void main(String[] args) { SpringApplication.run(EurekaClientApplication.class, args); } } eureka-client的application.properties配置文件如下: server.port=9500 #服务的实例名,服务间的调用通过此名字调用 spring.application.name=eureka-client #填写eureka注册中心地址,把自己注册到注册中心去 eureka.client.serviceUrl.defaultZone=http://localhost:10025/eureka/ eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}:${random.long(1,100)} 好了,分别启动 eureka-server、eureka-client,然后访问 http://localhost:10025/,可以看到eureka-client服务实例已经注册到注册中心了,后面还有该实例的 IP与端口 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3podXl1MTk5MTEwMTY1MjA_size_16_color_FFFFFF_t_70 1] 一个简单的注册中心就搞定了,当然此时它还不能用于生产环境,后面演示注册中心高可用与[安全][Link 2] 源码已上传到码云,[https://gitee.com/zhuyu1991/spring-cloud/][https_gitee.com_zhuyu1991_spring-cloud] [20181207224104278.png]: /images/20220406/dc22024c10984d27b8cbecd42e92deb4.png [20181207224249402.png]: /images/20220406/f030049ac7ea4fb483437eafe3219d91.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3podXl1MTk5MTEwMTY1MjA_size_16_color_FFFFFF_t_70]: /images/20220406/b09b488c041b4971ac7d74d89bc1c5cd.png [20181207235706292.png]: /images/20220406/bfdab07819d242a6abbed777f1f0e713.png [Link 1]: https://gitee.com/zhuyu1991/spring-cloud [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3podXl1MTk5MTEwMTY1MjA_size_16_color_FFFFFF_t_70 1]: /images/20220406/64dc569aa45f4e0488406c0613dd41ff.png [Link 2]: https://blog.csdn.net/zhuyu19911016520/article/details/84895375 [https_gitee.com_zhuyu1991_spring-cloud]: https://gitee.com/zhuyu1991/spring-cloud/
还没有评论,来说两句吧...