Spring Cloud 比较
Spring Cloud 比较
一、简介
1、SpringCloud:一套微服务架构下的一站式解决方案,理念就是解决我们在微服务架构中遇到的任何问题;
2、SpringCloudAlibaba:阿里实现对SpringCloud组件进行扩展;
3、SpringCloudTencent:腾讯实现对SpringCloud组件进行扩展;
二、区别
名称 | SpringCloud | SpringCloudAlibaba | SpringCloudTencent |
---|---|---|---|
注册中心 | Eureka、Consul | Nacos | polaris-discovery |
配置中心 | SpringCloud Config | Nacos | polaris-config |
网 关 | SpringCloud Zuul | SpringCloud Gateway | polaris-router |
负载均衡 | Ribbon | Loadbalancer | polaris-loadbalancer |
熔断降级 | Hystrix | Sentinel | polaris-circuitebreaker/ratelimit |
服务调用 | Feign | OpenFeign | Feign |
Dubbo 与 Spring Cloud 的区别
Dubbo 是阿里巴巴开源的RPC框架,它的关注点主要在于服务的调用,流量分发、流量监控和熔断。
两者都是现在主流的微服务框架,但却存在不少差异:
- 初始定位不同:SpringCloud定位为微服务架构下的一站式解决方案;Dubbo 是 SOA 时代的产物,它的关注点主要在于服务的调用和治理
- 生态环境不同:SpringCloud依托于Spring平台,具备更加完善的生态体系;而Dubbo一开始只是做RPC远程调用,生态相对匮乏,现在逐渐丰富起来。
- 调用方式:SpringCloud是采用Http协议做远程调用,接口一般是Rest风格,比较灵活;Dubbo是采用Dubbo协议,接口一般是Java的Service接口,格式固定。但调用时采用Netty的NIO方式,性能较好。
- 组件差异比较多,例如SpringCloud注册中心一般用Eureka,而Dubbo用的是Zookeeper
SpringCloud生态丰富,功能完善,更像是品牌机;Dubbo则相对灵活,可定制性强,更像是组装机。
两者的生态对比:
功能 | Dubbo | SpringCloud |
服务注册中心 | Zookeeper | Eureka(主流)、Nacos、Consul、zookeeper |
服务调用方式 | RPC基于Dubbo协议 | REST API 基于Http协议 |
服务监控 | Dubbo-Monitor | Spring Boot Admin |
熔断器 | 不完善 | Spring Cloud Netflix Hystrix |
服务网关 | 无 | Spring Cloud Netflix Zuul、Gateway |
分布式配置 | 无 | Spring Cloud Config |
服务跟踪 | 无 | Spring Cloud Sleuth+Zipkin(一般) |
数据流 | 无 | Spring Cloud Stream |
批量任务 | 无 | Spring Cloud Task |
信息总线 | 无 | Spring Cloud Bus |
Spring Cloud 的功能很明显比 Dubbo 更加强大,涵盖面更广,而且作为 Spring 的旗舰项目,它也能够与 Spring Framework、Spring Boot、Spring Data、Spring Batch 等其他 Spring 项目完美融合,这些对于微服务而言是至关重要的。
使用 Dubbo 构建的微服务架构就像组装电脑,各环节选择自由度很高,但是最终结果很有可能因为一条内存质量不行就点不亮了,总是让人不怎么放心,但是如果使用者是一名高手,那这些都不是问题。
而 Spring Cloud 就像品牌机,在 Spring Source 的整合下,做了大量的兼容性测试,保证了机器拥有更高的稳定性,但是如果要在使用非原装组件外的东西,就需要对其基础原理有足够的了解。
Spring Cloud
springcloud的版本说明:
- springcloud项目是由多个独立项目集合而成的,每个项目都是独立的,各自进行自己的迭代和版本发布
- springcloud的F版本是基于springboot的2.0.x构建,之前的是基于springboot的1.5.x构建
SpringCloud的5大核心组件:
- Eureka:注册中心
- Zuul:服务网关
- Ribbon:负载均衡
- Feign:服务调用
- Hystix:熔断器
将微服务划分为外部服务和内部服务
- 外部服务:以终端划分的外部服务,如api-admin、api-pc、api-applets、api-app、api-h5,提供对外(用户)的API 接口数据 。
- 外部服务提供Feign服务通信调用内部服务获取数据。
- 内部服务:如订单服务、用户服务、商品服务、内容服务等内部服务,提供增删改查(搜索)等基本数据库操作
微服务介绍
微服务架构,重点在一个微字,简单的说就是将单体服务拆分成更多更小的服务,每个服务都是一个独立的,可以运行的项目。我们来看一张图:
这么拆有什么好处?
- 没有拆分之前,你修改一个功能,进行测试,部署上线,可能要一个月,要考虑对其他服务的影响,考虑其他人改动代码的影响,还要对整个系统功能全量回归测试,费事费力,可能上线基本上就得1个月,那么服务拆分之后,可以独立打包,测试,部署,升级,只需要关心自己的功能,随时可以安排上线。而且每个微服务都有清晰的任务划分,利于扩展。总之,拆分之后对于开发人员来说是非常爽的一件事。
- 有好处那就有缺点,服务多了之后,要考虑怎么管理维护,使用的架构也不一样,技术学习成本也会上升。
微服务架构常见的问题
- 一旦决定采用微服务架构系统,就会面临以下几个不能饶过的问题:
- 这么多服务,怎么管理?
- 这么多服务,他们之间怎么通讯?
- 这么多服务,用户应该怎么访问他们?
- 这么多服务,一旦出现问题了,怎么进行自处理?
- 这么多服务,一旦出现问题了,怎么进行问题排查?
- 上面的这些问题,是任何一个微服务设计者都绕不过去的,市面上一些微服务架构产品就是提供了一系列的组件来解决上述问题。
- 来看一个常见的微服务架构图
- 一旦决定采用微服务架构系统,就会面临以下几个不能饶过的问题:
Spring Cloud 比较的更多相关文章
- spring/spring boot/spring cloud开发总结
背景 针对RPC远程调用,都在使用dubbo.dubbox等,我们也是如此.由于社区暂停维护.应对未来发展,我们准备尝试新技术(或许这时候也不算什么新技术了吧),选择使用了spring ...
- 转 Netflix OSS、Spring Cloud还是Kubernetes? 都要吧!
Netflix OSS.Spring Cloud还是Kubernetes? 都要吧! http://www.infoq.com/cn/articles/netflix-oss-spring-cloud ...
- spring cloud 学习研究- spring-cloud-microservice-example
spring cloud + docker 微服务架构 http://www.open-open.com/lib/view/open1437363835818.html 实例项目 https://gi ...
- Spring Cloud集成相关优质项目推荐
Spring Cloud Config 配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储.Git以及Subversion. Spring Cloud Bus 事件.消 ...
- spring boot分布式技术,spring cloud,负载均衡,配置管理器
spring boot分布式的实现,使用spring cloud技术. 下边是我理解的spring cloud的核心技术: 1.配置服务器 2.注册发现服务器eureka(spring boot默认使 ...
- Spring Cloud 配置服务
Spring Cloud 配置服务 1. 配置服务简介 产生背景: 传统开发中,我们通常是将系统的业务无关配置(数据库,缓存服务器)在properties中配置,在这个文件中不会经常改变,但随着系统规 ...
- Microservices Reference Architecture - with Spring Boot, Spring Cloud and Netflix OSS--转
原文地址:https://www.linkedin.com/pulse/microservices-reference-architecture-spring-boot-cloud-anil-alle ...
- 综合使用spring cloud技术实现微服务应用
在之前的章节,我们已经实现了配置服务器.注册服务器.微服务服务端,实现了服务注册与发现.这一章将实现微服务的客户端,以及联调.实现整个spring cloud框架核心应用. 本文属于<7天学会s ...
- Spring cloud实现服务注册及发现
服务注册与发现对于微服务系统来说非常重要.有了服务发现与注册,你就不需要整天改服务调用的配置文件了,你只需要使用服务的标识符,就可以访问到服务. 本文属于<7天学会spring cloud系列& ...
- 使用spring cloud实现分布式配置管理
<7天学会spring cloud系列>之创建配置管理服务器及实现分布式配置管理应用. 本文涉及到的项目: 开源项目:http://git.oschina.net/zhou666/spri ...
随机推荐
- 欧洲对 Splashtop 远程计算机实验室的需求增长十倍
2021 年 1 月 7 日,加利福尼亚州圣何塞 - 远程访问和远程支持解决方案的全球领导者 Splashtop Inc. 报告称其对用于教育的远程实验室访问软件的需求在欧洲激增,在 2020 年第 ...
- pageOffice插件 springboot实现服务器上Word文档在线打开编辑保存
需求: 在oa系统上,想实现在线,服务器上doc,docx文档,在web打开,编辑.编辑后,可以再同步保存到服务器端. 开发环境: java springboot,thymeleaf 服务器环境: 无 ...
- kubernets之了解Qos等级
一 Qos的种类 BestEffort(优先级最低) Burstable(中等优先级) Guaranteed(最高优先级) 二 Qos的作用 众所周知,节点上面的limits允许超卖,当节点上面的 ...
- 利用Django实现文件上传
一.form表单的形式上传文件 1.路由 urlpatterns = [ path("upload/", views.UploadView.as_view(),) ] 2.视图 f ...
- 使用 TestContainers 进行数据库集成测试
在软件开发过程中,集成测试是至关重要的一环.它确保不同组件之间的协作正常,并验证系统在整体上的功能和性能.然而,传统的集成测试往往需要依赖于外部资源,如数据库.消息队列等,这给测试环境的搭建和维护带来 ...
- 面试官:说一说如何优雅的关闭线程池,我:shutdownNow,面试官:粗鲁!
写在开头 面试官:"小伙子,线程池使用过吗,来聊一聊它吧!" 我:"好的,然后巴拉巴拉一顿输出之前看过的build哥线程池十八问..." 面试官满意的点了点头, ...
- 前端使用 Konva 实现可视化设计器(12)- 连接线 - 直线
这一章实现的连接线,目前仅支持直线连接,为了能够不影响原有的其它功能,尝试了2.3个实现思路,最终实测这个实现方式目前来说最为合适了. 请大家动动小手,给我一个免费的 Star 吧~ 大家如果发现了 ...
- c语言不可不说的一件事——进制之间的转化
进制之间的转换 二进制转换 二进制转换为十进制 10111010.101 转换方法: 个位数是乘以2的0次方 从小数点开始分割,(小数点前从右往左,小数点后从左往右)乘以2的对应次方(从0开始取),最 ...
- LVGL8文本框设置长文本会自动滚动到文本最后解决方法
在创建完成并设置完文本之后加一句 lv_obj_scroll_to_y(obj,0, LV_ANIM_OFF); 就可以了 原因:官方控件里面设置文本的接口里面设置文本后会设置一次光标位置到文本末尾, ...
- node.js常用命令总结
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,用于构建快速.可扩展的网络应用程序.它使用事件驱动.非阻塞 I/O 模型,使其非常适合构建数据密集型的实时应用 ...