SpringCloud 系列实战 | 第四篇: 服务消费者整合(Ribbon+RestTemplate)进行远程调用服务(SpringBoot)(2.X版本)

SpringCloud 系列实战 | 第四篇: 服务消费者整合(Ribbon+RestTemplate)进行远程调用服务(SpringBoot)(2.X版本)

一. 在上一篇文章基础上进行。在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的。Spring cloud有两种服务调用方式,一种是Ribbon+restTemplate,另一种是Feign。在这一篇文章项目先整合Ribbon+RestTemplate

1.1 Ribbon简介:
Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。
在这里插入图片描述
1.2 添加pom依赖

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

二、消费者项目整合Ribbon+RestTemplate
2.1 项目启动类 注入RestTemplate

package com.customer;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableEurekaClient
public class CustomerApplication {

    public static void main(String[] args) {
        SpringApplication.run(CustomerApplication.class, args);
    }
    
    @Bean
    @LoadBalanced
    RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

2.2 编写测试类

package com.customer.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class TestController {
    @Value("${server.port}")
    private String port;
    @Autowired
    private RestTemplate restTemplate;

    @GetMapping(value = "getTest")
    public String getTest(){
        String restTemplateString = restTemplate.getForObject("http://PROVIDER-SERVER/getTest", String.class);
        System.out.println("getTest-restTemplate消费者调用提供者返回数据:"+restTemplateString);
        return test;
    }
}

2.3 启动EureKa注册中心服务8900
2.4 启动2个提供者服务实例 8901 8903
2.5 IDEA启动2个服务实例操作步骤
如下图操作:
在这里插入图片描述在这里插入图片描述在这里插入图片描述2.6 启动消费者服务 8902
2.7 查看EureKa注册中心注册的服务 消费者1个实例 提供者2个实例
在这里插入图片描述
2.8 浏览器访问服务 http://localhost:8902/getTest
控制台打印输出8901 和8903 ,证明Ribbon负载均衡策略生效。

在这里插入图片描述
2.9 此时的架构
1.一个服务注册中心,EUREKA-SERVER端口为8900
2.PROVIDER-SERVER工程跑了两个实例,端口分别为8901,8903,分别向服务注册中心注册。
3.CUSTOMER-SERVER端口为8902,向服务注册中心注册 当CUSTOMER-SERVER通过restTemplate调用PROVIDER-SERVER的getTest接口时,因为用Ribbon进行了负载均衡,会轮流的调用PROVIDER-SERVER:8901和8903两个端口的getTest接口。

2.9.1 此时服务消费者整合(Ribbon+RestTemplate)就可以了,下一篇文章进行项目整合Feign

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值