最详细说明spring cloud和Spring Cloud Alibaba的联系和区别
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
文章目录
1springCloud微服务概念
提起微服务不得不提 Spring Cloud 全家桶系列Spring Cloud 是一个服务治理平台是若干个框架的集合提供了全套的分布式系统解决方案。包含了服务注册与发现、配置中心、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列等等。
Spring Cloud 通过 Spring Boot 风格的封装屏蔽掉了复杂的配置和实现原理最终给开发者留出了一套简单易懂、容易部署的分布式系统开发工具包。开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。微服务是可以独立部署、水平扩展、独立访问或者有独立的数据库的服务单元Spring Cloud 就是这些微服务的大管家采用了微服务这种架构之后项目的数量会非常多Spring Cloud 做为大管家需要管理好这些微服务自然需要很多小弟来帮忙。
2springboot概念
spring boot并不是一个新的技术它是基于spring框架下对于“约定优于配置(Convention Over Configuration)”理念下的产物主要是帮助开发人员更容易更快速的创建独立运行和产品级别的基于spring框架的应用。为什么说springboot是微框架呢如果大家玩过springboot那应该很有体会我们只需要非常少的配置就可以快速构建一个web项目。
而spring boot中并没有新的技术如果大家对spring框架比较熟悉那么在学习springboot的时候会更加容易。
围绕springboot构建的spring cloud生态下目前有两类的比较成熟的实现一个是基于netflix、另一个是基于alibaba。
3Spring Cloud 一代
1springcloud介绍
我们通过对springboot的使用就知道spring从来不是重复造轮子而是对现有技术的封装和维护举个简单例子比如最早spring只提供了IOC和AOP的核心功能而像ORM框架、缓存、MVC框架spring只是提供了一种兼容以及支持所以当时大家说spring是万能胶可以把各种各样的框架整合进来。
同理springcloud也不是自己开发组件他也不是一个框架因为Spring Cloud的核心并没有实现服务注册、熔断、配置中心等功能它提供了一个标准规范。而Spring Cloud Netflix才是spring Cloud规范的一种实现。
2springcloud发展历史
Netflix是一家美国公司在美国、加拿大提供互联网随选流媒体播放定制DVD、蓝光光碟在线出租业务。该公司成立于1997年总部位于加利福尼亚州洛斯盖图1999年开始订阅服务。2009年该公司可提供多达10万部DVD电影并有1千万的订户。2007年2月25日Netflix宣布已经售出第10亿份DVD。HIS一份报告中表示2011年Netflix网络电影销量占据美国用户在线电影总销量的45%。
❞
针对多种 Netflix 组件提供的开发工具包其中包括 Eureka、Ribbon、Feign、Hystrix、Zuul、Archaius 等。
- Netflix Eureka一个基于 Rest 服务的服务治理组件包括服务注册中心、服务注册与服务发现机制的* 实现实现了云端负载均衡和中间层服务器的故障转移。
- Netflix Ribbon客户端负载均衡的服务调用组件。
- Netflix Hystrix容错管理工具实现断路器模式通过控制服务的节点从而对延迟和故障提供更强大的容错能力。
- Netflix Feign基于 Ribbon 和 Hystrix 的声明式服务调用组件。
- Netflix Zuul微服务网关提供动态路由访问过滤等服务。
- Netflix Archaius配置管理 API包含一系列配置管理 API提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。
Spring Cloud Netflix 生态到2020年archaus/hystrix/ribbon/zuul/turbine等starter都会进入维护模式进入维护模式意味着spring cloud团队不会再向这些模块中添加新的功能但是仍然会修复安全问题和一些block级别的bug。只是没有新的功能迭代了spring cloud netflix仍然可以继续使用。
进入维护模式的最根本原因还是Netflix对于zuul、ribbon等项目维护投入比较少、所以spring cloud 会在greenwich中把这些项目都进入到维护模式。
所以基本上现在如果构建新的微服务基本都以springcloud alibaba为基准
3springcloud常用组件
融合在每个微服务中、依赖其它组件并为其提供服务。
-
Netflix Ribbon客户端负载均衡特性有区域亲和、重试机制。
-
Netflix Hystrix客户端容错保护特性有服务降级、服务熔断、请求缓存、请求合并、依赖隔离。
-
Netflix Feign声明式服务调用本质上就是Ribbon+Hystrix
-
Stream消息驱动有Sink、Source、Processor三种通道特性有订阅发布、消费组、消息分区。
-
Bus消息总线配合Config仓库修改的一种Stream实现
-
Sleuth分布式服务追踪需要搞清楚TraceID和SpanID以及抽样如何与ELK整合。
独自启动不需要依赖其它组件单枪匹马都能干。
-
Netflix Eureka服务注册中心特性有失效剔除、服务保护。
-
DashboardHystrix仪表盘监控集群模式和单点模式其中集群模式需要收集器Turbine配合。
-
Netflix ZuulAPI服务网关功能有路由分发和过滤。
-
Config分布式配置中心支持本地仓库、SVN、Git、Jar包内配置等模式
4springcloud版本和常说的springcloudH版是什么意思
SpringCloud的版本关系 Spring Cloud 采用了英国伦敦地铁站的名称来命名并由地铁站名称字母A-Z依次类推的形式来发布迭代版本SpringCloud是一个由许多子项目组成的综合项目各子项目有不同的发布节奏。为了管理SpringCloud与各子项目的版本依赖关系发布了一个清单其中包括了某个SpringCloud版本对应的子项目版本。为了避免SpringCloud版本号与子项目版本号混淆SpringCloud版本采用了名称而非版本号的命名这些版本的名字采用了伦敦地铁站的名字根据字母表的顺序来对应版本时间顺序。例如Angel是第一个版本, Brixton是第二个版本。当SpringCloud的发布内容积累到临界点或者一个重大BUG被解决后会发布一个"service releases"版本简称SRX版本比如Greenwich.SR2就是SpringCloud发布的Greenwich版本的第2个SRX版本。
截止2022年最新版springcloud为H版本所以当我们再说springcloudH版是即指的就是springcloud
4SpringCloudAlibaba二代
1SpringCloudAlibaba介绍
SpringCloudAlibaba是阿里开发的一套微服务架构目前已经纳入spring中同Spring Cloud 一样Spring Cloud Alibaba 也是一套微服务解决方案包含开发分布式应用微服务的必需组件方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
SpringCloudAlibaba主要阿里为了推广自家的商业服务而开发的一套微服务架构再加上Netflix 停止了更新所以现在更多的公司选择使用阿里系列的整体服务
依托 Spring Cloud Alibaba您只需要添加一些注解和少量配置就可以将 Spring Cloud 应用接入阿里微服务解决方案通过阿里中间件来迅速搭建分布式应用系统。
这幅图是 Spring Cloud Alibaba 系列组件其中包含了阿里开源组件阿里云商业化组件以及集成 Spring Cloud 组件。
2常用组件
阿里开源组件
-
Nacos一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
-
GatewayAPI网关webflux编程模式
-
Sentinel把流量作为切入点从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
-
RocketMQ开源的分布式消息系统基于高可用分布式集群技术提供低延时的、高可靠的消息发布与订阅服务。
-
Dubbo这个就不用多说了在国内应用非常广泛的一款高性能 Java RPC 框架。
-
Seata阿里巴巴开源产品一个易于使用的高性能微服务分布式事务解决方案。
-
Arthas开源的Java动态追踪工具基于字节码增强技术功能非常强大。
阿里商业化组件
作为一家商业公司阿里巴巴推出 Spring Cloud Alibaba很大程度上市希望通过抢占开发者生态来帮助推广自家的云产品。所以在开源社区夹带了不少私货这部分组件我在阿里工作时都曾经使用过整体易用性和稳定性还是很高的。
-
Alibaba Cloud ACM一款在分布式架构环境中对应用配置进行集中管理和推送的应用配置中心产品。
-
Alibaba Cloud OSS阿里云对象存储服务Object Storage Service简称 OSS是阿里云提供的云存储服务。
-
Alibaba Cloud SchedulerX阿里中间件团队开发的一款分布式任务调度产品提供秒级、精准的定时基于 Cron 表达式任务调度服务。
5SpringCloud和SpringCloudAlibaba技术对比
名称 | SpringCloud | SpirngCloudAlibaba |
---|---|---|
注册中心 | Eureka、Consul | Nacos |
配置中心 | SpringCloud Config | Nacos |
网关 | SpringCloud Zull | SpringCloud Gateway |
负载均衡 | Ribbon | Loadbalabcer |
熔断降级 | Hystrix | Sentinel |
服务调用 | Feign | OpenFeign |
服务总线 | Bus | Nacos |
消息中间件 | 无(第三方替代方案rabbitmq) | RecketMQ |
分布式解决方案 | 无(第三方替代方案2pc) | Seata |
总结目前市面上的技术使用可以看到SpringCloudNetflix 的技术基本被SpringCloudAlibaba替代了