第一代spring cloud 的组件
第一代实现: Spring Cloud Netflix
第二代Spring Cloud Alibaba主流时代
spring cloud 现在已经是一种标准了,各公司可以基于它的编程模型编写自己的组件 ,比如Netflix、阿里巴巴都有自己的一套通过spring cloud 编程模型开发的分布式服务组件 。Spring Cloud Alibaba 主要包含 Sentinel、Nacos、RocketMQ、Dubbo、Seata 等组件。
Spring Cloud 二代组件
第二代实现: Spring Cloud Alibaba.
Spring Cloud Alibaba 是阿里巴巴结合自身的微服务实践而推出的微服务开发的一站式解决方案,是 Spring Cloud 第二代实现的主要组成部分。Spring Cloud Alibaba 吸收了 Spring Cloud Netflix 的核心架构思想,并进行了高性能改进。自 Spring Cloud Netflix 进入停更维护后,Spring Cloud Alibaba 逐渐代替它成为主流的微服务框架。Spring Cloud Alibaba 是国内首个进入 Spring 社区的开源项目。2018 年 7 月,Spring Cloud Alibaba 正式开源,并进入 Spring Cloud 孵化器中孵化;2019 年 7 月,Spring Cloud 官方宣布 Spring Cloud Alibaba 毕业,并将仓库迁移到 Alibaba Github OSS 下。
Spring Cloud Alibaba核心技术栈
Spring Cloud Alibaba
Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。
Nacos
作为服务发现与配置中心,提供了一站式的分布式系统服务发现、配置管理以及动态配置推送等功能。
比如Nacos,Nacos(Dynamic Naming and Configuration Service)
是一个开源的、易于使用的平台,用于动态服务发现、配置管理和服务管理。Nacos
由阿里巴巴开发并开源,旨在帮助开发者更轻松地构建云原生应用。
Nacos 的用途
-
服务发现 :
Nacos
提供了服务注册和发现功能,帮助服务提供者和消费者之间进行动态的连接。 -
配置管理 :
Nacos
支持动态配置服务,允许应用在不重启的情况下更新配置,实现配置的热更新。 -
服务管理 :
Nacos
提供了服务元数据管理、流量管理和服务健康检查等功能。 -
动态 DNS 服务 :
Nacos
支持基于DNS
的服务发现,可以与Kubernetes
等容器编排平台集成。
Nacos 的优势
-
易于使用 :
Nacos
提供了简洁的API
和用户界面,使得服务注册、发现和配置管理变得简单易用。 -
动态配置 :
Nacos
支持配置的热更新,可以在不重启应用的情况下动态更新配置。 -
高可用性 :
Nacos
设计为高可用系统,支持集群部署,确保服务的稳定性和可靠性。 -
多环境支持 :
Nacos
支持多种环境(如开发、测试、生产)的配置管理和服务发现。 -
丰富的生态系统 :
Nacos 与Spring Cloud、Dubbo、Kubernetes
等云原生技术紧密集成,提供了丰富的生态系统。 -
社区支持:Nacos 是一个活跃的开源项目,拥有一个庞大的社区,提供了丰富的文档和示例。
Nacos 的缺点
-
学习曲线 :虽然
Nacos
提供了简洁的API和用户界面,但对于新手来说,仍然需要一定的学习时间来理解和掌握。 -
运维复杂性 :随着集群规模的扩大,
Nacos
的运维和管理可能会变得复杂,需要专业的知识和技能。 -
功能限制 :虽然
Nacos
提供了丰富的功能,但在某些高级特性(如复杂的流量管理)方面,可能不如一些商业服务发现和配置管理解决方案。 -
性能问题 :在高并发和大规模数据处理场景下,
Nacos
的性能可能会受到影响,需要进行优化和调整。
总的来说,Nacos
是一个功能丰富、易于使用的服务发现和配置管理平台,特别适合于云原生应用和微服务架构。然而,它也有一些缺点,包括学习曲线、运维复杂性和功能限制。
Sentinel
提供服务容错能力,包括流量控制、熔断降级、系统负载保护、热点key限流等多个维度的防护,保障微服务在异常情况下仍能稳定运行。
Sentinel(哨兵)是阿里巴巴开源的一个轻量级流量控制框架,主要用于保护系统稳定性和流畅性。它可以帮助您实现以下目标:
限制系统的QPS,防止系统过载;
提供实时的监控和告警功能;
提供熔断降级功能,防止系统雪崩;
提供系统负载均衡功能。
Sentinel 的特性
轻量级:Sentinel 的核心库只有200KB左右,对性能的影响非常小;
实时监控:Sentinel 可以实时监控系统的QPS、RT等信息,并提供实时告警功能;
多维度的流量控制:Sentinel 支持基于调用关系、资源、参数等多个维度的流量控制;
集群流量控制:Sentinel 支持集群限流,可以实现多台机器的统一流量控制;
熔断降级:Sentinel 提供了熔断降级功能,可以在服务不可用时自动降级,防止系统雪崩;
系统负载均衡:Sentinel 可以对系统的入口流量进行调度,实现系统的负载均衡。
Sentinel主要用于分布式系统的流量防卫,提供全方位的服务质量保障。
-
用途:Sentinel主要作为一个分布式系统的流量控制、熔断降级、系统保护、实时监控的解决方案。它能够有效地保护应用程序免受过量请求的冲击,防止系统过载,同时提供实时监控和报警功能,确保系统的稳定运行1。
-
优点:
- 功能丰富:Sentinel提供了流量控制、熔断降级、系统保护、实时监控等全方位的服务质量保障。
- 易于使用:Sentinel提供了友好的Web界面,方便进行规则的配置和管理。
- 高度可定制:Sentinel支持多种SPI扩展点,可以根据业务需求进行自定义扩展。
- 开源免费:Sentinel是完全开源的,可以免费使用。
-
缺点:
- 不支持语言多样性:Sentinel目前只支持Java应用,对于其他编程语言的应用不够友好。
- 文档略显简单:虽然Sentinel的文档比较全面,但在一些实践场景中仍然存在一些需要注意的坑点。
Sentinel通过提供流量控制、熔断降级等机制,帮助分布式系统在面对大量请求时能够更加稳定和可靠地运行。尽管它主要针对Java应用,但其提供的强大功能和易用性使其成为分布式系统保护的理想选择。然而,对于非Java应用开发者来说,可能需要寻找其他解决方案或进行额外的适配工作
RocketMQ
阿里巴巴开源的消息队列产品,用于处理高并发、高可用的消息传递,支持发布/订阅、顺序消息、事务消息等多种消息模型。
比如RocketMQ,RocketMQ
是一个开源的分布式消息传递和流处理平台,由阿里巴巴开发并贡献给Apache软件基金会
。它被设计为高吞吐量、高可用性、可扩展和低延迟的消息中间件,适用于大规模的分布式系统。
总的来说,RocketMQ
是一个高性能、高可用、可扩展的消息中间件,特别适合于需要高吞吐量和低延迟的大规模分布式系统。然而,它也有一些缺点,包括学习曲线、运维复杂性和社区支持。
RocketMQ 的用途
-
消息队列 :
RocketMQ
常用作异步通信的消息队列,支持发布/订阅和点对点消息模型。 -
流量削峰 :
RocketMQ
可以用于处理流量峰值,通过消息队列缓冲大量请求,避免系统过载。 -
数据同步 :
RocketMQ
可以用于不同系统之间的数据同步,确保数据一致性。 -
日志收集 :
RocketMQ
可以作为日志收集和处理的中间件,支持大规模日志数据的实时处理。 -
分布式事务 :
RocketMQ
支持分布式事务消息,可以用于实现跨多个服务的原子操作。
RocketMQ 的优势
-
高吞吐量 :
RocketMQ
设计为高性能消息中间件,能够处理每秒百万级的消息。 -
高可用性 :
RocketMQ
支持主从复制和故障转移,确保消息服务的持续可用性。 -
可扩展性 :
RocketMQ
支持水平扩展,可以通过添加更多的节点来增加处理能力。 -
低延迟 :
RocketMQ
提供了低延迟的消息传递,适合实时数据处理和分析。 -
丰富的消息模型 :
RocketMQ
支持多种消息模型,包括普通消息、顺序消息、延迟消息和事务消息。 -
灵活的部署 :
RocketMQ
支持多种部署方式,包括单机部署、集群部署和云原生部署。
RocketMQ 的缺点
-
学习曲线 :虽然
RocketMQ
提供了丰富的功能,但对于新手来说,仍然需要一定的学习时间来理解和掌握。 -
运维复杂性 :随着集群规模的扩大,
RocketMQ
的运维和管理可能会变得复杂,需要专业的知识和技能。 -
社区支持 :虽然
RocketMQ
是一个Apache
项目,但相比一些更成熟的消息中间件(如Kafka)
,其社区和生态系统可能相对较小。 -
功能限制 :在某些高级特性(如复杂的流处理和实时分析)方面,
RocketMQ
可能不如一些专门的流处理平台(如Apache Flink)
。
Dubbo
高性能、轻量级的RPC框架,使得服务间的通信更为高效,并提供了丰富的服务治理功能。
Dubbo核心功能
Remoting:远程通讯,提供对多种NIO框架抽象封装,包括"同步转异步"和"请求-响应"模式的信息交换方式。
Cluster: 服务框架,提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
Registry: 服务注册中心,基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。
Dubbo是一个高性能、轻量级的开源Java RPC框架,主要用于实现分布式系统中服务之间的远程调用。
Dubbo主要用途和优点包括:
- 高性能RPC实现:Dubbo支持面向接口的远程方法调用,通过高性能的RPC机制实现服务的输出和输入功能,能够有效地支持分布式系统中的服务调用1。
- 智能容错和负载均衡:Dubbo提供了智能容错和负载均衡功能,能够自动处理服务调用中的失败重试、负载均衡等,提高系统的可用性和性能1。
- 服务自动注册和发现:Dubbo支持服务的自动注册和发现,简化了服务治理的复杂性,使得服务提供者和消费者能够动态地注册和发现服务,提高了系统的可扩展性和灵活性1。
- 多种通信协议支持:Dubbo支持多种通信协议,包括官方推荐的Dubbo协议、RMI协议和Hessian协议等,用户可以根据实际需求选择最适合的通信方式2。
- 智能负载均衡算法:Dubbo提供了多种负载均衡算法,如随机算法、最少活跃调用算法和一致性哈希负载均衡算法等,能够根据服务提供者的性能和负载情况动态选择服务提供者,优化资源分配3。
Dubbo缺点和不足:
- 学习曲线较陡:Dubbo的文档相对较少,学习资源有限,对于新手来说可能需要一定的时间来熟悉和理解其工作原理及配置方法4。
- 生态系统相对较小:与Spring Cloud等框架相比,Dubbo的社区规模和生态系统相对较小,可能缺乏一些广泛的社区支持和更多的集成选项4。
- 大文件上传问题:在使用Dubbo协议进行大文件上传时,可能会遇到一些问题。虽然它提供了高性能的RPC实现,但在处理大文件上传时可能需要额外的注意和配置2。
综上所述,Dubbo作为一个高性能的Java RPC框架,适用于需要高性能远程服务调用的分布式系统。尽管存在一些缺点,但通过合理的配置和使用,可以充分发挥其优势,满足大多数分布式系统的需求
Seata
分布式事务解决方案,旨在解决分布式环境下的事务一致性问题,支持AT、TCC、Saga等模式。
- TM向TC申请开启一个全局事务,全局事务创建成功并生成一个全局唯一的XID
- XID在微服务调用链路的上下文中传播
- RM向TC注册分支事务,将其纳入XID对应全局事务的管辖
- TM向TC发起针对XID的全局提交或回滚决议
- TC调度XID下管辖的全部分支事务完成提交或回滚请求
比如Seata等,用于解决分布式系统中的事务一致性问题。
Seata 是一个开源的分布式事务解决方案,旨在提供高性能和易于使用的分布式事务服务。它主要用于解决微服务架构中的分布式事务问题,确保在多个服务或数据库之间的事务一致性。
Seata 的用途
-
分布式事务管理:Seata 提供了一套完整的分布式事务管理机制,包括全局事务的协调、分支事务的执行和回滚等。
-
微服务架构:在微服务架构中,不同的服务可能使用不同的数据库,Seata 可以帮助这些服务之间保持数据一致性。
-
数据库事务:Seata 支持多种数据库,可以与各种数据库事务集成,确保跨数据库的事务一致性。
Seata 的优势
-
高性能 :
Seata
设计了高效的协议和算法,以确保在分布式环境中的高性能和低延迟。 -
易于使用 :
Seata
提供了简单易用的API和配置,使得开发者可以轻松地集成和使用分布式事务功能。 -
灵活性 :
Seata
支持多种事务模式,包括AT、TCC、Saga
和XA
模式,可以根据不同的业务场景选择合适的事务模式。 -
可扩展性:Seata 的设计考虑了可扩展性,可以方便地集成到现有的微服务架构中,并且支持水平扩展。
-
社区支持:Seata 是一个活跃的开源项目,拥有一个庞大的社区,提供了丰富的文档和示例,便于开发者学习和使用。
Seata 的缺点
-
复杂性 :分布式事务本身就是一个复杂的问题,
Seata
虽然简化了开发过程,但仍然需要开发者理解分布式事务的原理和Seata
的工作机制。 -
性能开销 :尽管
Seata
设计了高效的协议和算法,但分布式事务的协调和通信仍然会带来一定的性能开销。 -
依赖性 :
Seata
需要依赖于其他组件(如注册中心、配置中心等),这增加了系统的复杂性和维护成本。 -
学习曲线 :对于新手来说,
Seata
的学习曲线可能比较陡峭,需要花费一定的时间和精力来理解和掌握。
总的来说,Seata
是一个强大的分布式事务解决方案,它提供了高性能和易于使用的特性,但也带来了一定的复杂性和性能开销。在选择使用 Seata
时,需要根据具体的业务场景和需求进行权衡。
Higress
Higress是基于阿里内部的Envoy Gateway实践沉淀、以开源Istio + Envoy为核心构建的下一代云原生网关,实现了流量网关 + 微服务网关 + 安全网关三合一的高集成能力,深度集成Dubbo、Nacos、Sentinel等微服务技术栈,能够帮助用户极大的降低网关的部署及运维成本且能力不打折;在标准上全面支持Ingress与Gateway API,积极拥抱云原生下的标准API规范;同时,Higress Controller也支持Nginx Ingress平滑迁移,帮助用户零成本快速迁移到Higress。
它的创建源于阿里内部的"本地生活战役",该战役始于"支付宝2020合作伙伴大会",在这次大会上,支付宝宣布升级为数字生活开放平台。这个战役的核心技术目标,是实现阿里巴巴业务域与蚂蚁业务域之间RPC直接调用,但由于两个业务域的网络是隔离的,所以需要利用网关来解决此问题。
Higress优点:
- 集成了流量网关、微服务网关和安全网关的功能,降低了资源开销。
- 提供了流量调度、服务治理和安全防护等能力。
- 深度集成了Dubbo、Nacos、Sentinel等技术,具有易使用、易扩展的特点。
- 支持高集成和热更新的功能。
Higress缺点:
- 在实现节省资源成本、提高安全性、可靠性、易用性和可扩展性的同时,也可能带来一些性能开销。
- 目前还在持续迭代发展中,可能会有一些新的问题和未知的风险。
总的来说,Higress在实现节省资源成本、提高安全性、可靠性、易用性和可扩展性的同时,也存在一些性能开销和未知风险的问题。用户可以根据自身需求和实际情况进行选择和使用
Alibaba Cloud SMS
覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。
Alibaba Cloud OSS
阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
Alibaba Cloud SchedulerX
阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。
Alibaba Cloud SchedulerX是一个分布式任务调度服务,旨在帮助用户轻松地创建、执行和监控定时任务。 它具有以下优点和缺点:
Alibaba Cloud SchedulerX优点:
- 高性能:支持秒级别调度和轻量级分布式计算,能够助力完成准实时的大数据跑批。
- 高可用性:采用高可用架构和任务多备份机制,保障机房宕机时调度任务不受影响。
- 安全防护:提供多层次安全防护,支持HTTPS和VPC访问,有效防止恶意攻击。
- 多租户隔离机制:支持多地域、命名空间和应用级别的隔离,提供权限管控。
- 报警监控:支持多种报警类型和方式,帮助排查并解决业务风险。
- 可视化配置:通过图形化界面进行任务配置和管理,简化操作流程。
- 多种任务类型支持:支持Java、Shell、Python、Go、HTTP等多种任务类型。
- 成本效益:无机器和人工运维成本,降低企业成本,同时提供基础版和专业版以满足不同需求。
Alibaba Cloud SchedulerX缺点:
- 特定于阿里云:主要适用于阿里云用户,对于非阿里云用户可能不太适用。
- 可能的学习曲线:对于初次使用者来说,可能需要一些时间来熟悉其操作界面和功能。
综上所述,Alibaba Cloud SchedulerX是一个功能强大且高效的分布式任务调度服务,特别适合需要高性能、高可用性和安全防护的企业用户。尽管它可能存在一些使用上的学习曲线,但其提供的多种优点使其成为值得考虑的解决方案