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

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


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

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

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

简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_第1张图片

简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_第2张图片
3. 中间一步略,就是指定package名,项目名之类的,直到下图:
简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_第3张图片
4. 显然地,如上图,勾选Eureka Server。(除此之外我什么都没勾选)。
5. 然后点击确定,静等各种包下载完成,启动项目。
6. 尤其注意,要在启动项的上方加上@EnableEurekaServer注解。如下图:
简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_第4张图片
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. 然后亲测,启动成功。
    简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_第5张图片

以下是另一部分,eureka client

  1. 跟创建eureka server的步骤差不多,就是要选eureka client,如下图:
    简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_第6张图片
  2. 然后都一样,一路到底,静等包下载完成。
  3. 然后添加@EnableEurekaClient注解,如下图:
    简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_第7张图片
  4. 老规矩,添加配置文件,如下:
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

   org.springframework.boot
   spring-boot-starter-web

  1. 然后启动正常。如下图:
    简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_第8张图片
    简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_第9张图片
    知此,最简的eureka server 和eureka client都启动成功。
    下面该尝试怎样使用了。

服务之间怎样互相调用

示例要做的就是这么一件简单的事,如下图:
简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_第10张图片

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

  2. 然后建立一个同样的,注册到server的eureka client,称为 consumer吧。
    其中consumer要调用client1,那么需要用到RestTemplate
    如下图:
    简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_第12张图片
    注意上图中红框处必须有,否则调用时会提示eureka java.net.UnknownHostException,看似能搜到很多答案,却根本无法解决,气死人。

简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_第13张图片
注意上图中绿框处可能因client1的server.servlet.context-path: /eurekaClient 不同而不同,不设置就不需要绿框中这部分。
简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_第14张图片
然后经测试,server和两个client都启动后,client中的互相调用就可用了。
用postman直接调用consumer里的接口,然后consumer的代码里调用了client1的内容,并且得到了符合预期的内容。
即成功。

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


怎样负载均衡

到了这一步,才发现这里原来才是最简单的。
把client1复制一份,以下就称为client2吧。
小改一下配置文件,启动。
如下图,只改这一处即可。
简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_第15张图片
顺便想一下为什么service-provider不改。

然后把server、client1,client2,consumer都启动。
我们想要做的是让 consumer调用 (1,2)共同组成的服务,其中1和2实现负载均衡。
其中client1小改:
简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_第16张图片
client2小改:
简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_第17张图片
最后如下图:
简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_第18张图片

然后postman就一直调用就完了。
简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_第19张图片
简单方式创建一个eureka server 和 eureka client项目,最终实现负载均衡_第20张图片

成功。


最后,上代码。

eureka-demo.zip


最最后

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

原文地址如下:
Spring Boot + Eureka 实现微服务负载均衡

以此表示感谢。

你可能感兴趣的:(运维,架构,技术方案,Spring,eureka,server,eureka,client,eureka,eureka示例,eureka负载均衡)