【微服务】在Java体系中SpringCloud和SpringCloud Alibaba各通过哪些具体组件来实现微服务架构呢?

前面我们介绍了微服务架构的各个组件以及各组件的职责,在Java领域中,Spring可以说是无人不知无人不晓的,我们现代的企业级应用和互联网应用,很大一部分都是构建在Spring生态体系上的,同样,实现微服务架构的SpringCloud也是在Spring基础上生根发芽的。

SpringCloud微服务介绍

下面我们来看一下Spring、Springboot、SpringCloud之间的关系:

Spring是整个微服务开发的基石,在此基础上对Spring进行简化和封装,形成Springboot敏捷开发框架,而想掌握SpringCloud微服务开发,必须先掌握Springboot。
SpringCloud内置组件
SpringCloud提供了完整的微服务架构技术生态,像我们上篇文章提到的各类组件,在SpringCloud中都有着对应的实现。(如上图)

1、SpringCloud 实现微服务架构的具体组件

不过在这里需要注意一点,SpringCloud各组件并不是完全由Spring机构自行研发的,秉持着不重复造轮子的观念,Spring机构整合了市面上各大厂商优秀的开源作品,比如在SpringCloud中使用的注册中心组件就是选用了Netflix 的 Eureka,在此基础上进行整合形成了完整的Java微服务架构解决方案。我们前面列举出来的8个微服务标准组件在SpringCloud中都对应着具体实现。并且同一类组件可能有着多个开源产品供我们选择,这些产品在SpringCloud中是彼此兼容的。下面我们一起来看看8大组件的具体实现产品:

(1)注册中心

SpringCloud中注册中心使用的组件有Netflix 的 Eureka 1.xHashiCorp Consul,Eureka是Netflix公司提供的开源注册中心,2.x版本现已停止维护。HashiCorp Consul倒是在持续维护,但商用授权版本于2020年受到贸易管制已禁止国内使用

(2)负载均衡

SpringCloud中负载均衡使用的组件是Netflix Ribbon,属于微服务内置的客户端负载均衡组件,支持多种负载均衡策略。

(3)服务通信

SpringCloud中服务通信使用的组件是Netflix FeignSpringCloud RestTemplateFeign是基于Ribbon声明式RESTful服务调用组件,已于2020年停止维护RestTemplateSpringCloud自研的服务间RESTful通信模板对象。

(4)API服务网关

SpringCloud中服务网关使用的组件是Netflix ZuulSpringCloud GatewayZuul属于SpringCloud第一代网关,于2020年停止维护Gateway是SpringCloud自研的第二代网关,使用简单方便,功能更为强大。

(5)配置中心

SpringCloud中使用的配置中心组件是SpringCloud Config,属于SpringCloud 自研的配置中心组件,通过GitHub/Gitee统一托管微服务的应用配置文件。

(6)集中式日志管理

SpringCloud 中可以使用ELK进行日志统一管理,在SpringCloud中并未内置统一组件,如想实现此功能需自行搭建ELK集群实现。

(7)分布式链路追踪

SpringCloud中链路追踪组件使用的是SpringCloud Sleuth和Zipkin Server组件,Sleuth是SpringCloud分布式调用链路跟踪系统,用于产生链路数据。

(8)服务保护

SpringCloud中服务保护组件是Netflix Hystrix,属于容错管理工具,实现了断路器模式,通过控制服务节点从而对延迟和故障提供更强大的容错机制。

以上是SpringCloud的重要组成部分,还有很多组件没有提到,如果大家有兴趣可以自行去SpringCloud官网查看更多的组件及介绍。

从上述的描述中,我们可以发现一个问题,正是因为SpringCloud集众家之所长,导致它也受制于第三方厂商的掣肘,以Zuul为例,Netflix宣布停止维护,Spring机构不得不寻求其他的替代品或是自行研发。同时,SpringCloud作为国外的产品引入国内后,也出现了一些问题,比如SpringCloud Config默认将配置文件托管在GitHub仓库中,但国内的厂商并不喜欢这样做,他们更希望的是将配置文件存储在自己的数据库中。因此,阿里巴巴在原有的基础上结合多年的开源技术沉淀,设计了更符合国内需要的SpringCloud Alibaba

2、SpringCloud Alibaba实现微服务架构的具体组件

SpringCloud Alibaba是隶属于SpringCloud子项目,是国内微服务开发一站式解决方案,与原有的SpringCloud兼容的同时,对微服务生态进行扩展,通过添加少量的配置注解,便可实现更符合国人使用习惯的微服务架构。

SpringCloud Alibaba架构图

下面我们再一起来看看SpringCloud Alibaba依托哪些组件实现微服务架构:

(1)注册中心

SpringCloud Alibaba中使用Alibaba Nacos组件实现注册中心,Nacos提供了一组简单易用的特性集,可快速实现动态服务发现、服务配置、服务元数据及流量管理。

(2)负载均衡

SpringCloud Alibaba 使用Nacos服务端均衡实现负载均衡,与Ribbon在调用端负载不同,Nacos是在服务发现的同时利用负载均衡返回服务节点数据。

(3)服务通信

SpringCloud Alibaba 使用Netflix FeignAlibaba Dubbo组件来实现服务通行,前者与SpringCloud采用了相同的方案,后者则是对自家的RPC 框架Dubbo也给予支持,为服务间通信提供另一种选择。

(4)API服务网关

SpringCloud Alibaba 在API服务网关组件中,使用与SpringCloud相同的组件,即:SpringCloud Gateway

(5)配置中心

SpringCloud Alibaba在配置中心组件中使用Nacos内置配置中心,Nacos内置的配置中心,可将配置信息存储保存在指定数据库中。

(6)集中式日志管理

SpringCloud Alibaba在原有的ELK方案外,还可以使用**阿里云日志服务(LOG)**实现日志集中式管理。

(7)分布式链路追踪

SpringCloud Alibaba在分布式链路组件中采用与SpringCloud相同的方案,即:Sleuth/Zipkin Server

(8)系统保护

SpringCloud Alibaba使用Alibaba Sentinel实现系统保护,Sentinel不仅功能更强大,实现系统保护比Hystrix更优雅,而且还拥有更好的UI界面。

在以上核心组件的实现基础上,SpringCloud Alibaba还在其他方面提供了通用组件,来使得我们的微服务架构更健壮。以下简单介绍一下:

(1)消息队列

SpringCloud Alibaba在原有SpringCloud支持的MQ基础上,对自己的开源消息队列产品RocketMQ组件进行集成。提供了更多的选择。

(2)分布式事务

SpringCloud Alibaba 在分布式事务上采用 Alibaba Seata组件,Seata是阿里巴巴开源分布式事务中间件,内置AT、TCC和SAGA三种模式适用不同的分布式事务场景。

(3)任务调度

SpringCloud Alibaba 在任务调度上采用 Alibaba Cloud SchedulerX组件,SchedulerX是阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时任务调度服务。

(4)分布式存储

SpringCloud Alibaba在分布式存储上采用Alibaba Cloud OSS组件,OSS是阿里云对象存储服务,是阿里云提供海量、安全、低成本、高可靠的云存储服务。

将SpringCloud 和SpringCloud Alibaba各维度组件对比发现,SpringCloud Alibaba对服务注册,配置中心与负载均衡都整合进了Nacos,这样简化了微服务架构的复杂度,出问题的概率也会降低,原有的服务保护组件也调整成了Sentinel,相较于Hysterix更强大,使用也更友好。同时在实现核心组件基础上,依托阿里云的强大能力,提供了更多的新特性,很多复杂场景通过SpringCloud Alibaba结合阿里云便可轻松实现。

在后面的文章中,我们将基于SpringCloud Alibaba上述的各类组件进行逐一探讨,欢迎大家继续关注.

欢迎关注公众号:服务端技术精选。欢迎点赞、关注、转发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/425069.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis常用指令,jedis与持久化

1.redis常用指令 第一个是key的常用指令,第二个是数据库的常用指令 前面的那些指令都是针对某一个数据类型操作的,现在的都是对所有的操作的 1.key常用指令 key应该设计哪些操作 key是一个字符串,通过key获取redis中保存的数据 对于key…

GCN原理回顾论文导读

Cora_dataset description Cora数据集是一个常用的学术文献用网络数据集,用于研究学术文献分类和图网络分析等任务。 该数据集由机器学习领域的博士论文摘要组成,共计2708篇论文,涵盖了7个不同的学科领域。每篇论文都有一个唯一的ID&#xf…

c++之旅——第四弹

大家好啊,这里是c之旅第三弹,跟随我的步伐来开始这一篇的学习吧! 如果有知识性错误,欢迎各位指正!!一起加油!! 创作不易,希望大家多多支持哦! 本篇文章的主…

【css面试题】BFC

参考文章1 参考文章2 什么是BFC BFC全称是Block Formatting Context,意思就是块级格式化上下文。你可以把BFC看做一个容器,容器里边的元素不会影响到容器外部的元素。 BFC的特性 BFC是一个块级元素,块级元素在垂直方向上依次排列。 BFC是…

QT 网络编程 8

1 基础知识 udp tcp 2 UDP 框架 客户端: QUdpSocket x; qint64 writeDatagram( const char *data, qint64 size, const QHostAddress &address, quint16 port );服务器: void Server::initSocket(){udpSocket new QUdpSocket(this);udpSocket->bind(QHostAddress…

【Redis | 第七篇】Redis过期策略、内存淘汰策略

文章目录 7.Redis过期策略、内存淘汰策略7.1过期策略7.2内存淘汰策略 7.Redis过期策略、内存淘汰策略 7.1过期策略 我们在set key的时候,可以给它设置一个过期时间,比如expire key 60。指定这key60s后过期。 60s后,redis是如何处理的嘛&am…

性别和年龄的视频实时监测项目

注意:本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 ([www.aideeplearning.cn]) 性别和年龄检测 Python 项目 首先介绍性别和年龄检测的高级Python项目中使用的专业术语 什么是计算机视觉? 计算机视觉是使计算机能…

ER-NeRF实时对话数字人模型训练与部署

ER-NeRF是基于NeRF用于生成数字人的方法,可以达到实时生成的效果。 下载源码 cd D:\Projects\ git clone https://github.com/Fictionarry/ER-NeRF cd D:\Projects\ER-NeRF 下载模型 准备面部解析模型 wget https://github.com/YudongGuo/AD-NeRF/blob/master/…

如何预估系统的瓶颈

如何预估系统的瓶颈 1 CPU1.1 CPU和同吞吐量 2 内存3 磁盘IO4 网络宽带5 数据库服务器6 APP服务端 CPU 使用率、内存占用、网络流量、磁盘 IO等指标,异常或者持续高位的情况下,都可能是系统瓶颈的表现。 1 CPU CPU使用率正常在70%左右,如果…

力扣hot100:42.接雨水

一、从单个水柱本身考虑 下标为i的水柱能接的雨水,取决于它左边最高的水柱 和 右边最高的水柱的最小值(包括它本身)。 为了理解这一性质,我们可以这样想象:取出左边最高和最边最高的水柱,将其比作一个碗的边…

绘制一下包络线

clear clc close all % 生成衰减信号 % 生成衰减曲线带有随机信号 fs 50; % 采样率 t 0:1/fs:100; % 时间向量,总时长为5秒 frequency0.5; signal exp(-0.05* t).*sin(2*pi*frequency*t); % 衰减曲线带有随机信号 % 计算包络线 [upper_envelope, lower_…

基于springboot+vue的教师工作量管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

ImageGlass:重塑你的图片查看体验,探索视觉艺术

名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、什么是ImageGlass?①ImageGlass…

Python 编辑工具 Jupyter notebook

Jupyter notebook Jupyter Notebook是基于网页的用于交互计算的应用程序。其可被应用于全过程计算:开发、文档编写、运行代码和展示结果。——Jupyter Notebook官方介绍 官网:Project Jupyter | Home Jupyter Notebook 是一个开源的交互式计算环境&#…

数据结构——lesson5栈和队列详解

hellohello~这里是土土数据结构学习笔记🥳🥳 💥个人主页:大耳朵土土垚的博客 💥 所属专栏:数据结构学习笔记 💥对于顺序表链表有疑问的都可以在上面数据结构的专栏进行学习哦~感谢大家的观看与…

Java电梯模拟

Java电梯模拟 文章目录 Java电梯模拟前言一、UML类图二、代码三、测试 前言 此程序为单线程简单模拟电梯(初版),如果存在问题或者设计不合理的地方,请大家帮忙指出。 一、UML类图 二、代码 电梯调度器 package cn.xx.evevator;import java.util.*;pub…

【间说八股】面试官:我看你这里用到了模板模式?你能不能说一下什么是模板模式

模板模式 行为模式:这类模式负责对象间的高效沟通和职责委派。 模板方法模式是一种行为设计模式, 它在超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 模板方法模式是一种行为设计模式,其核心思想…

下载github项目到pycharm

一、下载git 1.下载git链接 https://git-scm.com/ 2.一路点击next,最后finish 二、使用git 1.安装成功后在开始菜单栏会找到如下内容,其中常用的是Git Bash 2.点击Git Bash 3.这里就可以克隆github上的代码了 点击复制,在命令行输入…

H264的打包,nal,es,pes,pts,dts,ps,ts

编码层次 视频编码层:预测、变换、量化、熵编码等操作slice层:将视频帧分割成若干个编码单元,包含一定数量的宏块,提高编解码的并行性和容错性。NAL层:提升对网络传输和数据存储的亲和性 视频编码层 基准-Baseline …

盘点实用又有意思的工具网站-搜嗖工具箱

生命倒计时 www.thismuchlonger.com 这是一个相哇塞的网站,可以让我们静下心来好好想想我们来这个世界究竟为了什么,因为当我们作为命运的主宰者。敲打键盘设定好自己一生长度的时候,我们的剩余寿命已经成绝对值,一旦生命变为了绝…