Spring Cloud Alibaba入门篇

有关微服务的一些概念的东西我这里就不再阐述了,因为之前在写Spring Cloud系列的时候都有详细写过。

具体地址: Spring Cloud系列博客

这个系列开始来讲Spring Cloud Alibaba,第一步先从概述说起。

一、概述

1、简介

Spring Cloud Alibaba,它是由一些阿里巴巴的开源组件和云产品组成的。这个项目的目的是为了给Java开发者带来使用 Spring Boot 和 Spring Cloud 的更多便利。

Spring Cloud Alibaba 致力于 提供微服务开发的一站式解决方案。该项目包含开发分布式应用微服务必需组件,方便开发者通过Spring Cloud编程模型轻松使用这些组件来开发

分布式应用服务。依托 SpringCloudAlibaba,您只需添加一些注解和少量配置,就可以将SpringCloud应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。

2、 主要功能

作为微服务都需要考虑 服务治理服务网关智能路由负载均衡断路器监控跟踪分布式消息队列配置管理 等领域的解决方案。

这些功能Spring Cloud Alibaba都能满足,而且都做的非常好。

主要功能如下

服务注册与发现:适配 SpringCloud 服务注册与发现标准,默认集成了 Ribbon的支持。

分布式配置管理:支持分布式系统中的外部化配置,配置更改时自动刷新。

服务限流降级:默认支持 Servlet、Feign、RestTemplate、Dubbo 和 RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,

还支持查看限流降级 Metrics 监控。

消息驱动能力:基于 SpringCloudStream 为微服务应用构建消息驱动能力。

阿里云对象存储:阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任意类型的数据。

分布式任务调度:提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持

海量子任务均匀分配到所有 Worker(schedulerx-client)上执行。

3、主要组件

为了实现上面的功能alibabaCloud也提供了一系列的组件 ,具体可以参考这张图

这个图片中展示所有的组件可以分为三大分类: 阿里开源组件、阿里商业化组件、集成 Spring Cloud 组件

(1)阿里开源组件

Nacos:阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现配置管理服务管理平台。它最大的特点就是把 微服务注册发现

和微服务配置中心都整合在一起,方便我们的使用。

Sentinel:面向分布式服务架构的轻量级流量控制产品,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助您保护服务的稳定性

RocketMQ:分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。

Dubbo:这个就不用多说了,在国内应用非常广泛的一款高性能 Java RPC 框架(这里不仅仅可以使用Dubbo服务调用,还好用通过Feign进行服务之前调用)。

Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案

Arthas:开源的Java动态追踪工具,基于字节码增强技术,功能非常强大。

(2)阿里商业化组件

作为一家商业公司,阿里巴巴推出 Spring Cloud Alibaba,很大程度上市希望通过抢占开发者生态,来帮助推广自家的云产品。所以在开源社区,夹带了不少私货,这部分组件

整体易用性和稳定性还是很高的。

Alibaba Cloud ACM:一款在分布式架构环境中对应用配置进行集中管理和推送的应用配置中心产品。

Alibaba Cloud OSS:阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、

任何时间、任何地点存储和访问任意类型的数据。

Alibaba Cloud SchedulerX:阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。

(3)集成 Spring Cloud 组件

Spring Cloud Alibaba 作为整套的微服务解决组件,只依靠目前阿里的开源组件是不够的,更多的是集成当前的社区组件,所以 Spring Cloud Alibaba 可以集成 Zuul,

OpenFeign等网关,也支持 Spring Cloud Stream 消息组件。

4、整体理解

在网上找到一个Spring Cloud Alibaba 项目成员提供的对于SpringCloudAlibaba整个生态的理解,我觉得这幅图画的真好。

这幅图它们叫3 + 2,3是指图中深色的部分(这部分又分为3小部分),2是指上图中最外的一圈(这一圈又被分为两小部分)。下面来讲解为什么分为这两大部分,每小部分的含义。

3的含义

其实这一整个3我们可以去理解是整个 Spring Cloud 标准,一共有3部分组成。

第一层、中间颜色最深的部分就是及整个微服务最核心的内容,包括了 RPC 调用”以及“服务注册与发现。可以说只要是微服务都首先需要考虑的也是微服务最核心的。

第二层、也就是围绕着核心的这一圈,是一些辅助微服务更好的工作功能,包括了负载均衡、路由、网关、断路器,还有就是追踪等等这些内容。这部分可以让我们更好

的去使用微服务,但它们并不是一定必须的,而是说通常都需要考虑的。

第三层、再外层的话,主要是一些分布式云环境里通用能力。必要程度可以比上面再轻一点。

2指的含义

“2”,指的就是上图中最外面这一圈。这一部分就是这个我们 Spring Cloud Alibaba 的一个定义,它其实包含两个部分的内容:

右上部分、是对于 Spring Cloud 标准的实现。例如,我们通过 Dubbo 实现了 RPC 调用功能,通过 Nacos 实现了“服务注册与发现”、“分布式配置”,通过 Sentinel 实现了

断路器等等,这里就不一一列举了。

左下部分、 是我们 Spring Cloud Alibaba 对阿里云各种服务的集成。在实际生产过程中,单独使用微服务框架其实并不足以支撑我们去构建一个完整的系统。所以这部分是

用阿里帮助开发者完成微服务以外的云产品集成的功能。

注意 右上部分是阿里完全开源的,开发者可以只是用这部分实现运行在任何云平台中。当然,左下部分,由于天然是对阿里云服务的集成,这部分是和平台相关的,

是需要我们付费购买服务的。

二、AlibabaCloud 和 SpringCloud比较

1、比较

现在AlibabaCloud这么火热的很大的一个原因在于spring cloud中的几乎所有的组件都使用Netflix公司的产品,然后在其基础上做了一层封装。然而Netflix的服务发现组件`Eureka已经

停止更新`。这里有张图对于它们之间的比较

重点 从里可以看出 Spring Cloud Alibaba 是所有的实现方案中功能最齐全的。尤其是在 Netflix 停止更新了以后,Spring Cloud Alibaba 依然在持续更新和迭代

2、Spring Cloud Alibaba优点

Spring Cloud Alibaba 虽然诞生时间不久,但是背靠大树好乘凉,赖于阿里巴巴强大的技术影响力,已经成为微服务解决方案的重要选择之一。

我认为 Spring Cloud Alibaba 的优势有以下几点:

(1)、阿里巴巴强大的技术输出能力

阿里巴巴无疑是国内开源技术领域的最有影响力的公司之一,已经有Dubbo、Druid,FastJson等成功的开源组件,再加上阿里不遗余力的推广,社区发展也非常快。

(2)、集成Dubbo,利用Dubbo在微服务领域的超高人气

Dubbo是国内应用最广的分布式服务框架之一,基于Dubbo改造的Dubbox等也有很多公司在使用, Spring Cloud Alibaba对Dubbo做了比较好的集成,可以吸引不少使用Dubbo

的开发者。

(3)、云原生趋势,集成阿里云商业化组件

云原生(Cloud Native)是今年技术领域特别热门的一个词,云原生是一种专门针对云上应用而设计的方法,用于构建和部署应用,以充分发挥云计算的优势。

Spring Cloud Alibaba 集成了阿里云的商业化组件,可以说天然支持云原生特性。

接下来我会对Spring Cloud Alibaba下面每一个组件都进行详细的介绍,从0到1搭建一个Spring Cloud Alibaba微服务完整项目。

参考

1、Spring Cloud Alibaba 新一代微服务解决方案

2、阿里系统软件技术

3、Spring Cloud Alibaba 简介

少说多做,句句都会得到别人的重视;多说少做,句句都会受到别人的忽视。(1)

Spring Cloud Alibaba(1)---入门篇的更多相关文章

  1. 【Spring Cloud & Alibaba 实战 | 总结篇】Spring Cloud Gateway + Spring Security OAuth2 + JWT 实现微服务统一认证授权和鉴权

    一. 前言 hi,大家好~ 好久没更文了,期间主要致力于项目的功能升级和问题修复中,经过一年时间的打磨,[有来]终于迎来v2.0版本,相较于v1.x版本主要完善了OAuth2认证授权.鉴权的逻辑,结合 ...

  2. Spring Cloud Alibaba Nacos 入门

    概览 阿里巴巴在2018年7月份发布Nacos, Nacos是一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台.并表示在6-8个月完成到生产可用的0.8版本,目前版本是0.9版本. Na ...

  3. Spring Cloud Alibaba(4)---Nacos(注册中心)

    Nacos(注册中心) 有关Spring Cloud Alibaba之前写过三篇文章. Spring Cloud Alibaba(1)---入门篇 Spring Cloud Alibaba(2)--- ...

  4. Spring Cloud Alibaba(5)---Nacos(配置中心)

    Nacos(配置中心) 有关Spring Cloud Alibaba之前写过四篇文章,这篇也是在上面项目的基础上进行开发. Spring Cloud Alibaba(1)---入门篇 Spring C ...

  5. Spring Cloud Alibaba(8)---Feign服务调用

    Feign服务调用 有关Spring Cloud Alibaba之前写过五篇文章,这篇也是在上面项目的基础上进行开发. Spring Cloud Alibaba(1)---入门篇 Spring Clo ...

  6. Spring Cloud Alibaba 实战(十三) - Sleuth调用链监控

    本文概要:大白话剖析调用链监控原理,然后学习Sleuth,Zipkin,然后将Sleuth整合Zipkin,最后学习Zipkin数据持久化(Elasticsearch)以及Zipkin依赖关系图 实战 ...

  7. Spring Cloud Alibaba 实战(十二) - Nacos配置管理

    本章主要内容是:使用Nacos管理配置以及实现配置管理的原因,配置如何管理以及动态刷新和最佳实现总结,最后是Nacos配置刷新原理解读 该技术类似于Spring Cloud Config 1 配置管理 ...

  8. Spring Cloud Alibaba 实战(十一) - Spring Cloud认证授权

    欢迎关注全是干货的技术公众号:JavaEdge 本文主要内容: 如何实现用户认证与授权? 实现的三种方案,全部是通过画图的方式讲解.以及三种方案的对比 最后根据方案改造Gateway和扩展Feign ...

  9. 主流微服务一站式解决方案Spring Cloud Alibaba入门看这篇就足够了

    学习路线 **本人博客网站 **IT小神 www.itxiaoshen.com 生态概述 架构演进 什么是微服务 https://martinfowler.com/microservices/ Mic ...

随机推荐

  1. useful podcast

    useful podcast front end podcast https://shoptalkshow.com https://stackoverflow.blog/podcast/ SoundC ...

  2. js 拖拽排序

    See alsoe: https://www.runoob.com/html/html5-draganddrop.html https://developer.mozilla.org/zh-CN/do ...

  3. NGK全网算力总量增加,SPC前景广阔

    日前,根据NGK官方公布的数据显示,NGK全网算力总量达到550.96万,比早前预估的500万算力增加了50.96万,并且随着SPC空投的持续,还有不少生态建设者在持续涌入NGK算力市场.那么,是什么 ...

  4. [转]ROS学习笔记十一:ROS中数据的记录与重放

    本节主要介绍如何记录一个正在运行的ROS系统中的数据,然后在一个运行的系统中根据记录文件重新产生和记录时类似的运动情况.本例子还是以小海龟例程为例. 记录数据(创建一个bag文件) 首先运行小海龟例程 ...

  5. Python算法_盛最多水的容器(04)

    给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找出其中的两条线, ...

  6. JDK源码阅读-FileDescriptor

    本文转载自JDK源码阅读-FileDescriptor 导语 操作系统使用文件描述符来指代一个打开的文件,对文件的读写操作,都需要文件描述符作为参数.Java虽然在设计上使用了抽象程度更高的流来作为文 ...

  7. CentOS7安装Mysql并配置远程访问

    (su root登录到root账户) 下载repo源 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 安装rpm ...

  8. 微信小程序:如何删除所有的console.log?

    使用vscode正则匹配,手动去除 1.用vscode打开微信小程序项目 2.Edit-----replace in Files 1. console.log()加了分号 console\.log\( ...

  9. JS数组的常用属性或方法

    1.length 数组长度 计算数组的长度 var arr=[1,2,3,4,5]; console.log(arr.length);//输出结果是5 2. push() 添加元素 向数组尾部添加新元 ...

  10. Mysql 高可用(MHA)-读写分离(Atlas)-分布式架构(Mycat)

    Mysql 高可用(MHA)-读写分离(Atlas) 1. 搭建主从复制(一主两从) 1.1 准备环境 1 主库:10.0.0.51/db01 2 从库:10.0.0.52/db02,10.0.0.5 ...