作者: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开发手册(嵩山版)》最新公布,速速下载!

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