经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Spring » 查看文章
SpringCloud?eureka(server)微服务集群搭建过程
来源:jb51  时间:2022/7/4 12:09:40  对本文有异议

工作原理:

Spring Cloud框架下的服务发现Eureka包含两个组件

分别是: Eureka Server与Eureka Client
Eureka Server,也称为服务注册中心。各个服务启动后,会在Eureka Server中进行注册,这样Eureka Server的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
Eureka Client也称为服务(服务实例)。作为一个Java客户端,用于简化与Eureka Server的交互。Eureka Client内置一个 使用轮询负载算法的负载均衡器。服务启动后,Eureka Client将会向Eureka Server发送心跳更新服务,如果Eureka Server在多个心跳周期内没有接收到某个服务的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。

Eureka组件的工作原理和核心功能点

上面的图有三台 Eureka Server 组成的集群,每一台 Eureka Server服务在不同的地方。这样三台 Eureka Server 就组建成了一个高可用集群服务,只要三个服务有一个能一直正常运行,就不会影响整个架构的稳定性。

eureka 高可用集群

Eureka服务是一个单点服务,在生产环境就会出现单点故障,为了确保Eureka服务的高可用,我需要搭建Eureka服务的集群。搭建Eureka集群非常简单,只要启动多个Eureka Server服务并且让这些Server端之间彼此进行注册即可实现

 在我们实际的开发生产环境中,eureka 常常是以集群的方式提供服务的,目的就是要保证高可用性,同时它还保证了分区容错性。这也满足了一个健壮的分布式微服务所要求的 CAP 理论原则,即 eureka 保证了高可用性,分区容错性。

项目创建:

 项目搭建的主要步骤和配置就是创建项目和引入pom依赖。新建3个eureka注册中心

 @EnableEurekaServer:项目启动类上使用@EnableEurekaServer注解/项目就是SpringCloud的注册中心。

YML配置

配置3个eureka-server的application.yml

  1. server:
  2. port: 7001
  3. #Eureka
  4. eureka:
  5. instance:
  6. hostname: eureka7001.com #Eureka服务端实例名字
  7. client:
  8. register-with-eureka: false #表示是否向Eureka注册中心注册自己(服务器端不需要)
  9. fetch-registry: false #false表示自己就是注册中心
  10. service-url:
  11. defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/

Maven 依赖

  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.liy</groupId>
  6. <artifactId>eurekaserver-7001</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <name>eurekaserver-7001</name>
  9. <description>Demo project for Spring Boot</description>
  10. <properties>
  11. <java.version>1.8</java.version>
  12. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  13. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  14. <spring-boot.version>2.3.0.RELEASE</spring-boot.version>
  15. <spring-cloud.version>Hoxton.SR4</spring-cloud.version>
  16. </properties>
  17. <dependencies>
  18. <dependency>
  19. <groupId>org.springframework.boot</groupId>
  20. <artifactId>spring-boot-starter-web</artifactId>
  21. </dependency>
  22. <dependency>
  23. <groupId>org.springframework.cloud</groupId>
  24. <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  25. </dependency>
  26. <dependency>
  27. <groupId>org.springframework.boot</groupId>
  28. <artifactId>spring-boot-devtools</artifactId>
  29. <scope>runtime</scope>
  30. <optional>true</optional>
  31. </dependency>
  32. <dependency>
  33. <groupId>org.projectlombok</groupId>
  34. <artifactId>lombok</artifactId>
  35. <optional>true</optional>
  36. </dependency>
  37. <dependency>
  38. <groupId>org.springframework.boot</groupId>
  39. <artifactId>spring-boot-starter-test</artifactId>
  40. <scope>test</scope>
  41. <exclusions>
  42. <exclusion>
  43. <groupId>org.junit.vintage</groupId>
  44. <artifactId>junit-vintage-engine</artifactId>
  45. </exclusion>
  46. </exclusions>
  47. </dependency>
  48. <dependency>
  49. <groupId>com.liy</groupId>
  50. <artifactId>eurekaserver-7001</artifactId>
  51. <version>0.0.1-SNAPSHOT</version>
  52. <scope>test</scope>
  53. </dependency>
  54. </dependencies>
  55. <dependencyManagement>
  56. <dependencies>
  57. <dependency>
  58. <groupId>org.springframework.cloud</groupId>
  59. <artifactId>spring-cloud-dependencies</artifactId>
  60. <version>${spring-cloud.version}</version>
  61. <type>pom</type>
  62. <scope>import</scope>
  63. </dependency>
  64. <dependency>
  65. <groupId>org.springframework.boot</groupId>
  66. <artifactId>spring-boot-dependencies</artifactId>
  67. <version>${spring-boot.version}</version>
  68. <type>pom</type>
  69. <scope>import</scope>
  70. </dependency>
  71. </dependencies>
  72. </dependencyManagement>
  73. <build>
  74. <plugins>
  75. <plugin>
  76. <groupId>org.apache.maven.plugins</groupId>
  77. <artifactId>maven-compiler-plugin</artifactId>
  78. <configuration>
  79. <source>1.8</source>
  80. <target>1.8</target>
  81. <encoding>UTF-8</encoding>
  82. </configuration>
  83. </plugin>
  84. <plugin>
  85. <groupId>org.springframework.boot</groupId>
  86. <artifactId>spring-boot-maven-plugin</artifactId>
  87. </plugin>
  88. </plugins>
  89. </build>
  90. </project>

本地hosts文件修改

需要配置三个hostname、否则无法集群  

  1. C:\Windows\System32\drivers\etc\hosts 文件类增加
  2. 127.0.0.1 eureka7001.com
  3. 127.0.0.1 eureka7002.com
  4. 127.0.0.1 eureka7003.com
  5. 注册集群的三个端口分别为
  6. 7001/7002/7003

启动服务测试

启动三个eureka-server进行访问测试

 下面 这里表示这有2个注册中心的集群节点、当前的注册中心会从这两个节点进行同步服务、可以通过我们配置的hostname来进行识别。

 查看当前注册中心的集群节点。

到此这篇关于微服务SpringCloud-eureka(server)集群搭建的文章就介绍到这了,更多相关SpringCloud eureka集群搭建内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号