继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

姚半仙:Spring Cloud三派人马恩怨情仇录

Java架构师讲师团
关注TA
已关注
手记 80
粉丝 4586
获赞 2541

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

三大门派

有Spring Cloud的地方就有江湖,我们就来看一看在这个江湖中都有哪些独霸一方的门派!


http://img2.mukewang.com/5dc542100001e5b512800853.jpg


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像风一样的更新速度,我们是保持原地不动,还是随风向前不断“追新”。

·······················
更多精彩内容,欢迎关注课程:《Java架构师成长直通车》








打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP