微服务架构的基础框架选择_第1页
微服务架构的基础框架选择_第2页
微服务架构的基础框架选择_第3页
微服务架构的基础框架选择_第4页
微服务架构的基础框架选择_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微服务架构的基础框架选择 Spring Cloud 还是 Dubbo 最近一段时间不论互联网还是传统行业 凡是涉及信息技术范畴的圈子几乎都在讨论微服务架构 第一次 实施微服务架构时 我们应该选择哪个基础框架更好呢 RoundRound 1 1 背景 背景 Dubbo 是阿里巴巴服务化治理的核心框架 并被广泛应用于阿里巴巴集团的各成员站点 阿里巴巴近几年对开源社区的贡献不论在国内还是国外都是引人注目的 比如 JStorm 捐 赠给 Apache 并加入 Apache 基金会等 为中国互联网人争足了面子 使得阿里巴巴在国 人眼里已经从电商升级为一家科技公司了 Spring Cloud 从命名我们就可以知道 它是 Spring Source 的产物 Spring 社区的强大背 书可以说是 Java 企业界最有影响力的组织了 除了 Spring Source 之外 还有 Pivotal 和 Netfix 是其强大的后盾与技术输出 其中 Netflix 开源的整套微服务架构套件是 Spring Cloud 的核心 小结 如果拿 Dubbo 与 Netflix 套件做对比 前者在国内影响力较大 后者在国外影响力 较大 我认为在背景上可以打个平手 但是若要与 Spring Cloud 做对比 由于 Spring Source 的加入 在背书上 Spring Cloud 略胜一筹 不过 英雄不问出处 在背景这一点 上 不能作为选择框架的主要因素 当您一筹莫展的时候 可以作为参考依据 RoundRound 2 2 社区活跃度 社区活跃度 我们选择一个开源框架 社区的活跃度是我们极为关注的一个要点 社区越活跃 解决问题 的速度越快 框架也会越来越完善 不然当我们碰到问题 就不得不自己解决 而对于团队 来说 也就意味着我们不得不自己去维护框架的源码 这对于团队来说也将会是一个很大的 负担 下面看看这两个项目在 github 上的更新时间 Dubbo 最后更新时间为 2016 年 5 月 6 日 Spring Cloud 最后更新时间为 12 分钟前 可以看到 Dubbo 的更新已经是几个月前 并且更新频率很低 而 Spring Cloud 的更新是 12 分钟前 仍处于高速迭代的阶段 小结 小结 在社区活跃度上 Spring Cloud 毋庸置疑的优于 Dubbo 这对于没有大量精力与财 力维护这部分开源内容的团队来说 Spring Cloud 会是更优的选择 RoundRound 3 3 架构完整度 架构完整度 或许很多人会说 Spring Cloud 和 Dubbo 的对比有点不公平 Dubbo 只是实现了服务治理 而 Spring Cloud 下面有 17 个子项目 可能还会新增 分别覆盖了微服务架构下的方方面 面 服务治理只是其中的一个方面 一定程度来说 Dubbo 只是 Spring Cloud Netflix 中的 一个子集 但是在选择框架上 方案完整度恰恰是一个需要重点关注的内容 根据 Martin Fowler 对微服务架构的描述中 虽然该架构相较于单体架构有模块化解耦 可 独立部署 技术多样性等诸多优点 但是由于分布式环境下解耦 也带出了不少测试与运维 复杂度 根据微服务架构在各方面的要素 看看 Spring Cloud 和 Dubbo 都提供了哪些支持 以上列举了一些核心部件 大致可以理解为什么之前说 Dubbo 只是类似 Netflix 的一个子 集了吧 当然这里需要申明一点 Dubbo 对于上表中总结为 无 的组件不代表不能实现 而 只是 Dubbo 框架自身不提供 需要另外整合以实现对应的功能 比如 分布式配置 可以使用淘宝的 diamond 百度的 disconf 来实现分布式配置管理 但是 Spring Cloud 中的 Config 组件除了提供配置管理之外 由于其存储可以使用 git 因此它 天然的实现了配置内容的版本管理 可以完美的与应用版本管理整合起来 服务跟踪 可以使用京东开源的 Hydra 批量任务 可以使用当当开源的 Elastic Job 虽然 Dubbo 自身只是实现了服务治理的基础 其他为保证集群安全 可维护 可测试等特 性方面都没有很好的实现 但是几乎大部分关键组件都能找到第三方开源来实现 这些组件 主要来自于国内各家大型互联网企业的开源产品 RPC vs REST 另外 由于 Dubbo 是基础框架 其实现的内容对于我们实施微服务架构是否合理 也需要 我们根据自身需求去考虑是否要修改 比如 Dubbo 的服务调用是通过 RPC 实现的 但是 如果仔细拜读过 Martin Fowler 的 Microservices 一文 其定义的服务间通信是 HTTP 协议 的 REST API 那么这两种有何区别呢 先来说说 使用 Dubbo 的 RPC 来实现服务间调用的一些痛点 服务提供方与调用方接口依赖方式太强 我们为每个微服务定义了各自的 service 抽象接口 并通过持续集成发布到私有仓库中 调用方应用对微服务提供的抽象接口存在强依赖关系 因此不论开发 测试 集成环境都需要严格的管理版本依赖 才不会出现服务方与调用方的 不一致导致应用无法编译成功等一系列问题 以及这也会直接影响本地开发的环境要求 往 往一个依赖很多服务的上层应用 每天都要更新很多代码并 install 之后才能进行后续的开发 若没有严格的版本管理制度或开发一些自动化工具 这样的依赖关系会成为开发团队的一大 噩梦 而 REST 接口相比 RPC 更为轻量化 服务提供方和调用方的依赖只是依靠一纸契 约 不存在代码级别的强依赖 当然 REST 接口也有痛点 因为接口定义过轻 很容易导 致定义文档与实际实现不一致导致服务集成时的问题 但是该问题很好解决 只需要通过每 个服务整合 swagger 让每个服务的代码与文档一体化 就能解决 所以在分布式环境下 REST 方式的服务依赖要比 RPC 方式的依赖更为灵活 服务对平台敏感 难以简单复用 通常我们在提供对外服务时 都会以 REST 的方式提供 出去 这样可以实现跨平台的特点 任何一个语言的调用方都可以根据接口定义来实现 那 么在 Dubbo 中我们要提供 REST 接口时 不得不实现一层代理 用来将 RPC 接口转换 成 REST 接口进行对外发布 若我们每个服务本身就以 REST 接口方式存在 当要对外提 供服务时 主要在 API 网关中配置映射关系和权限控制就可实现服务的复用了 相信这些痛点也是为什么当当网在 dubbox 基于 Dubbo 的开源扩展 中增加了对 REST 支持的原因之一 小结 小结 Dubbo 实现了服务治理的基础 但是要完成一个完备的微服务架构 还需要在各环节 去扩展和完善以保证集群的健康 以减轻开发 测试以及运维各个环节上增加出来的压力 这样才能让各环节人员真正的专注于业务逻辑 而 Spring Cloud 依然发扬了 Spring Source 整合一切的作风 以标准化的姿态将一些微服务架构的成熟产品与框架揉为一体 并继承了 Spring Boot 简单配置 快速开发 轻松部署的特点 让原本复杂的架构工作变得 相对容易上手一些 所以 如果选择 Dubbo 请务必在各个环节做好整套解决方案的准备 不然很可能随着服务数量的增长 整个团队都将疲于应付各种架构上不足引起的困难 而如 果选择 Spring Cloud 相对来说每个环节都已经有了对应的组件支持 可能有些也不一定能 满足你所有的需求 但是其活跃的社区与高速的迭代进度也会是你可以依靠的强大后盾 RoundRound 4 4 文档质量 文档质量 Dubbo 的文档可以说在国内开源框架中算是一流的 非常全 并且讲解的也非常深入 由于 版本已经稳定不再更新 所以也不太会出现不一致的情况 另外提供了中文与英文两种版本 对于国内开发者来说 阅读起来更加容易上手 这也是 dubbo 在国内更火一些的原因吧 Spring Cloud 由于整合了大量组件 文档在体量上自然要比 dubbo 多很多 文档内容上还 算简洁清楚 但是更多的是偏向整合 更深入的使用方法还是需要查看其整合组件的详细文 档 另外由于 Spring Cloud 基于 Spring Boot 很多例子相较于传统 Spring 应用要简单很 多 因为自动化配置 很多内容都成了约定的默认配置 这对于刚接触的开发者可能会有 些不适应 比较建议了解和学习 Spring Boot 之后再使用 Spring Cloud 不然可能会出现很 多一知半解的情况 小结 小结 虽然 Spring Cloud 的文档量大 但是如果使用 Dubbo 去整合其他第三方组件 实 际也是要去阅读大量第三方组件文档的 所以在文档量上 我觉得区别不大 对于文档质量 由于 Spring Cloud 的迭代很快 难免会出现不一致的情况 所以在质量上我认为 Dubbo 更好一些 而对于文档语言上 Dubbo 自然对国内开发团队来说更有优势 总结总结 通过上面再几个环节上的分析 相信大家对 Dubbo 和 Spring Cloud 有了一个初步的了解 就我个人对这两个框架的使用经验和理解 打个不恰当的比喻 使用 Dubbo 构建的微服务 架构就像组装电脑 各环节我们的选择自由度很高 但是最终结果很有可能因为一条内存质 量不行就点不亮了 总是让人不怎么放心 但

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论