概念就不赘述了。
工具: IDEA 2020
以下是第一部分,创建eureka server
- 打开IDEA,
新建项目--spring initializr
。
你可能会遇到找不到“spring initializr”的情况,经查阅和测试,在IDEA安装spring boot插件并启用即可。
3. 中间一步略,就是指定package名,项目名之类的,直到下图:
4. 显然地,如上图,勾选Eureka Server。(除此之外我什么都没勾选)。
5. 然后点击确定,静等各种包下载完成,启动项目。
6. 尤其注意,要在启动项的上方加上@EnableEurekaServer
注解。如下图:
7. 启动报错,是因为要添加必要的启动配置。如下:
- 然后亲测,启动成功。
以下是另一部分,eureka client
- 跟创建eureka server的步骤差不多,就是要选eureka client,如下图:
- 然后都一样,一路到底,静等包下载完成。
- 然后添加
@EnableEurekaClient
注解,如下图: - 老规矩,添加配置文件,如下:
- 然后启动,……………………然后启动失败。报错内容控制台没有什么有用的信息,基本只有一个
disconected form the JVM ...
和Completed shut down of DiscoveryClient
这样的寥寥数语。 - 输入上述内容经查,添加如下dependency即可。spirng eureka client启动时报错:Completed shut down of DiscoveryClient
- 然后启动正常。如下图:
- 知此,最简的eureka server 和eureka client都启动成功。
下面该尝试怎样使用了。
服务之间怎样互相调用
示例要做的就是这么一件简单的事,如下图:
- 刚刚已经有了server和一个client,我们就把这个client称为client1吧。(那么client1中就应该有一点可以被调用的东西,如一个RestFul的控制器,里面有些方法可以被调用的)
给client1添加一两个接口后,如图: - 使用postman可直接调用到。
- 然后建立一个同样的,注册到server的eureka client,称为 consumer吧。
其中consumer要调用client1,那么需要用到RestTemplate
如下图: - 注意上图中红框处必须有,否则调用时会提示
eureka java.net.UnknownHostException
,看似能搜到很多答案,却根本无法解决,气死人。
注意上图中绿框处可能因client1的server.servlet.context-path: /eurekaClient
不同而不同,不设置就不需要绿框中这部分。
然后经测试,server和两个client都启动后,client中的互相调用就可用了。
用postman直接调用consumer里的接口,然后consumer的代码里调用了client1的内容,并且得到了符合预期的内容。
即成功。
下面我会把所有代码都放上来。
怎样负载均衡
到了这一步,才发现这里原来才是最简单的。
把client1复制一份,以下就称为client2吧。
小改一下配置文件,启动。
如下图,只改这一处即可。
顺便想一下为什么service-provider
不改。然后把server、client1,client2,consumer都启动。
我们想要做的是让 consumer调用 (1,2)共同组成的服务,其中1和2实现负载均衡。
其中client1小改:
client2小改:
最后如下图:
然后postman就一直调用就完了。
成功。
最后,上代码。
最最后
本文认真观摩了某大佬的文章,受益颇深。
高仿操作了一遍,全部成功。
以此表示感谢。