1)单一的eureka server端
打开IDEA编辑器,选择创建新项目,在创建项目面板上选择spring初始化方式,具体如下图所示
按下finish,一个spirngCloud Eureka服务端就已经成功了三分之一了。
对于springCloud项目的组件抓住使用诀窍:引入依赖,看情况加注解(一般加在启动类上),动配置文件(一般是新增一些配置,不配置走的是默认配置),在上面的傻瓜操作中已经完成引入依赖的操作
接下来对启动类加注解了,为了标志它为服务eureka的服务端,这里新增一个@EnableEurekaServer
然后开始修改配置文件了,这里由于个人习惯,就把.properties文件改为.yml格式
官方给出的推荐的配置文件,如下
这里我就取一个过来即可,如下图
在讲这个配置之前,官方文档给出一个这样的话
这时候,按下启动eurekaApplication的按钮,本地的eureka项目就可以跑起来了,可以访问线上eureka.ithhc.com,看跑起来的界面,这里提供本地的访问
可遗憾的是,跑起来的时候,虽然能正常启动,控制台出现的情况并不是我们想看到的
这是因为官方推荐的配置里,我们还有一个没配 fetchRegistry: false
这个配置的意思是是否要从eureka获取注册信息,把这个配上去,就基本不会有如上的错误了
这里稍微提一点,之所以加上如上两个配置,是因为eureka为了作为一款服务发现和注册的服务,哪怕我们给他开启了server端标记,它本身还是客户端,具体的我们深入源码瞄一下(浅尝即止)
于是我们便从配置文件入手去瞄一下
我们能看到这个这个属性配置居然是归属 EurekaClientConfigBean管理的,也就是eureka客户端配置属性管理的,这里我们大概心里有个数了,只要我们配置了eureka的配置,实际上是在改eureka的客户端的配置,也就是这个我们认为的服务端已然被当作了客户端管理了起来
那么属性应该是要完成自动装配的吧,我们在深入去看它的自动装配的类
在这个自动装配的类上,有着一个醒目的注解,这个注解我就不再点进去看,相信小伙伴看到这里,心里就有数了,这个注解的效果应该等同于在启动类上加上@EnableEurekaClient,也就是eureka默认开启了自己作为客户端的状态,所以作为客户端自然是要往服务端注册的,如果我们不在配置文件加上面那两个配置,它则会去请求eureka服务端发起注册。
这里也许小伙伴也许还有疑惑,@EnableEurekaClient和@EnableDiscoveryClient 是啥关系?可自行百度去,这种简单问题,我大致说一下,@EnableEurekaClient针对的仅仅是eureka,而@EnableDiscoveryClient不仅可以针对eureka,还可以是zookeeper、consul
这里针对java11的小伙伴,有几句话不得不说一下:
在JDK 11中删除了Eureka服务器所依赖的JAXB模块。如果您打算在运行Eureka服务器时使用JDK 11,则必须在POM或Gradle文件中包含这些依赖项,下面是官方的说明
最后我们把配置更改和官方推荐的配置启动,则访问8761端口,如图
至此,eureka——server端的探究暂告一段落,至于什么心跳机制如何实现,怎么去发现服务之类,大佬们请自行研究,再写下去,我估计得疯了,我只想好好搬砖O(∩_∩)O~
2)单一的eureka client端
我们从服务端的启动界面上看(http://localhost:8761/) 如下图
接下来,我们将新建一个名为client服务向该服务端注册
这里还是老规矩,把配置文件改成yml格式的,然后加上如下属性
接下来就按让我们启动一下看最后结果吧
这样单机版的eureka算是可以告一段落,在这里,小伙伴们注意到一点,怎么就注册上了eureka的服务端了,按照以往的做法,不是还得在启动类加上注解标记为他是客户端吗?我给各位截图看一下,启动类此时有没有加注解
我们来看一下官方这一块是如何解释的
如果你有观看一些springCloud的一些视频教程,他们往往都会跟你说在启动类上去加上@EnableDiscoveryClient或者@EnableEurekaClient,那么加上去其实也可以,也挺规范的,加不加都行,随你们
官方最后推荐让你往配置文件加上这个defaultZone的这个属性,这是因为在正式的生产环境中,这些eureka和你自己的业务应用程序往往不在一台机子上,那么你要往哪里的eureka注册,你得告诉这个应用程序,所以建议你加上,如果你不加,像我上面的例子,不加的话,默认走的就是http://localhost:8761/eureka/
如果不信,那就瞄一下源码给你瞧瞧
到这里你心里就有数了吧,有兴趣的小伙伴就再点击那个默认的url我这里就不再赘述了