作者:IsToRestart\blog.csdn.net/weixin_51291483/article/details/1092121371,SpringCloud和Dubbo的区别都是目前主流的微服务框架,但是有很多区别:初始定位不同:SpringCloud定位它是微服务架构下的一站式解决方案;Dubbo是SOA时代的产物,其关注点主要是服务调用和治理。生态环境不同:SpringCloud依托于Spring平台,生态更加完善;而Dubbo一开始只是RPC远程调用,生态比较稀缺,现在逐渐丰富起来。调用方式:SpringCloud使用Http协议进行远程调用,接口一般为Rest风格,相对灵活;Dubbo使用Dubbo协议,接口一般是JavaService接口,格式固定。不过调用的时候使用了Netty的NIO方式,性能更好。组件有很多差异。比如SpringCloud注册中心一般使用Eureka,而Dubbo使用Zookeeper。SpringCloud生态丰富,功能丰富,更像是品牌机。Dubbo相对灵活,可定制性强,更像是一台组装机。SpringCloud:Spring开源的微服务框架,SpirngCloud定位为微服务架构下的一站式解决方案。Dubbo:阿里巴巴开源的RPC框架。Dubbo是SOA时代的产物。其侧重点主要在服务调用、流量分发、流量监控、断路器生态对比:SpringCloud明显比Dubbo强大。覆盖面更广,作为Spring的旗舰项目,还可以与其他Spring项目如SpringFramework、SpringBoot、SpringData、SpringBatch等完美集成,对微服务至关重要。用Dubbo搭建的微服务架构就像组装一台电脑,每个环节的选择都有很高的自由度,但最终的结果很可能因为内存质量不好导致不亮,这总是让人不安,但是如果用户是一个高手,那么这些都不是问题。而SpringCloud就像一台品牌机。在SpringSource的集成下,做了很多兼容性测试,保证机器有更高的稳定性。原理有足够的了解。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)RPCRemoteProcedureCall,远程过程调用,就是像调用本地方法一样调用远程方法。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中有哪些常用组件?SpringCloud的子项目很多,比较常见的有Netflix开源组件:SpringCloudConfig集中配置管理工具,分布式系统统一外部配置管理,默认使用Git存储配置,可以支持客户端配置刷新和加密解密操作。SpringCloudNetflixNetflixOSS开源组件集成,包括Eureka、Hystrix、Ribbon、Feign、Zuul等核心组件。Eureka:服务治理组件,包括服务端注册中心和客户端服务发现机制;Ribbon:负载均衡服务调用组件,具有多种负载均衡调用策略;Hystrix:服务容错组件,实现了断路器模型,为依赖服务的错误和延迟提供容错;Feign:基于Ribbon和Hystrix的声明式服务调用组件;Zuul:一个API网关组件,为请求提供路由和过滤功能。SpringCloudBus是一种用于传播集群状态变化的消息总线,使用轻量级消息代理链接分布式系统中的节点,可用于动态刷新集群中的服务配置。SpringCloudConsul基于HashicorpConsul的服务治理组件。SpringCloudSecurity安全工具包支持在Zuul代理中负载均衡OAuth2客户端和登录认证。SpringCloudSleuthSpringCloud应用程序的分布式请求链接跟踪,支持使用Zipkin、HTrace和基于日志(例如ELK)的跟踪。SpringCloudStream的轻量级事件驱动微服务框架可以使用简单的声明式模型发送和接收消息,主要实现为ApacheKafka和RabbitMQ。SpringCloudTask是一个微服务框架,用于快速构建短期的、有限的数据处理任务,以向应用程序添加功能性和非功能性特性。SpringCloudZookeeper基于ApacheZookeeper的服务治理组件。SpringCloudGatewayAPI网关组件为请求提供路由和过滤功能。SpringCloudOpenFeign是基于Ribbon和Hystrix的声明式服务调用组件,可以动态创建基于SpringMVC注解的接口实现来进行服务调用。在SpringCloud2.0中已经取代Feign成为一等公民。5、微服务调用关系复杂,如何监控排查?企业内部有一套微服务监控的工具,叫做APM。例如:SpringCloudSeluth+Zipkin、Pinpoint、Skywalking,可以实现性能监控、链路跟踪(精确到某段代码、某条sql)、CPU运行状态、链路运行耗时。当然,你也可以使用分布式日志管理系统。收集项目运行的日志,形成统计报表,放入elasticsearch,方便搜索查看。比如:ELK技术栈、GrayLog6、Hystix的功能是什么?Hystix是Netflix开源的延迟容错库,用于隔离远程服务和第三方库的访问,防止级联故障。比较常用的方法是线程隔离和服务熔断。近期热点文章推荐:1.1000+Java面试题及答案(2022最新版)2.厉害了!Java协程来了。..3.SpringBoot2.x教程,太全面了!4.不要用爆破爆满画面,试试装饰者模式,这才是优雅的方式!!5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!
