返回顶部
首页 > 资讯 > 精选 >ribbon+rest怎么使用
  • 146
分享到

ribbon+rest怎么使用

2023-06-05 04:06:02 146人浏览 安东尼
摘要

本篇内容主要讲解“ribbon+rest怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ribbon+rest怎么使用”吧!在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯

本篇内容主要讲解“ribbon+rest怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ribbon+rest怎么使用”吧!

微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于Http restful的。spring cloud有两种服务调用方式,一种是ribbon+restTemplate,另一种是feign。

一、ribbon简介

Ribbon is a client side load balancer which gives you a lot of control

over the behaviour of HTTP and tcp clients. Feign already uses Ribbon,

so if you are using @FeignClient then this section also applies.

-----摘自官网

ribbon是一个负载均衡客户端,可以很好的控制htt和tcp的一些行为。Feign默认集成了ribbon。

ribbon 已经默认实现了这些配置bean:

IClientConfig ribbonClientConfig: DefaultClientConfigImpl

IRule ribbonRule: ZoneAvoidanceRule

IPing ribbonPing: NoOpPing

ServerList ribbonServerList: ConfigurationBasedServerList

ServerListFilter ribbonServerListFilter: ZonePreferenceServerListFilter

ILoadBalancer ribbonLoadBalancer: ZoneAwareLoadBalancer

二、准备工作

启动eureka-server 工程;启动service-hi工程,它的端口为8762;将service-hi

的配置文件的端口改为8763,并启动,了解SpringCloud架构可以加求求:三五三六二四七二五九,这时你会发现:

service-hi在eureka-server注册了2个实例,这就相当于一个小的集群

ribbon+rest怎么使用

三、建一个服务消费者
重新新建一个spring-boot工程,取名为:service-ribbon;
在它的pom.xml继承了父pom文件,并引入了以下依赖:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://Maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>com.forezp</groupId>    <artifactId>service-ribbon</artifactId>    <version>0.0.1-SNAPSHOT</version>    <packaging>jar</packaging>    <name>service-ribbon</name>    <description>Demo project for Spring Boot</description>    <parent>        <groupId>com.forezp</groupId>        <artifactId>sc-f-chapter2</artifactId>        <version>0.0.1-SNAPSHOT</version>    </parent>    <dependencies>        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-WEB</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>        </dependency>    </dependencies> </project>

在工程的配置文件指定服务的注册中心地址为http://localhost:8761/eureka/,程序名称为 service-ribbon,程序端口为8764。配置文件application.yml如下:

eureka:  client:    serviceUrl:      defaultZone: http://localhost:8761/eureka/server:  port: 8764spring:  application:    name: service-ribbon

在工程的启动类中,通过@EnableDiscoveryClient向服务中心注册;并且向程序的ioc注入一个bean: restTemplate;并通

过@LoadBalanced注解表明这个restRemplate开启负载均衡的功能。

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

写一个测试类HelloService,通过之前注入ioc容器的restTemplate来消费service-hi服务的“/hi”接口,在这里我们直接

用的程序名替代了具体的url地址,在ribbon中它会根据服务名来选择具体的服务实例,根据服务实例在请求的时候会用具

体的url替换掉服务名,代码如下:

@Servicepublic class HelloService {    @Autowired    RestTemplate restTemplate;    public String hiService(String name) {        return restTemplate.getForObject("http://SERVICE-HI/hi?name="+name,String.class);    }}

写一个controller,在controller中用调用HelloService 的方法,代码如下:

@RestControllerpublic class HelloControler {    @Autowired    HelloService helloService;    @GetMapping(value = "/hi")    public String hi(@RequestParam String name) {        return helloService.hiService( name );    }}

在浏览器上多次访问http://localhost:8764/hi?name=forezp,浏览器交替显示:

hi forezp,i am from port:8762
hi forezp,i am from port:8763

这说明当我们通过调用restTemplate.getForObject(“http://SERVICE-HI/hi?name=”+name,String.class)方法时,已经做了负载均衡,访问了不同的端口的服务实例。

四、此时的架构

ribbon+rest怎么使用

  • 一个服务注册中心,eureka server,端口为8761

  • service-hi工程跑了两个实例,端口分别为8762,8763,分别向服务注册中心注册

  • sercvice-ribbon端口为8764,向服务注册中心注册

  • 当sercvice-ribbon通过restTemplate调用service-hi的hi接口时,因为用ribbon进行了负载均衡,会轮流的调用service-hi:8762和8763 两个端口的hi接口.

到此,相信大家对“ribbon+rest怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: ribbon+rest怎么使用

本文链接: https://lsjlt.com/news/241234.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • ribbon+rest怎么使用
    本篇内容主要讲解“ribbon+rest怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ribbon+rest怎么使用”吧!在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯...
    99+
    2023-06-05
  • Spring Cloud中怎么使用Ribbon
    今天小编给大家分享一下Spring Cloud中怎么使用Ribbon的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 什么...
    99+
    2023-06-04
  • 怎么使用Resttemplate和Ribbon调用Eureka实现负载均衡
    本篇内容介绍了“怎么使用Resttemplate和Ribbon调用Eureka实现负载均衡”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1....
    99+
    2023-06-29
  • ES6中rest参数怎么用
    这篇文章将为大家详细讲解有关ES6中rest参数怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。rest参数用于获取参数的实参,用于代替argumentsrest参数...
    99+
    2024-04-02
  • 怎么应用WCF中的REST
    本篇内容主要讲解“怎么应用WCF中的REST”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么应用WCF中的REST”吧!新建WCF服务应用程序,名称为RestWCF,选择在新网站中承载.新建实...
    99+
    2023-06-17
  • 怎么分析Visual Studio Ribbon Bar
    怎么分析Visual Studio Ribbon Bar,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在向大家详细介绍Visual Studio Ribbon Bar之前,首先...
    99+
    2023-06-17
  • 使用 Spring 3 来创建 REST
    原文出处:http://www.ibm.com/developerworks/cn/web/wa-spring3webserv/index.html在 Java 中,您可以使用以下几种方法来创建 RESTful Web Service:使用...
    99+
    2023-01-31
    Spring REST
  • Spring Cloud Ribbon的使用原理解析
    目录一、概述1、Ribbon是什么2、Ribbon能干什么3、Ribbon现状4、未来替代方案5、架构说明二、RestTemplate 用法详解三、Ribbon核心组件IRule四、...
    99+
    2024-04-02
  • SpringCloud Ribbon负载均衡使用策略是什么
    这篇“SpringCloud Ribbon负载均衡使用策略是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Sp...
    99+
    2023-07-05
  • ribbon怎么设置负载均衡
    在Ribbon中,可以通过以下步骤来设置负载均衡:1. 添加Ribbon依赖:在项目的pom.xml文件中添加Ribbon的依赖,例...
    99+
    2023-09-01
    ribbon 负载均衡
  • SpringCloud中Ribbon和Feign组件如何使用
    SpringCloud中Ribbon和Feign组件如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、Ribbon简介1、基本概念Ribbon是一个客户...
    99+
    2023-06-02
  • 使用ASP.Net WebAPI构建REST服务
    目录一、创建WebAPI应用程序1、Web API 1版本2、Web API 2版本二、路由三、返回值1、返回void2、返回普通对象3、返回HttpResponseMessage4...
    99+
    2024-04-02
  • 如何使用 PHP 创建 REST API
    使用 php 创建 rest api 涉及以下步骤:安装 php 和 restful api 框架。创建 api 路由以处理 http 请求。定义控制器及其方法来处理路由请求。格式化 a...
    99+
    2024-05-01
    php rest api laravel
  • SpringCloud怎么实现Ribbon负载均衡
    这篇文章主要讲解了“SpringCloud怎么实现Ribbon负载均衡”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringCloud怎么实现Ribbon负载均衡”吧!Ribbon使用R...
    99+
    2023-06-30
  • Django REST Framework该怎么理解
    今天就跟大家聊聊有关Django REST Framework该怎么理解,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.Django REST framework框架介绍Djang...
    99+
    2023-06-02
  • Django REST framework 限流功能的使用
    目录正文开始 1. DRF 中的限流 2. 限流进阶配置 3. 限流思路分析 4. 源码分析 5. 其它注意事项 参考资料 正文开始 先说一个限流这个概念,最早接触这个概念是在前端...
    99+
    2024-04-02
  • 使用Rest如何对API进行处理
    这篇文章给大家介绍使用Rest如何对API进行处理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、项目目标动静分离的架构,即客户端和服务器端的分离,客户端可以是IOS、android或者静态的页面。需要服务器端提供w...
    99+
    2023-05-31
    rest api
  • 如何使用ASP.Net WebAPI构建REST服务
    这篇文章主要介绍了如何使用ASP.Net WebAPI构建REST服务的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用ASP.Net WebAPI构建REST服务文章都会有所收获,下面...
    99+
    2023-07-02
  • 如何使用Apache Camel表达REST服务
    今天小编给大家分享一下如何使用Apache Camel表达REST服务的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧...
    99+
    2023-07-02
  • Spring Boot 中如何使用 Python 的 REST API?
    Spring Boot 是一个非常流行的 Java Web 应用程序框架,而 Python 则是一种非常流行的脚本语言。在许多情况下,开发人员需要使用 Python 来处理一些任务。在这种情况下,我们可以使用 Python 的 REST A...
    99+
    2023-11-10
    spring linux api
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作