Spring Cloud服务注册与发现

╰半夏微凉° 2021-06-22 15:36 584阅读 0赞

Spring Cloud服务注册与发现,需要使用到Eureka组件。
1.创建maven主工程
创建maven主工程springcloud-demo,在pom文件中引入相关依赖,Spring Boot版本为2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE,此pom文件作为整个项目的父pom文件,具有依赖版本控制的作用,其他module工程继承此pom。pom文件代码如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.wunian.springcloud</groupId>
  6. <artifactId>springcloud-demo</artifactId>
  7. <version>1.0-SNAPSHOT</version>
  8. <packaging>pom</packaging>
  9. <name>springcloud-demo Maven Webapp</name>
  10. <parent>
  11. <groupId>org.springframework.boot</groupId>
  12. <artifactId>spring-boot-starter-parent</artifactId>
  13. <version>2.0.3.RELEASE</version>
  14. <!--设定一个空值将始终从仓库中获取,不从本地路径获取-->
  15. <relativePath/>
  16. </parent>
  17. <modules>
  18. <module>eureka-server</module>
  19. <module>service-hi</module>
  20. </modules>
  21. <properties>
  22. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  23. <maven.compiler.source>1.8</maven.compiler.source>
  24. <maven.compiler.target>1.8</maven.compiler.target>
  25. <spring-cloud.version>Finchley.RELEASE</spring-cloud.version><!--SpringCloud版本-->
  26. </properties>
  27. <dependencies>
  28. <dependency>
  29. <groupId>junit</groupId>
  30. <artifactId>junit</artifactId>
  31. <version>4.11</version>
  32. <scope>test</scope>
  33. </dependency>
  34. <dependency>
  35. <groupId>org.springframework.boot</groupId>
  36. <artifactId>spring-boot-starter-test</artifactId>
  37. <scope>test</scope>
  38. </dependency>
  39. </dependencies>
  40. <dependencyManagement>
  41. <dependencies>
  42. <!--SpringCloud的父依赖-->
  43. <dependency>
  44. <groupId>org.springframework.cloud</groupId>
  45. <artifactId>spring-cloud-dependencies</artifactId>
  46. <version>${spring-cloud.version}</version>
  47. <type>pom</type>
  48. <scope>import</scope>
  49. </dependency>
  50. </dependencies>
  51. </dependencyManagement>
  52. <build>
  53. <pluginManagement>
  54. <plugins>
  55. <plugin>
  56. <groupId>org.springframework.boot</groupId>
  57. <artifactId>spring-boot-maven-plugin</artifactId>
  58. </plugin>
  59. </plugins>
  60. </pluginManagement>
  61. </build>
  62. </project>

2.创建两个module工程
一个module工程作为Eureka Server,另一个作为Eureka Client,在Intellij IDEA中分别创建SpringBoot工程分别为eureka-serverservice-hi
Eureka Server中需要引入spring-cloud-starter-netflix-eureka-server依赖,pom文件代码如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.wunian.server</groupId>
  6. <artifactId>eureka-server</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <packaging>jar</packaging>
  9. <name>eureka-server</name>
  10. <description>Demo project for Spring Boot</description>
  11. <parent>
  12. <groupId>com.wunian.springcloud</groupId>
  13. <artifactId>springcloud-demo</artifactId>
  14. <version>1.0-SNAPSHOT</version>
  15. </parent>
  16. <dependencies>
  17. <!--Spring Cloud eureka-server依赖-->
  18. <dependency>
  19. <groupId>org.springframework.cloud</groupId>
  20. <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  21. </dependency>
  22. </dependencies>
  23. </project>

Eureka Client中需要引入spring-cloud-starter-netflix-eureka-client依赖,pom文件代码如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>com.wunian.springcloud</groupId>
  7. <artifactId>springcloud-demo</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. </parent>
  10. <groupId>com.wunian.client</groupId>
  11. <artifactId>service-hi</artifactId>
  12. <version>0.0.1-SNAPSHOT</version>
  13. <name>service-hi</name>
  14. <description>Demo project for Spring Boot</description>
  15. <properties>
  16. <java.version>1.8</java.version>
  17. </properties>
  18. <dependencies>
  19. <!--spring web依赖-->
  20. <dependency>
  21. <groupId>org.springframework.boot</groupId>
  22. <artifactId>spring-boot-starter-web</artifactId>
  23. </dependency>
  24. <!--SpringCloud eureka-client依赖-->
  25. <dependency>
  26. <groupId>org.springframework.cloud</groupId>
  27. <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  28. </dependency>
  29. </dependencies>
  30. <build>
  31. <plugins>
  32. <plugin>
  33. <groupId>org.springframework.boot</groupId>
  34. <artifactId>spring-boot-maven-plugin</artifactId>
  35. </plugin>
  36. </plugins>
  37. </build>
  38. </project>

3.启动服务注册中心
在Spring Boot工程eureka-server的启动类上添加@EnableEurekaServer注解即可,代码如下:

  1. @SpringBootApplication
  2. @EnableEurekaServer//启用服务注册中心
  3. public class EurekaServerApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(EurekaServerApplication.class, args);
  6. }
  7. }

4.配置Eureka Server
在默认情况下Eureka Server也是一个Eureka Client ,因此必须指定一个 Server。eureka-server的配置文件appication.yml如下:

  1. server:
  2. port: 8081
  3. eureka:
  4. instance:
  5. hostname: localhost
  6. client:
  7. #通过eureka.client.registerWithEureka:false和fetchRegistry:false来表明自己是一个eureka server
  8. register-with-eureka: false
  9. fetch-registry: false
  10. service-url:
  11. defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #eurekaclient中注册的地址需配置成此
  12. spring:
  13. application:
  14. name: eureka-server #服务与服务之间相互调用一般都是根据这个name

配置完成后,启动工程打开浏览器,访问:http://localhost:8081,可以看到eureka server的可视化界面。
5.启动Eureka Client
service-hi的启动类上,通过@EnableEurekaClient注解表明自己是一个Eureka Client,代码如下:

  1. @SpringBootApplication
  2. @EnableEurekaClient //表明自己是一个eurekaclient
  3. @RestController //@Controller和@ResponseBody注解的组合
  4. public class ServiceHiApplication {
  5. public static void main(String[] args) {
  6. SpringApplication.run(ServiceHiApplication.class, args);
  7. }
  8. @Value("${server.port}")
  9. String port;
  10. //http://localhost:8082/hi?name=jack
  11. @RequestMapping("/hi")
  12. public String home(@RequestParam(value = "name",defaultValue = "wunian")String name){
  13. return "Hello "+name+",I am from port:"+port;
  14. }
  15. }

6.配置Eureka Client
仅凭@EnableEurekaClient注解还不够,还需在配置文件中配置自己的服务注册中心的地址,application.yml文件如下:

  1. server:
  2. port: 8082
  3. spring:
  4. application:
  5. name: service-hi #服务与服务之间相互调用一般都是根据这个name
  6. eureka:
  7. client:
  8. service-url:
  9. defaultZone: http://localhost:8081/eureka/ #注册地址与eureka-server中配置的要一致

启动工程,在浏览器中访问:http://localhost:8081,可以发现已经有一个名叫`SERVICE-HI`,端口为8082的服务已经注册进服务中了,此时在浏览器中访问:http://localhost:8082/hi?name=wunian,可以在浏览器中看到如下信息:

Hello wunian,I am from port:8082

发表评论

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

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

相关阅读