springcloud 技术栈(SpingCloud入门概述)
springcloud 技术栈(SpingCloud入门概述)Zookeeper服务注册中心目前成熟的互联网架构:应用服务化拆分 消息中间件DubboSpring
SpingCloud入门概述什么是SpringCloud
SpringCloud 是基于SpringBoot提供的一套微服务解决方案,包括服务注册与发现、配置中心、全链路监控、服务网关、负载均衡、熔断器等组件,除了基于Netflix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件
SpringCloud利用SpringBoot的开发便利,巧妙地简化了分布式系统基础设施开发,SpringCloud为开发人员提供了快速构建分布式系统的工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞赛、分布式会话等,他们都可以用SpringBoot的开发风格做到一键启动和部署
SpringBoot并没有重复造轮子,它只是将各公司开发的比较成熟,经得起考验的服务框架组合起来,通过springboot风格进行在封装,屏蔽掉了复杂的配置和实现原理,最终留给开发人员一套简单易懂,易部署和易维护的分部式系统开发工具包
SpringCloud 是分布式微服务构架下一站式解决方案,是各个微服务构架落地技术的集合体,俗称微服务全家桶
SpringCloud和SpringBoot的关系
- SpringBoot专注于快速方便的开发单个个体微服务
- SpringCloud是关注全局的微服务协调治理框架,它将SpringBoot开发的单体微服务整合并管理起来,为各个微服务之间提供:配置管理、服务发现、路由、微代理、事件总线…
- SpringBoot可以离开SpringCloud独立使用开发,但是SpringCloud离不开SpringBoot,属于依赖关系
- SpringBoot专注于快速、方便的开发单体应用,SpringCloud关注全局的服务治理框架
Dubbo和SpringCloud技术选型
分布式 服务治理Dubbo目前成熟的互联网架构:应用服务化拆分 消息中间件
Dubbo |
Spring | |
服务注册中心 |
Zookeeper |
SpringCloud Netflix Eureka |
服务调用方式 |
RPC |
REST API |
服务监控 |
Dubbo-Monitor |
SpringBoot Admin |
断路器 |
不完善 |
SpringCloud Netflix Hystrix |
服务网关 |
无 |
SpringCloud Netflix Zuul |
分布式配置 |
无 |
SpringCloud Config |
服务跟踪 |
无 |
SpringCloud Sleuth |
消息总线 |
无 |
SpringCloud Bus |
数据流 |
无 |
SpringCloud Stream |
批量任务 |
无 |
SpringCloud Task |
最大的区别:SpringCloud抛弃了Dubbo的RPC通信,采用基于HTTP的REST方式
严格的来说,这两种方式各有优劣,虽然从一定程度上说,后者牺牲了服务调用的性能,但也避免了上面提到的原生RPC带来的问题,而且REST相比RPC更加灵活,服务提供方和调用方只依靠一纸契约,不存在代码上的强依赖,这在强调快速演化的微服务环境下更加合适。
而且,SpringCloud比Dubbo更更加强大,涵盖面更广,而且作为Spring的拳头项目,它能够与Spring Framework、SpringBoot、SpringData、SpringBatch等其他Spring项目完美融合,这些对于微服务而言是至关重要的。使用Dubbo构建的微服务架构就像组装机,虽然各个环节自由度很高,但是如果其中一个环节出问题,对于小公司来说可能会很难解决,毕竟不是每个公司都有大牛和真实环境去测试;而SpringCloud就像是品牌机,在Spring Source整合下,做了大量的兼容测试,保证了机器拥有更高的稳定性,就算是一个初级,也能很快地完成编码
最为重要的是,Dubbo停更了5年之久,虽然在2017年重启,但是对于技术发展的新需求,需要由开发者自行拓展升级,这对于中小型公司想采用微服务架构明显不太合适,因为他们没有那么强大的技术能力去修改和测试源码
解决的问题领域不一样:Dubbo定位为一款RPC框架,SpringCloud的目标是微服务构架下的一站式解决方案
SpingCloud 能干啥
- 分布式/版本控制配置
- 服务注册与发现
- 路由
- 服务到服务的调用
- 负载均衡配置
- 断路器
- 分布式消息管理
- 全局锁
- …
SpringCloud版本选择
大版本说明
SpringBoot |
SpringCloud |
关系 |
1.2.x |
Angel版本(天使) |
兼容SpringBoot 1.2.x |
1.3.x |
Brixton版本(布里克斯顿) |
兼容SpringBoot1.3.x、1.4.x |
1.4.x |
Camden版本(卡姆登) |
兼容SpringBoot1.4.x、1.5.x |
1.5.x |
Dalston版本(多尔斯顿) |
兼容SpringBoot1.5.x,不兼容2.0.x |
1.5.x |
Edgware版本(艾奇韦尔) |
兼容SpringBoot1.5.x,不兼容2.0.x |
2.0.x |
Finchley版本(芬奇利) |
兼容SpringBoot2.0.x,不兼容1.5.x |
2.1.x |
Greenwich版本( 格林威治) | |
2.2.x/2.3.x |
Hoxton版本(霍斯顿) | |
2.4.x |
2020.0.x aka Ilford |