服务调用
rpc,dubbo,Feign,Ribbon
weixin_42073629
这个作者很懒,什么都没留下…
展开
-
Spring Boot Dubbo 入门
1. 概述在 2019.05.21 号,在经历了 1 年多的孵化,Dubbo 终于迎来了 Apache 毕业。在这期间,Dubbo 做了比较多的功能迭代,提供了 NodeJS、Python、Go 等语言的支持,也举办了多次社区活动,在网上的“骂声”也少了。艿艿:事实上,大多数成熟的开源项目,都是 KPI 驱动,又或者背后有商业化支撑。作为一个长期使用,并且坚持使用 Dubbo 的开发者,还是比较愉快的。可能,又经历了一次技术正确的选择。当然,更愉快的是,Spring Cloud Alibab原创 2020-08-05 23:47:10 · 866 阅读 · 0 评论 -
Spring Cloud Alibaba 服务调用 Dubbo 入门
1. 概述本文我们来学习Spring Cloud Alibaba提供的Spring Cloud Alibaba Dubbo组件,接入Dubbo实现服务调用。Dubbo Spring Cloud 基于 Dubbo Spring Boot 2.7.1 和 Spring Cloud 2.x 开发,无论开发人员是 Dubbo 用户还是 Spring Cloud 用户, 都能轻松地驾驭,并以接近“零”成本的代价使应用向上迁移。Dubbo Spring Cloud 致力于简化 Cloud Nati...原创 2020-08-05 22:44:54 · 862 阅读 · 0 评论 -
Spring Cloud Ribbon的饥饿加载(eager-load)模式
我们在使用Spring Cloud的Ribbon或Feign来实现服务调用的时候,如果我们的机器或网络环境等原因不是很好的话,有时候会发现这样一个问题:我们服务消费方调用服务提供方接口的时候,第一次请求经常会超时,而之后的调用就没有问题了。下面我们就来说说造成这个问题的原因,以及如何解决的方法。问题原因造成第一次服务调用出现失败的原因主要是Ribbon进行客户端负载均衡的Client并不是在服务启动的时候就初始化好的,而是在调用的时候才会去创建相应的Client,所以第一次调用的耗时不仅仅包含发.原创 2020-07-18 19:28:05 · 545 阅读 · 0 评论 -
Spring Cloud Ribbon配置请求重试
当我们使用Spring Cloud Ribbon实现客户端负载均衡的时候,通常都会利用@LoadBalanced来让RestTemplate具备客户端负载功能,从而实现面向服务名的接口访问,下面的例子,实现了对服务名为hello-service的/hello接口的调用。由于RestTemplate被@LoadBalanced修饰,所以它具备客户端负载均衡的能力,当请求真正发起的时候,url中的服务名会根据负载均衡策略从服务清单中挑选出一个实例来进行访问。@SpringCloudApplication原创 2020-07-18 19:25:11 · 495 阅读 · 0 评论 -
Spring Cloud Ribbon源码分析(三)
接着上一章Spring Cloud Ribbon源码分析(二),继续后面的讲解负载均衡策略通过上面的源码解读,我们已经对Ribbon实现的负载均衡器以及其中包含的服务实例过滤器、服务实例信息的存储对象、区域的信息快照等都有了深入的认识和理解,但是对于负载均衡器中的服务实例选择策略只是讲解了几个默认实现的内容,而对于IRule的其他实现还没有详细的解读,下面我们来看看在Ribbon中共提供了那些负载均衡的策略实现。如上图所示,我们可以看到在Ribbon中实现了非常多的选择策略,其中也包含了我们原创 2020-07-18 19:07:05 · 125 阅读 · 0 评论 -
Spring Cloud Ribbon源码分析(二)
在之前介绍使用Ribbon进行服务消费的时候,我们用到了RestTemplate,但是熟悉Spring的同学们是否产生过这样的疑问:RestTemplate不是Spring自己就有的吗?跟Ribbon的客户端负载均衡又有什么关系呢?下面在本文,我们来看RestTemplate和Ribbon是如何联系起来并实现客户端负载均衡的。首先,回顾一下之前的消费者示例:我们是如何实现客户端负载均衡的?仔细观察一下代码之前的代码,我们可以发现在消费者的例子中,可能就是这个注解@LoadBalanced是之前没有接触过原创 2020-07-18 18:39:26 · 165 阅读 · 0 评论 -
Spring Cloud Ribbon源码分析(一)
简介Spring cloud ribbon在spring cloud微服务体系中充当着负载均衡的角色。这个负载均衡指的是客户端的负载均衡。本文是ribbon源码分析系列的第一篇,主要内容如下:怎样使用spring cloud ribbon ribbon原理概览怎样使用Spring cloud ribbon我们知道ribbon是客户端负载均衡,也就是说在相同的服务集群中选择一个,然后进行访问,并从该服务获取到结果。这里面会引申出一个问题,就是相同服务集群的来源。ribbon有两种方式获取,第一原创 2020-07-18 18:53:56 · 146 阅读 · 0 评论 -
Spring Boot 声明式调用 Feign 入门
1. 概述写本文的主要目的是,分享在纯 Spring Boot环境下,如何使用 Feign 框架。基本所有的网上文章,都是通过Spring Cloud Netflix Feign进行 Feign 的使用,这样就引入了大量 Spring Cloud 的依赖。而我们的希望,可能仅仅只想使用https://github.com/OpenFeign/feign核心库。原因是,我们采用 Spring Boot + Dubbo 实现微服务架构,同时希望使用 Feign 作为 HTTP 客户端调用外部...原创 2020-07-07 01:39:42 · 599 阅读 · 0 评论 -
@FeignClient中的@RequestMapping也被SpringMVC加载的问题解决
问题描述在之前发布的《Feign的继承特性(伪RPC模式)》一文中,我们介绍了如果使用Feign的继承特性来完成服务的提供以及服务的消费,实现了类似RPC的编程模式。但是,仔细一些的读者可能已经发现一个问题:当我们将服务消费者运行起来的时候,定义在服务提供方的那些请求映射关系也被加载到了服务消费者中,这就会带来两个问题:由于服务消费者并不提供这些接口,对于开发者来说容易造成误解 由于加载了一些外部服务的接口定义,还存在与自身接口定义冲突的潜在风险问题分析那么这些外部请求接口定义是如何被加载到原创 2020-07-07 00:48:48 · 1479 阅读 · 1 评论 -
Feign的继承特性(伪RPC模式)
前面,我们已经学会如何使用Spring MVC的注解来绑定服务接口。我们几乎完全可以从服务提供方的Controller中依靠复制操作,来构建出相应的服务接口客户端,或是通过Swagger生成的API文档来编写出客户端,亦或是通过Swagger的代码生成器来生成客户端绑定。即便如此,有很多的方式来产生Feign的客户端程序,依然有很多开发者热衷于利用公共的依赖接口来连接服务提供者和服务消费者的方式。由此,Feign的继承特性就能很好的派上用处。下面,我们来详细看看如何使用Spring Cloud Feign的原创 2020-07-07 00:42:45 · 224 阅读 · 0 评论 -
探讨通过Feign配合Hystrix进行调用时异常的处理
前言此文所述处理方式为本人在实践过程中研究分析得出的一种解决方案。 本文不仅希望能为 SC 学习者提供一种如题问题的一种解决方案,并且希望通过本文引出各位 SC 的朋友对如题问题的共同探讨和最佳实践方案的分享。场景及痛点单个项目是通过 Jersey 来实现 restful 风格的架构 发生异常时异常信息总是提示没有回调方法,不能显示基础服务抛出的异常信息 暂时没有考虑发生异常之后进行回调返回特定内容 业务系统通过 feign 调用基础服务,基础服务是会根据请求抛出各种请求异常的(采用标准h原创 2020-07-07 00:30:48 · 1144 阅读 · 0 评论 -
Spring Cloud Feign Post 表单请求
问题在使用SpringCloud时,发现Feign不能发送POST表单请求注意:在SpringBoot/Cloud环境中,使用的FeignClient,在不做额外设置的情况下,只能使用MVC的注解,也就是@RequestMapping和@RequestBody或者@RequestParam。FeignClient 的 接口尝试以 POST表单发送请求的写法:@RequestMapping(value="/someThing/someMethod", method=RequestMethod原创 2020-07-06 23:53:10 · 2616 阅读 · 3 评论 -
Spring Cloud Feign 接口上传文件
最近在使用Spring Cloud封装的Feign,自己在项目中暴露的feign接口中有一个接口是上传文件的,使用了常规的@RequsetParam去获取,然后报错:The current request is not a multipart request然后以为是自己前端使用layui没有指定上传类型,修改以后依然无效。然后自己用http直接请求没有feign的服务接口是可以的,最后定位问题在feign接口上。发现,确实在目前版本的spring cloud feign不支持文件上传,需要添加原创 2020-07-06 23:47:41 · 230 阅读 · 0 评论 -
Spring Cloud 声明式调用 Feign 入门
1. 概述???? FeignFeign是由 Netflix 开源的声明式的 HTTP 客户端,目前已经捐献给OpenFeign社区。Feign makes writing java http clients easier通过使用定义简单的接口,并声明 Feign 提供的注解,来实现 HTTP 的调用。示例代码如下:import feign.Feign;import feign.Param;import feign.RequestLine;// 商品 APIinterfa原创 2020-07-05 17:53:01 · 496 阅读 · 0 评论