SpringCloud Alibaba入门到实战 ( 一 ) 什么是微服务,为什么会有SpringCloud Alibaba?

1.什么是微服务?

微服务的理论本文不做过多介绍,只做一个总结;微服务是一种架构模式,它提倡将一个应用程序划分为一组小的服务,每个服务可以使用不同的语言、数据库、缓存。服务都运行在其独立的进程中,使用轻量级通信机制互相协作(通常是基于Http协议的Restful API);服务之间互相协调、互相配合、并且能够独立部署;为用户提供给服务。更加具体的介绍可以阅读:一文详解微服务架构(作者:古霜卡比)

2.Spring Cloud

2.1 Spring Cloud介绍

微服务架构的实现,有许多的技术要点:服务注册与发现、配置中心、服务调用、负载均衡、链路追踪、服务网关、服务监控等。如果你的能力足够强,完全可以自己实现这些功能并封装成组件;但现实中,没有人会去从零实现这些组件,工作量太大;也难免出现bug,而Spring Cloud就是spring第三方软件厂商;封装了微服务架构中会用到的所有组件,是分布式微服务架构的一站式解决方案(微服务全家桶);我们就可以直接用Spring Cloud很方便的实现微服务;Spring Cloud已经成为微服务开发的主流技术栈,在国内也非常火爆。

2.2 版本选择

Spring Cloud是一套分布式微服务架构的解决方案,包含了许多技术和框架;换句话说Spring Cloud的整体实现是依赖了许多外部的组件或技术框架;其中就有我们最熟悉的Spring Boot。

是的 Spring Cloud也是依赖于Spring Boot实现的。

但是,Spring Boot有自己的发行版本Spring Cloud也有自己的发行版本;两者版本的选择也是有讲究的,那可不选乱选的。

截止 2021年7月14日
Spring Boot当前最新的稳定版本是2.5.2

Spring Cloud的最新的稳定版本是 2020.3

小插曲: 在2020.3版本之前,Spring Cloud,一直用的是伦敦地铁站名称按字母顺序迭代版本,比如:Angel(A版)、Brixton(B版)、Camden(C版)等;但在Hoxton(H版)之后,Spring Cloud开始使用时间来作为版本号了。

Spring Cloud依赖于Spring Boot,那我用最新的Spring Boot-2.5.2和最近的Spring Cloud-2020.3是不是就可以了?答案是否定的,Spring Cloud和Spring Boot是两个独立的项目;两者内部的依赖或版本可能存在冲突,因此版本的选择需要按照spring官方提供的文档来做选择。

如上图,为Spring Cloud 和 Spring Boot的版本对照表,如果你使用Spring Cloud-2020.0.x;那么就要依赖Spring Boot 2.4.x或2.5.x;而如果你选择Spring Cloud-Hoxton;那么对应的Spring Boot版本为2.2.x或2.3.x

假如我选择Spring Cloud-2020.0.3,那么Spring Boot应该选择-2.5.1还是2.5.2或者其它版本呢?对此,spring官方也给了参考资料

https://start.spring.io/actuator/info

spring 官方清楚的告诉我们如果使用Spring Cloud 2020.0.3那么Spring Boot的版本应该是2.4.1 和 2.5.3-SNAPSHOT之间

在spring官方提供的Spring-Boot版本范围内,如果你不知道选哪个版本,可以直接看Spring-Cloud该版本的详细信息,如下图;Spring-Cloud-2020.3推荐我们使用Spring-Boot-2.4.6。

3.停更 & SpringCloud Alibaba

Spring Cloud 本身其实只是一套微服务规范,如无特指,我们一般提到 Spring Cloud 都指的是Spring Cloud Netflix,而Spring Cloud Netflix 和Spring Cloud alibaba是为开发者提供了这套规范的实现方式。因为Netflix(奈飞公司)是最先实现微服务架构的组件并开源,因此一般提到Spring Cloud默认就是指Spring Cloud Netflix

Spring Cloud Netflix中包含了许多组件;比如:服务注册中心(Eureka)负载均衡(Ribben)服务调用(fengin)服务调用(fengin)服务限流熔断(Hystrix)等等这些组件大部分都不是spring从零开始编写的,都是奈飞公司(美国的优爱腾)发布的开源产品;但是 2018年12月12日进入维护模式(Maintenance Mode),也就是说可以继续使用但是不再添加新的组件和功能;所以不太适合长期使用,因此我们国内的阿里巴巴借鉴了它的设计思想推出了SpringCloud Alibaba,阿里保留了优秀的组件,也添加了许多新的组件,更加适合国内的环境,例如:

3.1 服务注册中心

  • 原来
    • Eureka 奈飞的开源组件,已停更
  • 替代品:
      1. Zookeeper:如果项目中之前就有在用zookeeper那么可以继续使用zookeeper来作为服务注册中心
      1. Nacos(推荐使用); 阿里的开源产品,借鉴了Config和Eureka的设计思想,后来居上;可以做服务注册中心也可以做服务配置中心,可靠性和性能也不错。

3.5 服务配置中心

  • 原来
    • Config: 奈飞的开源组件,已停更
  • 现在
    • Nacos:阿里的开源组件,借鉴了Config和Eureka的设计思想,后来居上;可以做服务注册中心也可以做服务配置中心,可靠性和性能也不错。

3.2 负载均衡

  • 现在
    • Ribbon : 奈飞的开源组件,已停更;但是还可以用
  • 未来
    • LoadBalancer : spring官方发行的服务调用组件,但目前还不成熟,世面上用的不多;但未来会替换Ribbon。

3.3 服务调用

  • 原来
    • Feign : 奈飞的开源组件,已停更
  • 替代品
    • openFeign : Spring发布的服务调用产品

3.4 服务降级

  • 原来
    • Hystrix: 奈飞的开源组件,已停更
  • 现在
    • Sentinel:阿里巴巴的开源产品,服务降级、熔断、限流

3.5 服务网关

  • 原来
    • Zuul: 奈飞的开源组件,不成熟
  • 现在
    • gateway:Spring开发的服务网关

3.6 调用链路监控

  • Sleuth 调用链路监控

3.7 分布式事务

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

这些组件的详细介绍和使用,后文都会一一详解。

4.SpringCloud Alibaba

4.1 文档

https://hub.fastgit.org/alibaba/spring-cloud-alibaba/blob/master/README-zh.md

目前最新版是2.2.6 (2021年7月14日) 本系列文章使用此版本作为演示

本人能力有限,本文只是我个人的技术分享。如有错误或不实之处;恳请大家不吝赐教。可以在公众号留言讨论;本人定虚心学习。

如果这个篇文章帮到你,可以帮我点个赞吗或者点个关注,这将激励着我继续分享我的技术所得

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值