赠书福利丨微服务架构的基础框架选择:Spring Cloud还是Dubbo?
Posted 51CTO官微
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了赠书福利丨微服务架构的基础框架选择:Spring Cloud还是Dubbo?相关的知识,希望对你有一定的参考价值。
51CTO官微
技术资讯/行业精华/产品心得


近几年,微服务概念逐渐深入人心,Spring Cloud几乎成为被应用最多的微服务框架。它几乎实现了所有微服务的功能实践,而且又完美符合微服务的基础理论。
但关于Spring Cloud还是Dubbo的讨论一直没有停过。在开始之前我们先介绍几个概念,什么是微服务,它的特点是什么?
什么是微服务
微服务的概念源于 2014 年 3 月 Martin Fowler 所写的一篇文章“Microservices”。文中内容提到:微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。
每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。
另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。
微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
微服务架构优势
01
复杂度可控
在将应用分解的同时,规避了原本复杂度无止境的积累。每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。
由于体积小、复杂度低,每个微服务可由一个小规模开发团队完全掌控,易于保持高可维护性和开发效率。
02
独立部署
由于微服务具备独立的运行进程,所以每个微服务也可以独立部署。当某个微服务发生变更时无需编译、部署整个应用。
由微服务组成的应用相当于具备一系列可并行的发布流程,使得发布更加高效,同时降低对生产环境所造成的风险,最终缩短应用交付周期。
03
技术选型灵活
微服务架构下,技术选型是去中心化的。每个团队可以根据自身服务的需求和行业发展的现状,自由选择最适合的技术栈。
由于每个微服务相对简单,所以需要对技术栈进行升级时所面临的风险就较低,甚至完全重构一个微服务也是可行的。
04
容错
当某一组件发生故障时,在单一进程的传统架构下,故障很有可能在进程内扩散,形成应用全局性的不可用。
在微服务架构下,故障会被隔离在单个服务中。若设计良好,其他服务可通过重试、平稳退化等机制实现应用层面的容错。
05
扩展
单块架构应用也可以实现横向扩展,就是将整个应用完整的复制到不同的节点。当应用的不同组件在扩展需求上存在差异时,微服务架构便体现出其灵活性,因为每个服务可以根据实际需求独立进行扩展。
为什么选择使用 Spring Cloud 而放弃了 Dubbo
可能大家会问,为什么选择了使用 Dubbo 之后,又选择全面使用 Spring Cloud 呢?其中有如下四个原因:
01
从两个公司的背景来谈
Dubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于中国各互联网公司;Spring Cloud 是大名鼎鼎的 Spring 家族的产品。
阿里巴巴是一个商业公司,虽然也开源了很多的顶级的项目,但从整体战略上来讲,仍然是服务于自身的业务为主。
Spring 专注于企业级开源框架的研发,不论是在中国还是在世界上使用都非常广泛,开发出通用、开源、稳健的开源框架是他们的主业。
02
从社区活跃度这个角度来对比
Dubbo 虽然也是一个非常优秀的服务治理框架,并且在服务治理、灰度发布、流量分发这方面做的比 Spring Cloud 还好,除过当当网在此基础上增加了 rest 支持外,已有两年多的时间几乎没有任何更新了。
在使用过程中出现问题,开发者提交到 GitHub 的 Issue 也少有回复。相反 Spring Cloud 自从发展到现在,仍然在不断的高速发展。
从 GitHub 上提交代码的频度和发布版本的时间间隔就可以看出,现在 Spring Cloud 即将发布 2.0 版本,到了后期会更加完善和稳定。
03
从整个大的平台架构来讲
Dubbo 框架只是专注于服务之间的治理,如果我们需要使用配置中心、分布式跟踪这些内容都需要自己去集成,这样无形中增加了使用 Dubbo 的难度。
Spring Cloud 几乎考虑了服务治理的方方面面,更有 Spring Boot 这个大将的支持,开发起来非常的便利和简单。
04
从技术发展的角度来讲
Dubbo 刚出来的那会技术理念还是非常先进,解决了各大互联网公司服务治理的问题,中国的各中小公司也从中受益不少。
经过了这么多年的发展,互联网行业也是涌现了更多先进的技术和理念,Dubbo 一直停滞不前,自然有些掉队,有时候我个人也会感到有点可惜,如果 Dubbo 一直沿着当初的那个路线发展,并且延伸到周边,今天可能又是另一番景象了。
Spring 推出Spring Boot / Cloud 也是因为自身的很多原因。Spring 最初推崇的轻量级框架,随着不断的发展也越来越庞大,随着集成项目越来越多,配置文件也越来越混乱,慢慢的背离最初的理念。
随着这么多年的发展,微服务、分布式链路跟踪等更多新的技术理念的出现,Spring 急需一款框架来改善以前的开发模式,因此才会出现 Spring Boot / Cloud 项目。
我们现在访问 Spring 官网,会发现 Spring Boot 和 Spring Cloud 已经放到首页最重点突出的三个项目中的前两个,可见 Spring 对这两个框架的重视程度。
因此 Dubbo 曾经确实很牛逼,但是 Spring Cloud 是站在近些年技术发展之上进行的开发,因此可能更具技术代表性。
福利来啦
你觉得搭建一套微服务系统难点在哪?你的选择是 Spring Cloud 还是 Dubbo?欢迎底部留言探讨,小编将选出留言最精彩的6名网友,送出《Spring Cloud微服务架构开发实战》图书一本~活动截止时间 7 月 12 日24:00,特别鸣谢北京大学出版社为本次活动提供的图书赞助。等不及送书的小伙伴,可以点击阅读原文直接购买。
书籍简介
新。本书案例基于全新的 Spring Boot 2.0 及 Spring Cloud Finchley.M2,深入浅出地讲解了 Spring Cloud。
实战。跳脱纯理论讲述,案例贯穿全书,从 0 到 1 搭建微服务系统,从 1 到 0 实现微服务拆分。读者不仅能全面学到软件开发技能,还能学到项目实战经验。
全。弥补市面上有关 Spring Cloud 学习资料的不足,重新编写整个教学案例,使读者轻松脱离“Hello World”阶段,实现对微服务的治理。
以上是关于赠书福利丨微服务架构的基础框架选择:Spring Cloud还是Dubbo?的主要内容,如果未能解决你的问题,请参考以下文章
微服务架构的基础框架选择:Spring Cloud还是Dubbo?
微服务架构的基础框架选择:Spring Cloud还是Dubbo?