上一节我们队Spring Cloud里的各个组件做了简单的介绍,大家有所不知,看着Spring Cloud大家庭其乐融融,可是这里头有三股势力在暗地里较劲呢。

三大门派

有Spring Cloud的地方就有江湖,我们就来看一看在这个江湖中都有哪些独霸一方的门派!
SpringCloud核心组件介绍 (Netflix + Alibaba套件) - 图1

Netflix

是先有Spring Cloud还是先有Netflix?这是一个好问题。Netflix是一家大名鼎鼎的互联网传媒公司,但为什么它在开源软件领域有这么大的名声呢?这就不得不说起它和Spring Cloud的渊源了。
很久很久以前,天和地还没有分开,宇宙混沌一片。有个叫Netflix的公司,在这混沌之中,拿自身的业务动手,开启了一段微服务的改造之旅。在这段漫长的过程中,沉淀出了一系列优秀的微服务组件,比如大名鼎鼎的Eureka,Hystrix,Zuul等等,这些组件经过Pivotal的一系列封装以后就构成了初代目Spring Cloud。
目前Spring Cloud Netflix组件库是Spring Cloud中最受欢迎的项目,并且还拥有最广泛的群众基础,这么说吧,10个用Spring Cloud的公司,有八九个都会选用Netflix组件库全家桶来构建自己的技术栈。听到这,同学们可能会问,难道Spring Cloud里还有其他的组件库吗?那我们就往下看。

阿里巴巴

阿里近些年开源的步子迈的很大,都说步子迈得大容易扯着裆,不过凭借阿里996+鸡血文化的加持,用互联网行业特有的糙快猛的精神,近几年在开源软件上不断开疆扩土,发展速度和规模都是是可圈可点。
目前开源领域一大热门当属Spring Cloud,尽管前面有Netflix组件库占尽天时地利,可是不妨碍阿里巴巴集团一贯怼天怼地的做派。这不,Spring Cloud大家族中又添新丁,那就是–Spring Cloud Alibaba组件库。
从目前的势头来看,Alibaba组件库还是呈现一路高歌猛进的态势,其中多款组件已经站上擂台和Netflix组件展开直接竞争。得益于阿里集团的福报文化,加班不要命的码农们给这些组件添加了各种业务功能,从我个人使用这两个组件的感受来说,Netflix组件相对来说比较“纯粹和纯净”,Alibaba组件似乎透出一股“KPI导向”的味道(恨不得把能想到的功能全塞进去)。本章课程我们将以Netflix组件为主,同时也会重点介绍几个Alibaba组件库的组件。

Spring Open Source

这最后一股势力就是Spring自个儿了,由Spring自己独家挂牌的开源组件,可以说是“原配”组件了。都说原配的才是最好的,不过在上面两个重量级组件库面前还真不好说。同学们经常会看到这样一个情况,在某个领域中这三家的组件会扎堆出现。比如服务治理,这三家各自都有一个独立组件,想想大家都是Spring Cloud一家子,为何还整出了一副三足鼎立的态势呢?这背后都有很多故事的,我们在后面进入实战课程之后再来跟大家说说这里面的恩怨情仇。

势力范围

那接下来我们就看一看上面那三股势力都在哪些领域部署了兵力

应用领域名称 Netflix组件 Alibaba组件 Spring或其他开源厂商
服务治理 Eureka Nacos,Dubbo(RPC框架) Consul
负载均衡 Ribbon spring-cloud-loadbalancer
服务调用 Feign(后划归为openfeign)
服务容错 Hystrix + Turbine + Dashboard Sentinel
限流 Sentinel Gateway支持网关层限流
服务网关 Zuul Gateway
配置管理 Archaius Alibaba Cloud ACM Config
消息总线 Bus
调用链路追踪 Sleuth
消息驱动组件 RocketMQ(Java写的消息中间件) Stream(对接Kafka,RabbitMQ)
任务调度 Alibaba Cloud SchedulerX spring-cloud-task
其他 Sidecar(跨语言) Seata(分布式事物), SMS(短信服务)

从上面的表格中可以看出,在大多数的领域当中,我们都有多与一种的解决方案,而且各个组织在不同领域发力程度也不一样。我们在实际的研发当中不会只盯着一个组件库用,而是结合使用来自不同组织开发的组件,这样才能发挥Spring Cloud的最强功力。
同学们可能注意到了,阿里巴巴组件库传达出了一股不小的野心,它的很多的组件都和阿里云(Alibaba Cloud)紧密关联了起来,甚至连Nacos都有一股“强推Dubbo”的味道,看上去像是在大力推广阿里集团自己的技术栈,似乎并不打算全心全意服务于Spring Cloud原生的生态体系。所以从我个人角度来说,并不太喜欢这种比较“功利”和KPI导向的价值观。

小结

本节我们对Spring Cloud里的几大势力做了一番介绍,并且了解了在不同的业务领域都有哪些可供我们选择的组件。在下一小节里,我将跟大家聊一聊如何看待Spring Cloud像风一样的更新速度,我们是保持原地不动,还是随风向前不断“追新”。