feign和dubbo的区别(openfeign和dubbo哪个性能好)

本篇文章给大家谈谈feign和dubbo的区别,以及openfeign和dubbo哪个性能好对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

dubbo和feign传输上下文信息

在两个进程传输的过程中,例如A进程向B进程传输数据,一般都需要传一些固定字段信息,这些信息一般是与业务无关,像调用链追踪,api网关等都需要传输此上下文信息。我们现在有两个应用,应用A是订单系统,应用B是用户中台系统,而且我们是toB的业务,用户是属于某个企业的,该企业的唯一标识为corpId,每个应用对应一个唯一的应用id,还有多个应用的调用链追踪侍笑需要传输traceId等,所以A调用B必须传输此几个字段,以下介绍dubbo和feign传输上下文的方法。

Dubbo(读音[ˈdʌbəʊ])是阿里巴巴公司开源的一个高性能优秀的服务框架毕谈宽使得应用可通过高性能的 RPC 实现服务的输手亮出和输入功能,可以和 Spring框架无缝集成。Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现,具体想研究dubbo可以参考dubbo文档,本文只介绍dubbo传输上下文的方法:

注:采用http协议传输上下文信息,会将上下文字段设置到header,但是头信息中不能含有中文,所以需要进行编码后传输,然后在接受端解码。

[img]

dubbo笔记

1,dubbo是什么

dubbo是阿里巴巴开源的,基于JAVA的 RPC (Remote Procedure Call)分布式服务框架。现已成为Apache基金孵化项目

2,为什么要使用dubbo

dubbo内部使用了Netty,zookeeper,保证了应用的高可用性和高性能。使用dubbo可以将核心业务抽取出来,最为独立的服务,并逐渐发展成稳定的服务中心。这样就可以复用灵活拓展,满足前端多变的市场需求,最重要的一点是,分布式架构能够承受更大规模的并发量

3、Dubbo 和 Spring Cloud 有什么区别?

两者没有关联,非要说区别。1,通信方式不同:dubbo使用的是RPC通信,Spring Cloud使用的是HTTP RESTFull方式。2,组成方式不同

4,Dubbo都支持哪些协议,推荐使用哪种

dubbo(推荐),http,webservice,rmi,redis

5,dubbo需要web容器吗?

不需要,如果硬要用web容器,只会增加复杂性,也浪费资源

6,dubbo内置了哪几种服务容器

spirng container , jetty container , log4j container。dubbo的服务容器只是一个简单的main方法,并加载一个简单的spring容器,用于暴露服务。

7,dubbo里面有哪几种节点角色

8、画一画服务注册与发现的流程图

9、Dubbo默认使用什么注册中心,还有别的选择吗?

推荐使用zookeeper,还有redis,multicast,simple注册中心,但不推荐

10、Dubbo有神丛悄哪几种配置方式?

1,spring(XML)配置方式   2,java api配置方式

11、Dubbo 核心的配置有哪些?

12、在 Provider 上可以郑高配置的 Consumer 端的属性有哪些?

1)timeout:方法超时

2)游渣retries:失败重试次数,默认尝试两次

3)loadbalance:负载均衡算法

4)actives:消费者端,最大并发调用次数

13、Dubbo启动时如果依赖的服务不可用会怎样?

Dubbo会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止spring初始化完成,默认check=“true”,可以通过设置check="false",关闭检查。(比如spring是懒加载的,或者设置成了循环依赖,必须有一方要先启动时)

14、Dubbo推荐使用什么序列化框架,你知道的还有哪些?

推荐使用hessian序列化框架。还有dubbo,FastJson,java自带的序列化框架

15、Dubbo默认使用的是什么通信框架,还有别的选择吗?

默认使用的是Netty框架

16、Dubbo有哪几种集群容错方案,默认是哪种?

failover cluster:失败自动切换,自动重试其他服务器。

failfast cluster:快速失败,立即报错,只调用一次

failsafe cluster:失败安全,出现异常直接忽略

forking cluster:并行调用多个服务器,只要一个成功,就返回

broadcast cluster:广播逐个调用所有提供者,任意一个报错就报错

17、Dubbo有哪几种负载均衡策略,默认是哪种?

Random loadbalance :随机

RandomRobin loadbalance:轮询

LeastActive loadbalance:最少活跃次数

ConsistentHash loadbalance:一致性hash

18、注册了多个同一样的服务,如果测试指定的某一个服务呢?

可以配置点对点直连,绕过注册中心,将以服务接口为单位,忽略注册中心的提供者列表,A接口配置点对点,不影响B接口从注册中心获取列表。如果是线上需求需要点对点,可在dubbo:reference中配置url指向提供者,将绕过注册中心,多个地址用分号隔开,配置如下:(1.0.6及以上版本支持):

dubbo:reference id="xxxService"interface="com.alibaba.xxx.XxxService"url="dubbo://localhost:20890"/

19、Dubbo支持服务多协议吗?

支持。dubbo支持不同的服务使用不同的协议,也支持同一个服务上同时支持多种协议。

20、当一个服务接口有多种实现时怎么做?

当一个接口有多种实现时,可以用group属性来分组,服务提供方和消费方都指定同一个group即可。

21、服务上线怎么兼容旧版本?

使用版本号(version)过渡,多个不同版本的服务注册到注册中心,版本号不同的服务间相互不引用,这个和group分组有点像。

22、Dubbo可以对结果进行缓存吗?

可以。dubbo提供了声明式缓存,用于加速热门数据的访问速度。减少用户加载缓存的工作量

23、Dubbo服务之间的调用是阻塞的吗?

默认是阻塞的。但支持异步调用,可以在方法没有返回值的时候使用。

24、Dubbo支持分布式事务吗?

目前暂时不支持,后续可能采用基于JTA/XA的规范实现

25、Dubbo telnet 命令能做什么?

通过telnet命令实现服务的治理。telnet localhost 8090

26、Dubbo支持服务降级吗?

dubbo2.2.0以上版本支持服务降级

27、Dubbo如何优雅停机?

dubbo是通过JDK自带的shutdownhook,来完成优雅停机的。如果使用kill 9 -pid等强制关闭指令,是不会执行优雅停机的,只有通过kill PID才会执行

28、服务提供者能实现失效踢出是什么原理?

基于zookeeper的临时节点

29、如何解决服务调用链过长的问题?

通过pinPoint和skywalking实现服务追踪

30、服务读写推荐的容错策略是怎样的?

读操作使用failover cluster。失败自动切换,默认重试两次其他服务器

写操作使用failfast cluster。快速失败,立即报错,只执行一次

31、Dubbo必须依赖的包有哪些?

dubbo必须依赖jdk,其他为可选

32、Dubbo的管理控制台能做什么?

路由规则,动态配置,服务降级,访问控制,权重调整,负载均衡等等功能

33、说说 Dubbo 服务暴露的过程。

dubbo在spring容器实例化bean之后,刷新容器最后一步发布ContextRefreshEvent事件,通知实现了ApplicationListener的service执行onApplicationEvent事件方法,在该方法中,dubbo就会调用ServiceBean的父类,ServiceConfig中的export方法,而该方法真正实现了服务的暴露(异步或者非异步)

34、Dubbo 停止维护了吗?

2014年停止维护,2017年重新开始维护,并进入了apache项目

35、Dubbo 和 Dubbox 有什么区别?

dubbox是dubbo停止维护之后,当当网根据dubbo做的一个拓展项目,如加了服务可以restful调用,更新了开源组件

36、你还了解别的分布式框架吗?

spring cloud 还有Facebook的twitter

37、Dubbo 能集成 Spring Boot 吗?

可以

38、在使用过程中都遇到了些什么问题?

dubbo的设计是针对高并发小数据量的应用,如果数据量规模过大,建议使用http或者rmi协议

39、你读过 Dubbo 的源码吗?

读过,巴拉巴拉

40、你觉得用 Dubbo 好还是 Spring Cloud 好?

扩展性的问题,没有好坏,只有适合不适合。不过我更倾向于dubbo,spring cloud组件更新太快,配置繁琐。

dubbo和spring cloud区别是什么?

dubbo和spring cloud区别是:

1、初始定位不同: SpringCloud定位为微服务架构下的一站式解决方案;Dubbo 是 SOA 时代的产物,它的关注点主要在于服务的调用和治理。

2、生态环境不同: SpringCloud依托于Spring平台,具备更加完善的生态体系;而Dubbo一开始只是做RPC远程调用,生态相对匮乏,现在逐渐丰富起来。

3、调用方式: SpringCloud是采用Http协议做远程调用,接口一般是Rest风格,比较灵活;Dubbo是采用Dubbo协议,接口一般是Java的Service接口,格式固定。虚者但调用时采用Netty的NIO方式,性能较好。

4、组件差异比较多,例如SpringCloud注册中心一般用Eureka,而Dubbo用的Zookeeper,SpringCloud生态丰富,差带薯功能完善,更像是品牌机,Dubbo则相对灵活,可定制性强,更像是组装机。

5、SpringCloud:Spring公司开源的微服务框架,SpirngCloud 定位为微服务架构下的一站式解决方案。

6、Dubbo:阿里巴巴行闹开源的RPC框架,Dubbo 是 SOA 时代的产物,它的关注点主要在于服务的调用,流量分发、流量监控和熔断。

两者的生态对比:

1、Spring Cloud 的功能很明显比 Dubbo 更加强大,涵盖面更广,而且作为 Spring 的旗舰项目,它也能够与 Spring Framework、Spring Boot、Spring Data、Spring Batch 等其他 Spring 项目完美融合,这些对于微服务而言是至关重要的。

2、使用 Dubbo 构建的微服务架构就像组装电脑,各环节选择自由度很高,但是最终结果很有可能因为一条内存质量不行就点不亮了,总是让人不怎么放心。

3、而 Spring Cloud 就像品牌机,在 Spring Source 的整合下,做了大量的兼容性测试,保证了机器拥有更高的稳定性,但是如果要在使用非原装组件外的东西,就需要对其基础原理有足够的了解。

Dubbo与SpringCloud的区别和优缺点

以上内容均为官方定义,截图如下:

从以上定义中我们不难看出,Apache Dubbo的目标是基于RPC调用为主,并扩展相应的功能。 而SpringCloud是致力于提供分布式服务的各种工具。可以这样讲,Apache Dubbo从概念上讲只相当于SpringCloud中的feign而已。

Apache Dubbo: 诞生于阿并源里巴巴的线上需求,主要是为了应对微服务场景下高并发的处理,所以Apache Dubbo的核心关注点就是解决微服务之间调用的性能。 并且将包括服务注册/发现、负载均衡等微服务的核心内容进行了集成。最后在核心调用流程稳定的情况下完成了包括本地存根、Mock、版本控制等诸多特性的集成。

SpringCloud: SpringCloud是Spring家族中在微服务领域的关键组成部分,延续了Spring一贯的风格:为大家提供好用的工具,可以屏蔽底层实现,一站式完成业务开发。包括后面的SpringCloud Netflix和SpringCloud Alibaba等都是基于此完成工具的开发。我们可以大概数一数SpringCloud的工具内容,Ribbon【负载均衡】、Feign【HTTP服务】、Hystrix【熔断降级】、Gateway【网关】等等,从其中我们不难发现,SpringCloud对于微服务的调用的性能并不太关心,它更关心的是处理微服务调用以外的内容,虽然他勉为其难的搞了一个Feign,但是我们都知道,HTTP的调用是非常耗时的,它与RPC的调用效率完全不可同日而语。

综上所述:Apache Dubbo的目标是为了高效调用服务。SpringCloud的目标是一条龙解决微服务的治理问题,那么出发点都不同,比较的意义又在哪里呢。

事实上,目前我接触和了解的互联网大厂的项目里,单纯的使用SpringCloud的非常少。虽然不全是选用Apache Dubbo, 还有包括Thrift、Zero等微服务框架,但是Apache Dubbo的市场占有率会相对比较高,也是很多大厂项目的首选。

但是Apache Dubbo的服务治理其实并不太好用,比如熔断降级、限流等,同时Apache Dubbo还有一个比较麻烦的问题, 就运雀是没有HTTP调用的逻辑,这一点对前后端分离的项目非常不友好。

基于以上内容,其实在实际项目中, Apache Dubbo和SpringCloud相结合才是目前比较主流的使旁蔽早用方式。服务之间的调用使用Apache Dubbo。熔断、网关、限流等使用SpringCloud。尤其是在拥有了SpringCloud Alibaba以后,SpringCloud与Apache Dubbo的结合更加紧密,这才是我个人建议的使用方式。

微服务框架 spring cloud 和 dubbo 有什么区别

dubbo由于是二进制的传输,占用带宽会少,springCloud是http协议传输,带宽会比较多,同时使用http协议一般会使用JSON报文,消耗会更大

dubbo的开发难度较大,原因是dubbo的jar包依赖问题很多大型工程无法解决

springcloud的接口协议约定比较自由且松散,需要有强枣芹灶有力的行政措施来首卜限制接口无序升级

dubbo的注册中凳扮心可以选择zk,redis等多种,springcloud的注册中心只能用eureka或者自研

关于feign和dubbo的区别和openfeign和dubbo哪个性能好的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表