SpringCloud技术指南系列(一)服务注册发现之Eureka注册中心

不念不忘少年蓝@ 2021-11-16 21:06 403阅读 0赞

SpringCloud技术指南系列(一)服务注册发现之Eureka注册中心

SpringCloud所谓的服务注册与发现,流程大致是:

  • 将Springboot微服务客户端项目的地址等信息,通过网络发送到注册中心,由注册中心保存下来。
  • 另一个客户端B访问已经注册到注册中心的服务A,通过注册中心提供的域名解析方式,解析出服务A的地址等信息。
  • 如果提供服务A的客户端有多个,就按照某个策略(比如轮询、负载均衡等)选取一个地址返回。
  • 客户端B访问注册中心返回的地址,获取结果,这里注意,是B直接访问A,而不是注册中心转发,因此要保证B和A是互通的。

目前服务发现的解决方案有Eureka,Consul,Zookeeper等,这三个是SpringCloud官方支持的。

本篇先讲下Eureka的服务注册发现的注册中心,因为它的注册中心是需要自己搭建的。

代码可以在SpringBoot组件化构建https://www.pomit.cn/java/spring/springcloud.html中的EurekaRegistry组件中查看,并下载。

首发地址:

  品茗IT-同步发布

品茗IT提供在线支持:

  一键快速构建Spring项目工具

  一键快速构建SpringBoot项目工具

  一键快速构建SpringCloud项目工具

  一站式Springboot项目生成

  Mysql一键生成Mybatis注解Mapper

  Mysql一键生成SpringDataRest项目

如果大家正在寻找一个java的学习环境,或者在开发中遇到困难,可以加入我们的java学习圈,点击即可加入,共同学习,节约学习时间,减少很多在学习中遇到的难题。

一、引入依赖

需要引入spring-boot-starter-web和spring-cloud-starter-netflix-eureka-server。

依赖如下:

  1. <?xml version="1.0"?>
  2. <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  3. <modelVersion>4.0.0</modelVersion>
  4. <parent>
  5. <groupId>cn.pomit</groupId>
  6. <artifactId>springcloudwork</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. </parent>
  9. <artifactId>EurekaRegistry</artifactId>
  10. <name>EurekaRegistry</name>
  11. <url>http://maven.apache.org</url>
  12. <properties>
  13. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  14. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  15. <java.version>1.8</java.version>
  16. <maven-jar-plugin.version>2.6</maven-jar-plugin.version>
  17. </properties>
  18. <dependencies>
  19. <dependency>
  20. <groupId>org.springframework.boot</groupId>
  21. <artifactId>spring-boot-starter-web</artifactId>
  22. </dependency>
  23. <dependency>
  24. <groupId>org.springframework.cloud</groupId>
  25. <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  26. </dependency>
  27. </dependencies>
  28. </project>

父模块pom文件可以在https://www.pomit.cn/spring/SpringCloudWork/pom.xml获取。

二、配置eureka注册中心

这里使用yaml文件写配置,application.yml:

  1. server:
  2. port: 8888
  3. spring:
  4. application:
  5. name: eurekaRegistry
  6. eureka:
  7. instance:
  8. hostname: localhost
  9. prefer-ip-address: true
  10. client:
  11. registerWithEureka: false
  12. fetchRegistry: false
  13. serviceUrl:
  14. defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

这里面,包含了端口、应用名、注册信息、方式。

spring.application.name是标识了应用名,注册到eureka之后,显示的就是它。

eureka.instance.prefer-ip-address是使用ip地址,如果不写它,默认是域名,那样测试起来很麻烦。

eureka.client这个,是配置是否将本服务也注册为客户端,这里不作为客户端,尽量只作为纯净版的注册中心。

三、启动注册中心

3.1 启动类

使用@EnableEurekaServer注解启动类,则该项目将作为注册中心使用。

EurekaRegistryApplication :

  1. package cn.pomit.springbootwork.eurekaregistry;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
  5. @EnableEurekaServer
  6. @SpringBootApplication
  7. public class EurekaRegistryApplication {
  8. public static void main(String[] args) {
  9. SpringApplication.run(EurekaRegistryApplication.class, args);
  10. }
  11. }

3.2 Eureka的管理页面

浏览器中输入http://127.0.0.1:8888/,可以查看Eureka的管理页面,可以看到有哪些服务注册上来。

如图所示:

在这里插入图片描述

3.3 测试下应用的Http接口

EurekaRegistryRest :

  1. package cn.pomit.springbootwork.eurekaregistry.web;
  2. import org.springframework.web.bind.annotation.RequestMapping;
  3. import org.springframework.web.bind.annotation.RequestMethod;
  4. import org.springframework.web.bind.annotation.RestController;
  5. @RestController
  6. @RequestMapping("/eurekaRegistry")
  7. public class EurekaRegistryRest {
  8. @RequestMapping(value = "/test", method = { RequestMethod.GET })
  9. public String welCome() {
  10. return "Hello, Hello";
  11. }
  12. }

浏览器访问下test,如果接收到数据,应用正常启动。

快速构建项目

Spring组件化构建

SpringBoot组件化构建

SpringCloud服务化构建

喜欢这篇文章么,喜欢就加入我们一起讨论SpringBoot使用吧!
品茗IT交流群

发表评论

表情:
评论列表 (有 0 条评论,403人围观)

还没有评论,来说两句吧...

相关阅读