Spring Cloud 学习之旅 --- 服务的消费

本文部分摘录自翟永超的个人博客


自从上篇博文到近期,工作较为繁忙,一直没时间更新博文。

Spring Cloud 学习之旅 — 服务注册与发现(二) 我们介绍了创建一个服务提供者到注册中心中,这一节我们讲讲如何使用消费者调用注册到注册中心的服务提供者提供的服务。


创建“服务消费者”

我们新建一个Maven工程,并在 pom.xml 中引入需要的依赖内容

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>1.4.3.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Camden.SR4</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-ribbon</artifactId>
    </dependency>
</dependencies>

在此例子中,我们采用spring cloud的ribbon组件作为我们的负载均衡器和服务的调用。

src\main\java 下创建自己的包,并创建一个 ConsumerApplication 类,用作整个 Spring Boot 应用程序的入口。紧接着继续创建一个 ConsumerController 类,用于暴露Rest接口供外部访问。效果如下图:

由于我们也需要将消费者注册到注册中心中,所以我们需要允许应用被外部发现,给 ConsumerApplication 类添加上 @EnableDiscoveryClient@SpringBootApplication 注解。

作为消费者,由于服务提供者往往是多实例的,我们需要开启客户端的负载均衡配置。Ribbon组件为我们提供了 RestTemplate 类和 @LoadBalanced 注解。其中 RestTemplate 类是我们调用服务的核心。使用 @LoadBalanced 注解后,应用将同时具有客户端的负载均衡能力。

紧接着要启动这个 SpringBoot 应用,给 main 函数添加上启动代码。效果如图 :


编写消费者

我们通过 Ribbon组件的 RestTemplate 对象可以调用在同个注册中心注册的服务。

我们创建一个 /consumer 对外接口,并在该接口中实现对上节的 simple-service 进行调用。效果如图:

我们在完成了服务消费的实现之后,再继续对 application.properties(本文中采用的是yml的配置文件) 做一些配置工作,具体如下:

注:注册中心使用的是集群配置的eureka注册中心,后面会有额外一篇博文讲到

启动

按顺序启动注册中心和服务提供者后,我们运行本项目。

启动完成后进入到eureka注册中心的界面,查看消费者的注册情况。

由图可以看出,当消费者注册成功后,我们可以看到这个应用已经注册到了eureka注册中心中。

我们访问刚刚写的对外接口 /consumer ,得到的结果如图:
这里写图片描述

至此说明访问成功,也说明我们调用服务提供者的服务调用成功了。


回忆负载均衡

还记得我们刚才说到的 @LoadBalanced 注解吗?我们好像没有看到什么效果可以证明我们已经使用到了负载均衡哦。

其实很好验证,这也是为什么我在上面的注册中心截图中,启动了两个服务提供者实例的原因。

我们不需要关闭消费者,此时关掉一个服务提供者,刷新界面就可以看到结果。

这里写图片描述

这里写图片描述

当关闭其中一个服务提供者后,不断地刷新将会看到上述两图轮流出现,也印证了我们的负载均衡器是生效的,并且采用的是轮询的机制在进行负载均衡。


那么,看完这篇博文的你,赶紧动手试一试吧^_^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值