2019独角兽企业重金招聘Python工程师标准>>>

一般初期公司需要面对非常复杂的业务场景,而且随着业务的发展,变化的可能性非常高。所以在微服务架构设计之初,我们就期望我们的微服务体系能:

  • 不绑定到特定的框架、语言
  • 服务最好是Restful风格
  • 足够简单,容易落地,将来能扩展
  • 和Docker相容性好

目前常见的微服务相关框架:

  • Dubbo、DubboX
  • Spring Cloud
  • Motan
  • Thrift、gRPC

这些常见的框架中,Dubbo几乎是唯一能被称作全栈微服务框架的“框架”,它包含了微服务所需的几乎所有内容,而DubboX作为它的增强,增加了REST支持。

它优点很多,例如:

  • 全栈,服务治理的所有问题几乎都有现成答案
  • 可靠,经过阿里实践检验的产品
  • 实践多,社区有许多成功应用Dubbo的经验

不过遗憾的是:

  • 已经停止维护
  • 不利于裁剪使用
  • “过于Java”,与其他语言相容性一般

Motan是微博平台微服务框架,承载了微博平台千亿次调用业务。

优点是:

  • 性能好,源自于微博对高并发和实时性的要求
  • 模块化,结构简单,易于使用
  • 与其他语言相容性好

不过:

  • 为“短平快”业务而生,即业务简单,追求高性能高并发。

Apache Thrift、gRPC等虽然优秀,并不能算作微服务框架,自身并不包括服务发现等必要特性。

如果说微服务少不了Java,那么一定少不了Spring,如果说少不了Spring,那么微服务“官配”Spring Cloud当然是值得斟酌的选择。

优点:

  • “不做生产者,只做搬运工”
  • 简单方便,几乎零配置
  • 模块化,松散耦合,按需取用
  • 社区背靠Spring大树

不足:

  • 轻量并非全栈
  • 没解决RPC的问题
  • 实践案例少

根据我们的目标,我们最终选择了Spring Cloud作为我们的微服务框架,原因有4点:

  1. 虽然Dubbo基础设施更加完善,但结构复杂,我们很难吃得下,容易出坑
  2. 基于 Apache Thrift 和 gRPC 自研,投入产出比很差
  3. 不想过早引入RPC以防滥用,Restful风格本身就是一种约束。
  4. 做选择时, Motan 还没有发布

Spring Cloud

Spring Cloud是一个集成框架,将开源社区中的框架集成到Spring体系下,几个重要的家族项目:

  • spring-boot ,一改Java应用程序运行难、部署难,甚至无需Web容器,只依赖JRE即可
  • spring-cloud-netflix ,集成Netflix优秀的组件Eureka、Hystrix、Ribbon、Zuul,提供服务发现、限流、客户端负载均衡和API网关等特性支持
  • spring-cloud-config ,微服务配置管理
  • spring-cloud-consul ,集成Consul支持

服务发现和配置管理

Spring Cloud Netflix提供了Eureka服务注册的集成支持,不过没选它是因为:

  • 更适合纯Java平台的服务注册和发现
  • 仍然需要其他分布式KV服务做后端,没解决我们的核心问题

Docker作为支撑平台的重要技术之一,Consul几乎也是我们的必选服务。因此我们觉得一事不烦二主,理所应当的Consul成为我们的服务注册中心。

Consul的优势:

  • 使用Raft一致性算法,能保证分布式集群内各节点状态一致
  • 提供服务注册、服务发现、服务状态检查
  • 支持HTTP、DNS等协议
  • 提供分布式一致性KV存储

也就是说,Consul可以一次性解决我们对服务注册发现、配置管理的需求,而且长期来看也更适合跟不同平台的系统,包括和Docker调度系统进行整合。

最初打算自己开发一个Consul和Spring Cloud整合的组件,不过幸运的是,我们做出这个决定的时候, spring-cloud-consul 刚刚发布了,我们可以拿来即用,这节约了很多的工作量。

因此借助Consul和 spring-cloud-consul ,我们实现了

  • 服务注册,引用了 srping-cloud-consul 的项目可以自动注册服务,也可以通过HTTP接口手动注册,Docker容器也可以自动注册
  • 服务健康状态检查,Consul可以自动维护健康的服务列表
  • 异构系统可以直接通过Consul的HTTP接口拉取并监视服务列表,或者直接使用DNS解析服务
  • 通过分布式一致性KV存储进行微服务的配置下发
  • 为一些业务提供选主和分布式锁服务

转载于:https://my.oschina.net/undefine/blog/848589

Spring Cloud 与 Dubbo 对比整理(2)相关推荐

  1. 微服务架构的基础框架选择:Spring Cloud还是Dubbo?

    最近一段时间不论互联网还是传统行业,凡是涉及信息技术范畴的圈子几乎都在讨论微服务架构.近期也看到各大技术社区开始组织一些沙龙和论坛来分享Spring Cloud的相关实施经验,这对于最近正在整理Spr ...

  2. 《springcloud超级入门》Spring Cloud和Dubbo的区别及各自的优缺点《三》

    了解为什么需要微服务.最初的服务化解决方案是给相同服务提供一个统一的域名,然后服务调用者向这个域发送 HTTP 请求,由 Nginx 负责请求的分发和跳转. 这种架构存在很多问题:Nginx 作为中间 ...

  3. Spring Cloud Alibaba | Dubbo 与 Spring Cloud 完美结合

    https://www.cnblogs.com/babycomeon/p/11546737.html Spring Cloud Alibaba | Dubbo 与 Spring Cloud 完美结合 ...

  4. Spring Cloud与Dubbo优缺点(面试题)

    Spring Cloud与Dubbo优缺点 Dubbo由于是二进制的传输,占用带宽会更少.Spring Cloud 是 HTTP 协议传输,带宽占用会比较多,同时使用 HTTP 协议一般会使用 JSO ...

  5. Spring Cloud 与 Dubbo 的完美融合之手「Spring Cloud Alibaba」

    很早以前,在刚开始搞 Spring Cloud 基础教程的时候,写过这样一篇文章:<微服务架构的基础框架选择:Spring Cloud 还是 Dubbo ?>,可能不少读者也都看过.之后也 ...

  6. 微服务选择Spring Cloud还是Dubbo?

    点击关注异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 ​参与文末话题讨论,每日赠送异步图书. --异步小编 在阿里巴巴的生态中,微服务逐渐成为主要的服务形态,伴随着容器化的日臻成熟 ...

  7. 微服务架构的基础框架选择:Spring Cloud还是Dubbo? - 推酷

    微服务架构的基础框架选择:Spring Cloud还是Dubbo? - 推酷 微服务架构的基础框架选择:Spring Cloud还是Dubbo? - 推酷 posted on 2016-07-30 2 ...

  8. 微服务架构Spring Cloud和Dubbo 还有EDAS

    现在 分布式项目 不用dubbo 都不好意思开口说架构. 出去面试 分布式服务必谈dubbo: 近几年来了 Spring Cloud; 然后最近 发现 阿里云推出了 EDAS,为你的dubbo服务安个 ...

  9. 【SpringCloud从0到6】 第二节:Spring Cloud 和 Dubbo

    1 . 框架背景 当前主流上较常用的java微服务框架 , 就是cloud和dubbo .  dubbo是阿里公司开源的RPC框架 , 背景很优秀 , 技术也是一等一的强 , 在spring clou ...

  10. spring cloud 和 dubbo 各自的优缺点

    两者都是现在主流的微服务框架,但却存在不少差异: 初始定位不同: SpringCloud定位为微服务架构下的一站式解决方案:Dubbo 是 SOA 时代的产物,它的关注点主要在于服务的调用和治理 生态 ...

最新文章

  1. leetcode C++ 42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,
  2. 决策树算法介绍及应用
  3. Java JNI简单实现
  4. linux安装xgboost快速高效方法
  5. [置顶] “非主流”Web容器之TomJetty之让服务动起来
  6. CGAL中Point的引用
  7. 红帽初级认证RHCSA考试环境——供实验练习
  8. 【0304】密码分类
  9. 电影票APP原型设计分享– Movie Booking
  10. windows下CMD常用命令
  11. 原生开发跟混合开发?两者有什么区别?
  12. 用excel绘制统计图表(清风建模学习笔记)
  13. ORACLE解析SOAPXML报文,xmltype extractvalue extract LPX-00210 中文乱码
  14. MOSS的备份与还原
  15. Qt实用技巧:自定义窗口标题栏
  16. 爬虫基本概念(新手必看)
  17. PTA7-31藏尾诗
  18. VBA宏实现将中文转为拼音(转帖+亲自实践)
  19. 借助 GPU 和容器支持,在 Amazon Robomaker 中运行任何高保真模拟
  20. openjudge 1.5.18 鸡尾酒疗法

热门文章

  1. paip.C#.NET图形按钮制做
  2. paip.JS的调试--DOM元素的属性与事件绑定
  3. 知乎:tomcat 与 nginx,apache的区别是什么?
  4. 逆袭?或将掌舵万亿SaaS巨头的Taylor竟是“天选之人”
  5. Linux宝库名人轶事栏目 | 笨叔与Linux的那些事(下)
  6. 【数字信号调制】基于matlab二进制差分相移键控调制(2DPSK)【含Matlab源码 163期】
  7. 【三维路径规划】基于matlab遗传算法无人机三维路径规划【含Matlab源码 1526期】
  8. 【优化求解】基于matlab遗传算法求解道路流量优化问题【含Matlab源码 1480期】
  9. 【语音识别】基于matlab GUI MFCC+VQ说话人识别系统【含Matlab源码 1153期】
  10. 【数字信号去噪】基于matlab奇异值分解(SVD)数字信号降噪【含Matlab源码 1020期】