带有Netflix Ribbon的Spring Cloud Rest Client-基础知识

在较早的博客文章中,我介绍了Spring Cloud世界中REST客户端的各种选项。 所有选项围绕着基于Netflix OSS的名为Ribbon的组件,该组件处理与承载服务的不同实例之间的调用负载平衡,处理故障转移,超时等有关的方面。在此,我将介绍几种自定义基础Ribbon组件行为的方法。与Spring Cloud结合使用,并进行更全面的自定义。

创建一个休息客户

回顾一下,首先考虑需要调用简单服务的情况:

SampleServiceCall

使用Spring进行此调用的典型方法是注入RestTemplate并使用它通过以下方式进行此调用:

public class RestTemplateBasedPongClient implements PongClient {@Autowiredprivate RestTemplate restTemplate;@Overridepublic MessageAcknowledgement sendMessage(Message message) {String pongServiceUrl = "http://serviceurl/message";HttpEntity<Message> requestEntity = new HttpEntity<>(message);ResponseEntity<MessageAcknowledgement> response =  this.restTemplate.exchange(pongServiceUrl, HttpMethod.POST, requestEntity, MessageAcknowledgement.class, Maps.newHashMap());return response.getBody();}}

这里没有什么特别的。 但是,当使用Spring Cloud时,相同的代码会有所不同,现在RestTemplate内部使用Netflix OSS Ribbon库进行调用。 这很有帮助,因为典型的调用流程是首先找到运行该服务的实例,然后在这些实例之间对调用进行负载平衡并保持此状态。

带功能区的其他客户端

让我稍微谈一下功能区,功能区使用一种称为“命名客户端”的抽象来控制远程服务调用的行为–远程服务调用的名称,在Eureka上注册的服务,服务调用的超时,重试多少次这些是通过配置文件指定的,并且条目通常沿着这些行,请注意,此处的“命名客户端”是“ samplepong”,并且属性具有此前缀:

samplepong.ribbon.MaxAutoRetries=2
samplepong.ribbon.MaxAutoRetriesNextServer=2
samplepong.ribbon.OkToRetryOnAllOperations=true
samplepong.ribbon.ServerListRefreshInterval=2000
samplepong.ribbon.ConnectTimeout=5000
samplepong.ribbon.ReadTimeout=90000
samplepong.ribbon.EnableZoneAffinity=false
samplepong.ribbon.DeploymentContextBasedVipAddresses=sample-pong
samplepong.ribbon.NIWSServerListClassName=com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList

回到Spring Cloud,它通过Url主机名非常巧妙地支持“命名客户端”的概念,因此RestTemplate调用现在看起来像这样:

ResponseEntity<MessageAcknowledgement> response =  this.restTemplate.exchange("http://samplepong/message", HttpMethod.POST, requestEntity, MessageAcknowledgement.class, Maps.newHashMap());

URL中的“ samplepong”是“命名客户端”,可以通过使用此前缀指定属性来对基础功能区的行为进行任何自定义。 由于这是Spring Cloud应用程序,因此可以按照以下方式以yaml格式明确指定属性:

samplepong:ribbon:DeploymentContextBasedVipAddresses: sample-pongReadTimeout: 5000MaxAutoRetries: 2

结论

这涵盖了Spring Cloud如何抽象出基础Ribbon库以提供非常直观的外观以在Cloud环境中进行远程服务调用的基础知识。 在一些自定义项上,我已经浏览了一些细节,我将在较新的文章中介绍这些细节。

  • 这是我的github存储库 ,其中包含我在本文中使用的代码。

翻译自: https://www.javacodegeeks.com/2015/12/spring-cloud-rest-client-netflix-ribbon-basics.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355400.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html中给文章怎么设置行高,css如何设置行距?

在网页的布局中几大段文字挤在一起总归是不好看的&#xff0c;这时候我们就需要来设置行间距来让文字看起来不拥挤&#xff0c;也让整个页面看起来美观整洁&#xff0c;那么&#xff0c;行间距该如何设置呢&#xff1f;本篇文章就来给大家介绍一下css行间距的设置方法。首先我们…

初中数学知识点总结_初中物理 | 最全知识点总结

往期回顾初中物理 | 知识点总结一&#xff1a;机械运动初中物理 | 知识点总结二&#xff1a;声现象初中物理 | 知识点总结三&#xff1a;物态变化初中物理 | 知识点总结四&#xff1a;光现象初中物理 | 知识点总结五&#xff1a;透镜及其应用初中物理 | 知识点总结六&#xff1…

redis版本_全球首发|阿里云正式推出云数据库Redis6.0版本

Redis 6.0更多精彩详情2020年6月23日&#xff0c;阿里云正式推出云数据库Redis 6.0版本。Redis 6.0版本为Redis开源社区于5月2日发布的全新版本&#xff0c;包含多项重大功能更新和大幅度的性能提升。依托于阿里云强大的云服务与管控能力&#xff0c;以及团队的快速跟进&#x…

webclient无法获取html文件,C# WebClient获取网页源码的方法

效果如图完整代码如下using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;//引入以下命名空间using System.Net;using System.IO;using System.Threading;name…

AFNetworking到底做了什么?

http://www.cocoachina.com/ios/20161209/18277.html转载于:https://www.cnblogs.com/zxykit/p/7018411.html

基于javafx的五子棋_基于JavaFX的SimpleDateFormat演示程序

基于javafx的五子棋对于使用Java Date进行格式化的新手&#xff0c;甚至对于使用Java Date进行格式化的新手&#xff0c;对于有经验的Java开发人员来说&#xff0c;可能都会有些棘手&#xff0c;其中之一就是使用SimpleDateFormat指定日期/时间格式。 SimpleDateFormat的基于类…

监督分类空白处也被分类了_监督学习(2)|本质是分类的“逻辑回归”

引言机器学习&#xff0c;绕不开预测问题&#xff0c;预测绕不开回归和分类。本篇介绍最常用的二分类算法&#xff1a;逻辑回归(Logistics Regression)&#xff0c;当然随着算法的发展&#xff0c;它也可用于多分类问题。每一个算法都是许许多多数学家的努力铸就&#xff0c;理…

html网页制作图案,巧用CSS滤镜做图案文字-网页设计,HTML/CSS

请先看看以下演示中的图案文字。这可不是图片效果&#xff0c;而是用css滤镜中的chroma() 语句做成的文本文字&#xff0c;其中文本的内容和图案都可以自由设定。先介绍一下这个神奇的滤镜&#xff1a;chroma() 滤镜。语法&#xff1a; filter:chroma( color#cccccc) &#xff…

关于msbuild 编译.net 4.5新语法错误的解决方法

.net4.5以前msbuild 是在%windir%/Microsoft.NET/FrameworkXX/vXX目录下&#xff0c;如&#xff1a;C:\Windows\Microsoft.NET\Framework64\v4.0.30319,不过在使用4.5新语法后就无法编译通过&#xff0c;这时候就应该使用vs自带msbuild &#xff0c;路径如下C:\Program Files (…

JavaOne 2015 –又一年,又向前迈进了一步

JavaOne 2015旧金山于10月25日至29日举行。 我很自豪地说这是我第九个人参加JavaOne&#xff0c;第七个人是演讲者&#xff0c;第四个人是Oracle员工&#xff0c;第三个人是内容委员会的成员&#xff0c;第二个人是项目负责人。 我认为对于JavaOne来说&#xff0c;这是又一个美…

html div父集子集,抛砖引玉css系列---根据父元素包含的子元素个数,实现不同的样式...

工作时遇到这样一个问题:根据某元素所包含的子元素个数&#xff0c;分别设置不同的样式&#xff0c;这个用js可以解决&#xff0c;不过个人认为用css解决可能更简单一点。这也正好加深了我对css选择器的理解和运用。demo如下&#xff1a;效果图如下完整代码如下&#xff1a;css…

rnn按时间展开_双向RNN的理解

我们在学习某种神经网络模型时&#xff0c;一定要把如下几点理解透了&#xff0c;才算真正理解了这种神经网络。网络的架构&#xff1a;包含那些层&#xff0c;每层的输入和输出&#xff0c;有那些模型参数是待优化的前向传播算法损失函数的定义后向传播算法什么情况下认为是发…

【转】Mac本地生成SSH Key 的方法

1. 查看秘钥是否存在 打开终端查看是否已经存在SSH密钥&#xff1a;cd ~/.ssh 如果没有密钥则不会有此文件夹&#xff0c;有则备份删除, 也可以直接删除, 2.生成新的秘钥, 命令如下 $ssh-keygen -t rsa -C "youremailexample.com" 你需要把邮件地址换成你自己的邮…

职称考试取消英语和计算机,强烈建议取消所谓的英语职称和计算机考试

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼强烈要求取消职称计算机英语考试职称计算机英语考试坑苦了广大相关受害者&#xff0c;其实质是某个别部门单位敛财的冠冕堂皇的项目。那些政策制定者美其名曰是通过考试激励大家的继续学习&#xff0c;掌握其技能&#xff0c;那么没…

树莓派退出python的代码_Python实现树莓派WiFi断线自动重连的实例代码

实现 WiFi 断线自动重连。原理是用 Python 监测网络是否断线&#xff0c;如果断线则重启网络服务。1.Python 代码 autowifi.py&#xff0c;放在 /home/pi 目录下:#!/usr/bin/pythonimportos, timewhileTrue:if192 not in os.popen(ifconfig | grep 192).read():print\n****** w…

类型信息

1、java主要有两种方式在运行时识别对象和类的信息&#xff1a;RTTI和“反射”机制。 2、类加载器系统实际上可以包含一条类加载器链&#xff0c;但是只有一个原生态加载器&#xff0c;它是JVM实现的一部分。原生态加载器加载的是所谓的可信类&#xff0c;包括Java API&#xf…

primefaces_懒惰的JSF Primefaces数据表分页–第1部分

primefaces今天&#xff0c;我们将使用带有视图范围的托管bean的惰性列表进行JSF数据表分页。 这些单词/表达是什么意思&#xff1f; 如今&#xff0c;有几个JSF框架可为数据表提供现成的分页&#xff0c;列排序器和其他功能。 今天&#xff0c;我们将使用Primefaces数据表。 …

linux下python开发环境搭建_linux下python开发环境之二——安装Eclipse+PyDev

Eclipse是由java开发的&#xff0c;所以要想让Eclipse跑起来就得安装jdk&#xff0c;在命令行里输入javac就能查看本机是否已经安装好了jdk了。1、安装jdk先从oracle官网上下载jdk&#xff0c;放到/usr/local/src/文件中&#xff0c;由于找不到linux的下载连接&#xff0c;所以…

台式计算机如何连接vif,关于计算机二级( VIF ) 县城有高手吗? 急寻

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼自考《管理系统中计算机应用》上机实践考试样卷2007年08月09日 13:29(本卷考试时间60分钟)注意事项&#xff1a;1、在考核盘的根目录下有XS.DBF、CJ.DBF、STD.DBF、LOAN.DBF、DISREC.SCX、TTT.PRG、KSH.PRG和KSHF.SCX文件&#xff…

Eclipse新建java类的时候,自动创建注释

为形成个人的java代码风格,我们在项目组中进行开发的时候&#xff0c;可以对自己的代码进行一些格式上面的设置&#xff0c;具体如下&#xff1a; 方法一&#xff1a;Eclipse中设置在创建新类时自动生成注释 windows–>preference Java–>Code Style–>Code Templates…