Springcloud Eureka中注册中心、提供者、消费者等的介绍和使用

上次说完了SpringBoot,然后我们接下来说说Springcloud。

说到Springcloud,就不得不说说Eureka和Nacos两个,这两个都是注册中心,Eureka主要是充当服务的注册与发现。

另一个说的是Feign,而Feign是充当客户端调用,支持负载均衡。

要知道,Feign里面封装了ribbon,ribbon也是一个支持负载均衡的客户端。

先知道我要大致说的几个东西,先对它有个初步认识。

然后我弄个图,让大家看看。

下图为最开始的时候,我们会采用“直连”的方式来用项目A,直接请求项目B。

然后就变成了有服务中心的,如下图。

然后我们看一个多个项目直接的关系图,如下:

那我们再看看运用到服务中心的样子,如下:

这样的话,A调用B,B调用C都要通过注册中心,而不能直接调用。这样做的好处是什么呢?

要知道,上面的项目只是两三个相互之间的简单调用,但是如果项目超过20个30个呢,画一张图来描述几十个项目之间的相互调用关系全是线条,任何其中的一个项目改动,就会牵连好几个项目跟着重启,巨麻烦而且容易出错。

如果没注册中心的话,去调用一个远程的提供者或者说接口,我们肯定要写出它的IP和端口号,然后我们就会去写各种各样的ip地址和端口号,包括,一旦变动了,那程序里面的都要去变。

现在要是通过注册中心,再调用提供者这个远程接口,因为我们不再是直连的方式去访问。

通过服务中心来获取服务你不需要关注你调用的项目IP地址,由几台服务器组成,每次直接去服务中心获取可以使用的服务去调用就可以了。

这里要注意的是,Eureka这个注册中心,它可不是什么第三方jar包需要按照什么的,Eureka它本身就是一个SpringBoot,也就是说我们用的是一个项目来充当注册中心。

 

然后我们来弄一个看看,还是和上章一样,新建一个项目

然后我们建一个eueka-server,如下:

然后,我们看下边。按照正常来说,应该是如下:

但是!我们还要清楚一件事:能通过图形界面做的事儿,都能通过pom去改。

所以我会在这里说一下,我要是不选怎么改!

那我们需要在pom.xml里面引入“Spring-cloud-starter-eureka-server”,

第二件事儿,引入一行

<spring-cloud.version>Edgware.SR4</spring-cloud.version>

然后再引入

<dependencyManagement>

    <dependencies>

        <dependency>

            <groupId>org.springframework.cloud</groupId>

            <artifactId>spring-cloud-dependencies</artifactId>

            <version>${spring-cloud.version}</version>

            <type>pom</type>

            <scope>import</scope>

        </dependency>

    <dependencies>

<dependencyManagement>

当然,你也可以写成

<dependencyManagement>

    <dependencies>

        <dependency>

            <groupId>org.springframework.cloud</groupId>

            <artifactId>spring-cloud-dependencies</artifactId>

            <version>Edgware.SR4</version>

            <type>pom</type>

            <scope>import</scope>

        </dependency>

    <dependencies>

<dependencyManagement>

一个道理。这就完成了。

然后我们就能到引入的依赖里会出现如下:

最重要的是前两个,第三个~不是很重要啊~

然后,等这一步完成之后我们就可以打开项目,就能看到如下:

我们能看到,项目上还是SpringBootApplication,它本身就是SpringBoot项目,我们需要在@SpringBootApplication下加一个注解

@EnableEurekaServer

这个注解主要是起到启用,或者说是启动的意思。

关键还是要配application.properties这个文件,配置如下:

#这一行是给这个注册中心起的名字,保证唯一性即可
spring.application.name=spring-cloud-eureka

#eureka注册中心指明totomcat的端口号
server.port=8000

#表示是否将自己注册到Eureka Server,默认为true。
eureka.client.register-with-eureka=false

#表示是否从Eureka Server获取注册信息,默认为true
eureka.client.fetch-registry=false

#设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。默认是http://localhost:8761/eureka ;多个地址可使用 , 分隔。
#注:${server.port}对应的是server.port=8000里的“8000”端口号。
eureka.client.serviceUrl.deZaultZone=http://localhost:${server.port}/eureka/

#设置为false,关闭自我保护
eureka.server.enable-self-preservation=false

#清理间隔(单位毫秒,默认是60*1000)
eureka.server.eviction-interval-timer-in-ms=3000

呃,这里面最后两个是我自己搜来的,不加也行,主要是前几个

注册中心这一块儿暂时算完了

咱们就可以启动项目了,它这里面没有什么逻辑,它就是一个注册中心,就是pom里面的依赖,然后就是properties文件里面指明相关的信息。

直接在浏览器上输入

lolocallhost:8000

这就是eueka注册中心的控制台了(注意,这里的 Instances currently registered with Eureka 下还是空的)

这样完了以后还不行,我们现在做的配置只是顶多算是起了个名字,指明了端口号,地址这些东西,

那我们怎么把咱们的SpringBoot项目注册到注册中心上去?

那我们就需要把项目中其他的地方不变,先改application.properties文件

#唯一性的名字
spring.application.name=producer-api-provider
#指明tomcat的端口号
server.port=9000
#Eureks地址
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/

pom.xml还要添加点东西,有的就算了

<dependencies>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-eureka</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>
</dependencies>

然后还需要在项目的启动类中添加@EnableDiscoveryClient注解

@EnableDiscoveryClient

@EnableDiscoveryClient就是让它做为 zookeeper 这个注册中心的客户端找到 Eureka 的服务器进行注册。

启动工程后,就可以在注册中心的页面看到PRODUCER-API-PROVIDER服务,如下。

我们可以看一下,Application下写的PRODUCER-API-PROVIDER,就是我们项目给起的唯一性的名字。

而后面的Status下的 ZGC-20170328ORY 就是计算机的名字,然后是冒号,署名,冒号端口号。

就是这些了。

再加别的项目的时候我还是强调一下吧,其他的还是按照刚刚的步骤,但是还是要保证!!!端口号的唯一性!要不然会冲突。

其他的都一样。

看我的,我又复制了一份项目改了改,看看效果。

归到一类了,就是因为只是端口号不一样。

同一个提供者有两台电脑,或者两个应用对他进行提供,一个崩溃了,还有一个,最起码,,,我们在界面上看到的是这样,因为测试嘛~我没写太复杂... ....

提供者就说到这里,然后就是说消费者,就是我们的客户端。

客户端里面pom.xml引入的还是和一开始创建eureka项目(服务提供者)引入的一样。

在启动类中添加@EnableDiscoveryClient注解,做为zookeeper的客户端。

还有一个注解,@EnableFeignClients

@EnableDiscoveryClient :启用服务注册与发现 @EnableFeignClients:启用feign进行远程调用

Feign是一个声明式Web Service客户端。使用Feign能让编写Web Service客户端更加简单, 
它的使用方法是定义一个接口,然后在上面添加注解,同时也支持JAX-RS标准的注解。
Feign也支持可拔插式的编码器和解码器。
Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。
Feign可以与Eureka和Ribbon组合使用以支持负载均衡。

然后就是调用这一块儿了,管他叫啥,这个不是约定优于配置,我的这样了先。

然后内容如下:

然后就是配置文件里面和引入feign的东西

端口号不能重复!

在pom.xml里面引入

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-feign</artifactId>
</dependency>

接下来我们说说,我们刚刚弄的只是接口,怎么在客户端调用。

就可以了,启动看看,如下:

一个provider一个consumer,provider做了负载均衡(虽然就两台)

然后我们调用一下看看,这时我们可不是直接调提供者,而是去测消费者(consumer)

控制台也打印了,证明能走通。

那我们还可以这样试试,我们不是弄了两个提供者吗?

我们把其中一个提供者里面的值改了,如下:

然后我们看一下结果

它会出现两个结果,这证明了修改了的地方能起到效果,并且负载均衡起到作用了,因为他的结果时而不同,看的很明显了。

那我们把其中一个停了就会只展示一种一条结果,并且一直是这一种结果。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

槐序二十四

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值