关于java:面试官谈谈-Spring-Cloud-与-Dubbo-有什么区别

39次阅读

共计 3617 个字符,预计需要花费 10 分钟才能阅读完成。

作者:IsToRestart \
blog.csdn.net/weixin_51291483/article/details/109212137

1、SpringCloud 与 Dubbo 的区别

两者都是当初支流的微服务框架,但却存在不少差别:

  • 初始定位不同: SpringCloud 定位为微服务架构下的一站式解决方案;Dubbo 是 SOA 时代的产物,它的关注点次要在于服务的调用和治理
  • 生态环境不同: SpringCloud 依靠于 Spring 平台,具备更加欠缺的生态体系;而 Dubbo 一开始只是做 RPC 近程调用,生态绝对匮乏,当初逐步丰盛起来。
  • 调用形式: SpringCloud 是采纳 Http 协定做近程调用,接口个别是 Rest 格调,比拟灵便;Dubbo 是采纳 Dubbo 协定,接口个别是 Java 的 Service 接口,格局固定。但调用时采纳 Netty 的 NIO 形式,性能较好。
  • 组件差别比拟多,例如 SpringCloud 注册核心个别用 Eureka,而 Dubbo 用的是 Zookeeper

SpringCloud 生态丰盛,功能完善,更像是品牌机,Dubbo 则绝对灵便,可定制性强,更像是组装机。

  • SpringCloud:Spring 公司开源的微服务框架,SpirngCloud 定位为微服务架构下的一站式解决方案。
  • Dubbo: 阿里巴巴开源的 RPC 框架,Dubbo 是 SOA 时代的产物,它的关注点次要在于服务的调用,流量散发、流量监控和熔断

两者的生态比照:

Spring Cloud 的性能很显著比 Dubbo 更加弱小,涵盖面更广,而且作为 Spring 的旗舰我的项目,它也可能与 Spring Framework、Spring Boot、Spring Data、Spring Batch 等其余 Spring 我的项目完满交融,这些对于微服务而言是至关重要的。

应用 Dubbo 构建的微服务架构就像组装电脑,各环节抉择自由度很高,然而最终后果很有可能因为一条内存品质不行就点不亮了,总是让人不怎么释怀,然而如果使用者是一名高手,那这些都不是问题。

而 Spring Cloud 就像品牌机,在 Spring Source 的整合下,做了大量的兼容性测试,保障了机器领有更高的稳定性,然而如果要在应用非原装组件外的货色,就须要对其根底原理有足够的理解。

2、dubbo 和 Feign 近程调用的差别

Feign 是 SpringCloud 中的近程调用形式,基于成熟 Http 协定,所有接口都采纳 Rest 格调。因而接口标准更对立,而且只有符合规范,实现接口的微服务能够采纳任意语言或技术开发。但受限于 http 协定自身的特点,申请和响应格局臃肿,其通信效率绝对会差一些。

Dubbo 框架默认采纳 Dubbo 自定义通信协议,与 Http 协定一样底层都是 TCP 通信。然而 Dubbo 协定自定义了 Java 数据序列化和反序列化形式、数据传输格局,因而 Dubbo 在数据传输性能上会比 Http 协定要好一些。

不过这种性能差别除非是达极高的并发量级,否则无需过多思考。

相干材料:

Dubbo 采纳自定义的 Dubbo 协定实现近程通信,是一种典型的 RPC 调用计划,而 SpringCloud 中应用的 Feign 是基于 Rest 格调的调用形式。

1)Rest 格调

REST 是一种架构格调,指的是一组架构约束条件和准则。满足这些约束条件和准则的应用程序或设计就是 RESTful。

Rest 的格调能够齐全通过 HTTP 协定实现,应用 HTTP 协定解决数据通信。REST 架构对资源的操作包含获取、创立、批改和删除资源的操作正好对应 HTTP 协定提供的 GET、POST、PUT 和 DELETE 办法。

因而申请和想要过程只有遵循 http 协定即可,更加灵便

SpringCloud 中的 Feign 就是 Rest 格调的调用形式。

2)RPC

Remote Procedure Call,近程过程调用,就是像调用本地办法一样调用近程办法。

RPC 个别要确定上面几件事件:

  • 数据传输方式: 少数 RPC 框架抉择 TCP 作为传输协定,性能比拟好。
  • 数据传输内容: 申请方须要告知须要调用的函数的名称、参数、等信息。
  • 序列化形式: 客户端和服务端交互时将参数或后果转化为字节流在网络中传输,那么数据转化为字节流的或者将字节流转换成能读取的固定格局时就须要进行序列化和反序列化

因为有序列化和反序列化的需要,因而对数据传输格局有严格要求,不如 Http 灵便

Dubbo 协定就是 RPC 的典型代表。

咱们看看 Dubbo 协定和 Feign 的调用区别:

3、Eureka 和 Zookeeper 注册核心的区别

SpringCloud 和 Dubbo 都反对多种注册核心,不过目前支流来看 SpringCloud 用 Eureka 较多,Dubbo 则以 Zookeeper 为主。两者存在较大的差别:

  • 从集群设计来看: Eureka 集群各节点平等,没有主从关系,因而可能呈现数据不统一状况;ZK 为了满足一致性,必须蕴含主从关系,一主多从。集群无主时,不对外提供服务
  • CAP 准则来看: Eureka 满足 AP 准则,为了保障整个服务可用性,就义了集群数据的一致性;而 Zookeeper 满足 CP 准则,为了保障各节点数据一致性,就义了整个服务的可用性。
  • 服务拉取形式来看: Eureka 采纳的是服务被动拉取策略,消费者依照固定频率(默认 30 秒)去 Eureka 拉取服务并缓存在本地;ZK 中的消费者首次启动到 ZK 订阅本人须要的服务信息,并缓存在本地。而后监听服务列表变动,当前服务变更 ZK 会推送给消费者。

4、SpringCloud 中的罕用组件有哪些?

Spring Cloud 的子项目很多,比拟常见的都是 Netflix 开源的组件:

Spring Cloud Config

集中配置管理工具,分布式系统中对立的内部配置管理,默认应用 Git 来存储配置,能够反对客户端配置的刷新及加密、解密操作。

Spring Cloud Netflix

Netflix OSS 开源组件集成,包含 Eureka、Hystrix、Ribbon、Feign、Zuul 等外围组件。

  • Eureka:服务治理组件,包含服务端的注册核心和客户端的服务发现机制;
  • Ribbon:负载平衡的服务调用组件,具备多种负载平衡调用策略;
  • Hystrix:服务容错组件,实现了断路器模式,为依赖服务的出错和提早提供了容错能力;
  • Feign:基于 Ribbon 和 Hystrix 的申明式服务调用组件;
  • Zuul:API 网关组件,对申请提供路由及过滤性能。

Spring Cloud Bus

用于流传集群状态变动的音讯总线,应用轻量级音讯代理链接分布式系统中的节点,能够用来动静刷新集群中的服务配置。

Spring Cloud Consul

基于 Hashicorp Consul 的服务治理组件。

Spring Cloud Security

平安工具包,对 Zuul 代理中的负载平衡 OAuth2 客户端及登录认证进行反对。

Spring Cloud Sleuth

Spring Cloud 应用程序的分布式申请链路跟踪,反对应用 Zipkin、HTrace 和基于日志(例如 ELK)的跟踪。

Spring Cloud Stream

轻量级事件驱动微服务框架,能够应用简略的申明式模型来发送及接管音讯,次要实现为 Apache Kafka 及 RabbitMQ。

Spring Cloud Task

用于疾速构建短暂、无限数据处理工作的微服务框架,用于向利用中增加功能性和非功能性的个性。

Spring Cloud Zookeeper

基于 Apache Zookeeper 的服务治理组件。

Spring Cloud Gateway

API 网关组件,对申请提供路由及过滤性能。

Spring Cloud OpenFeign

基于 Ribbon 和 Hystrix 的申明式服务调用组件,能够动态创建基于 Spring MVC 注解的接口实现用于服务调用,在 Spring Cloud 2.0 中曾经取代 Feign 成为了一等公民。

5、微服务调用关系简单,如何做监控和谬误排查?

企业中对于微服务监控有一套货色,叫做 APM。比方:SpringCloudSeluth+Zipkin,Pinpoint、Skywalking,能够实现性能监控、链路跟踪(准确到某个代码,某条 sql)、CPU 运行状况,链路运行耗时。

当然,还能够借助于分布式日志管理系统。把我的项目运行的日志收集,造成统计报表,放入 elasticsearch,便于搜寻查看。比方:ELK 技术栈、GrayLog

6、Hystix 的作用是什么?

Hystix 是 Netflix 开源的一个提早和容错库,用于隔离拜访近程服务、第三方库,防止出现级联失败。比拟罕用的伎俩就是线程隔离和服务熔断。

近期热文举荐:

1.1,000+ 道 Java 面试题及答案整顿 (2022 最新版)

2. 劲爆!Java 协程要来了。。。

3.Spring Boot 2.x 教程,太全了!

4. 别再写满屏的爆爆爆炸类了,试试装璜器模式,这才是优雅的形式!!

5.《Java 开发手册(嵩山版)》最新公布,速速下载!

感觉不错,别忘了顺手点赞 + 转发哦!

正文完
 0