简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡
  niESts94Ax2J 2023年11月02日 52 0


概念就不赘述了。
工具: IDEA 2020


以下是第一部分,创建eureka server

  1. 打开IDEA,​​新建项目--spring initializr​​。

你可能会遇到找不到“spring initializr”的情况,经查阅和测试,在IDEA安装spring boot插件并启用即可。

简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_eureka client


简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_eureka client_02


3. 中间一步略,就是指定package名,项目名之类的,直到下图:

简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_eureka_03


4. 显然地,如上图,勾选Eureka Server。(除此之外我什么都没勾选)。

5. 然后点击确定,静等各种包下载完成,启动项目。

6. 尤其注意,要在启动项的上方加上​​@EnableEurekaServer​​注解。如下图:

简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_eureka client_04


7. 启动报错,是因为要添加必要的启动配置。如下:

server:
port: 8081 #服务注册中心端口号
eureka:
instance:
hostname: 127.0.0.1 #服务注册中心IP地址
client:
registerWithEureka: false #是否向服务注册中心注册自己
fetchRegistry: false #是否检索服务
serviceUrl: #服务注册中心的配置内容,指定服务注册中心的位置
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  1. 然后亲测,启动成功。
  2. 简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_eureka server_05


以下是另一部分,eureka client

  1. 跟创建eureka server的步骤差不多,就是要选eureka client,如下图:
  2. 简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_eureka client_06

  3. 然后都一样,一路到底,静等包下载完成。
  4. 然后添加​​@EnableEurekaClient​​注解,如下图:
  5. 简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_eureka client_07

  6. 老规矩,添加配置文件,如下:
eureka:
client:
serviceUrl: #注册中心的注册地址
defaultZone: http://127.0.0.1:8081/eureka/
server:
port: 8082 #服务端口号
spring:
application:
name: service-provider #服务名称--调用的时候根据名称来调用该服务的方法
  1. 然后启动,……………………然后启动失败。报错内容控制台没有什么有用的信息,基本只有一个​​disconected form the JVM ...​​​ 和​​Completed shut down of DiscoveryClient​​ 这样的寥寥数语。
  2. 输入上述内容经查,添加如下dependency即可。​​spirng eureka client启动时报错:Completed shut down of DiscoveryClient​
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
  1. 然后启动正常。如下图:
  2. 简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_eureka示例_08


  3. 简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_eureka负载均衡_09

  4. 知此,最简的eureka server 和eureka client都启动成功。
    下面该尝试怎样使用了。

服务之间怎样互相调用

示例要做的就是这么一件简单的事,如下图:

简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_eureka_10

  1. 刚刚已经有了server和一个client,我们就把这个client称为client1吧。(那么client1中就应该有一点可以被调用的东西,如一个RestFul的控制器,里面有些方法可以被调用的)
    给client1添加一两个接口后,如图:
  2. 简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_eureka_11

  3. 使用postman可直接调用到。
  4. 然后建立一个同样的,注册到server的eureka client,称为 consumer吧。
    其中consumer要调用client1,那么需要用到​​RestTemplate​​ 如下图:
  5. 简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_eureka_12

  6. 注意上图中红框处必须有,否则调用时会提示​​eureka java.net.UnknownHostException​​,看似能搜到很多答案,却根本无法解决,气死人。

简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_eureka_13


注意上图中绿框处可能因client1的​​server.servlet.context-path: /eurekaClient​​ 不同而不同,不设置就不需要绿框中这部分。

简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_eureka server_14


然后经测试,server和两个client都启动后,client中的互相调用就可用了。

用postman直接调用consumer里的接口,然后consumer的代码里调用了client1的内容,并且得到了符合预期的内容。

即成功。

下面我会把所有代码都放上来。


怎样负载均衡

到了这一步,才发现这里原来才是最简单的。

把client1复制一份,以下就称为client2吧。

小改一下配置文件,启动。

如下图,只改这一处即可。

简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_eureka server_15


顺便想一下为什么​​service-provider​​不改。然后把server、client1,client2,consumer都启动。

我们想要做的是让 consumer调用 (1,2)共同组成的服务,其中1和2实现负载均衡。

其中client1小改:

简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_eureka负载均衡_16


client2小改:

简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_eureka client_17


最后如下图:

简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_eureka client_18

然后postman就一直调用就完了。

简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_eureka client_19


简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_eureka示例_20

成功。


最后,上代码。

​eureka-demo.zip​


最最后

本文认真观摩了某大佬的文章,受益颇深。
高仿操作了一遍,全部成功。

以此表示感谢。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

niESts94Ax2J