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

  1. springcloud的版本说明:

    • springcloud项目是由多个独立项目集合而成的,每个项目都是独立的,各自进行自己的迭代和版本发布
    • springcloud的F版本是基于springboot的2.0.x构建,之前的是基于springboot的1.5.x构建
  2. SpringCloud的5大核心组件:

    1. Eureka:注册中心
    2. Zuul:服务网关
    3. Ribbon:负载均衡
    4. Feign:服务调用
    5. Hystix:熔断器
  3. 将微服务划分为外部服务和内部服务

    • 外部服务:以终端划分的外部服务,如api-admin、api-pc、api-applets、api-app、api-h5,提供对外(用户)的API 接口数据 。
    • 外部服务提供Feign服务通信调用内部服务获取数据。
    • 内部服务:如订单服务、用户服务、商品服务、内容服务等内部服务,提供增删改查(搜索)等基本数据库操作
  4. 微服务介绍

    • 微服务架构,重点在一个微字,简单的说就是将单体服务拆分成更多更小的服务,每个服务都是一个独立的,可以运行的项目。我们来看一张图:

    • 这么拆有什么好处?

      • 没有拆分之前,你修改一个功能,进行测试,部署上线,可能要一个月,要考虑对其他服务的影响,考虑其他人改动代码的影响,还要对整个系统功能全量回归测试,费事费力,可能上线基本上就得1个月,那么服务拆分之后,可以独立打包,测试,部署,升级,只需要关心自己的功能,随时可以安排上线。而且每个微服务都有清晰的任务划分,利于扩展。总之,拆分之后对于开发人员来说是非常爽的一件事。
      • 有好处那就有缺点,服务多了之后,要考虑怎么管理维护,使用的架构也不一样,技术学习成本也会上升。
  5. 微服务架构常见的问题

    • 一旦决定采用微服务架构系统,就会面临以下几个不能饶过的问题:

      • 这么多服务,怎么管理?
      • 这么多服务,他们之间怎么通讯?
      • 这么多服务,用户应该怎么访问他们?
      • 这么多服务,一旦出现问题了,怎么进行自处理?
      • 这么多服务,一旦出现问题了,怎么进行问题排查?
    • 上面的这些问题,是任何一个微服务设计者都绕不过去的,市面上一些微服务架构产品就是提供了一系列的组件来解决上述问题。
    • 来看一个常见的微服务架构图

Spring Cloud 比较的更多相关文章

  1. spring/spring boot/spring cloud开发总结

    背景        针对RPC远程调用,都在使用dubbo.dubbox等,我们也是如此.由于社区暂停维护.应对未来发展,我们准备尝试新技术(或许这时候也不算什么新技术了吧),选择使用了spring ...

  2. 转 Netflix OSS、Spring Cloud还是Kubernetes? 都要吧!

    Netflix OSS.Spring Cloud还是Kubernetes? 都要吧! http://www.infoq.com/cn/articles/netflix-oss-spring-cloud ...

  3. spring cloud 学习研究- spring-cloud-microservice-example

    spring cloud + docker 微服务架构 http://www.open-open.com/lib/view/open1437363835818.html 实例项目 https://gi ...

  4. Spring Cloud集成相关优质项目推荐

    Spring Cloud Config 配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储.Git以及Subversion. Spring Cloud Bus 事件.消 ...

  5. spring boot分布式技术,spring cloud,负载均衡,配置管理器

    spring boot分布式的实现,使用spring cloud技术. 下边是我理解的spring cloud的核心技术: 1.配置服务器 2.注册发现服务器eureka(spring boot默认使 ...

  6. Spring Cloud 配置服务

    Spring Cloud 配置服务 1. 配置服务简介 产生背景: 传统开发中,我们通常是将系统的业务无关配置(数据库,缓存服务器)在properties中配置,在这个文件中不会经常改变,但随着系统规 ...

  7. Microservices Reference Architecture - with Spring Boot, Spring Cloud and Netflix OSS--转

    原文地址:https://www.linkedin.com/pulse/microservices-reference-architecture-spring-boot-cloud-anil-alle ...

  8. 综合使用spring cloud技术实现微服务应用

    在之前的章节,我们已经实现了配置服务器.注册服务器.微服务服务端,实现了服务注册与发现.这一章将实现微服务的客户端,以及联调.实现整个spring cloud框架核心应用. 本文属于<7天学会s ...

  9. Spring cloud实现服务注册及发现

    服务注册与发现对于微服务系统来说非常重要.有了服务发现与注册,你就不需要整天改服务调用的配置文件了,你只需要使用服务的标识符,就可以访问到服务. 本文属于<7天学会spring cloud系列& ...

  10. 使用spring cloud实现分布式配置管理

    <7天学会spring cloud系列>之创建配置管理服务器及实现分布式配置管理应用. 本文涉及到的项目: 开源项目:http://git.oschina.net/zhou666/spri ...

随机推荐

  1. 《最新出炉》系列入门篇-Python+Playwright自动化测试-46-鼠标滚轮操作

    1.简介 有些网站为了节省流量和资源,提高加载效率,采用的是动态加载(懒加载)的,也就是当拖动页面右侧滚动条后会自动加载网页下面的内容,不拖动就不会加载的或者通过鼠标滚轮操作. 2.wheel模拟鼠标 ...

  2. 80x86汇编—汇编程序基本框架

    文章目录 First Program 指令系统 伪指令 数值表达式 程序框架解释 int 21 中断 通过一个基本框架解释各个指令和用处,方便复习.所以我认为最好的学习顺序就是先看一段完整的汇编代码程 ...

  3. dotnet 命令行工具解决方案 PomeloCli

    PomeloCli 是什么 中文版 English version 我们已经有相当多的命令行工具实现或解析类库,PomeloCli 并不是替代版本,它基于 Nate McMaster 的杰出工作 Co ...

  4. 14个Flink SQL性能优化实践分享

    本文分享自华为云社区<Flink SQL性能优化实践> ,作者:超梦. 在大数据处理领域,Apache Flink以其流处理和批处理一体化的能力,成为许多企业的首选.然而,随着数据量的增长 ...

  5. Python爬取数据并保存到csv文件中

    1.数据源 2.Python代码 import requests from lxml import etree import csv url = 'http://211.103.175.222:508 ...

  6. CSS——样式继承

    CSS的样式表继承指的是,特定的CSS属性向下传递到子孙元素.总的来说,一个HTML文档就是一个家族,然后html元素有两个子元素,相当于它的儿子,分别是head和body,然后body和head各自 ...

  7. H.265码流解析

    这一篇内容旨在对H.265码流中的一些概念做简单了解,部分概念与H.264相同,本篇中将不再重复. 1.NALU H.265(HEVC)码流的NALU结构和AVC有一些不同,属于增强版,HEVC NA ...

  8. Linux命令行优化,历史记录优化

    #命令行优化: echo "export PS1='\[\033[01;31m\]\u\[\033[00m\]@\[\033[01;32m\]\h\[\033[00m\][\[\033[01 ...

  9. linux ssh key 登录

    vim /etc/ssh/sshd_config #禁用root账户登录,非必要,但为了安全性,请配置 PermitRootLogin no # 是否让 sshd 去检查用户家目录或相关档案的权限数据 ...

  10. Java交换map的key和value值

    在Java中,我们都知道直接交换Map的key和value是不被允许的,因为Map的接口设计是基于key-value对的,其中key是唯一的,并且是不可变的(在HashMap等常见的实现中,虽然key ...