微服务框架 | 潮流当前该如何选择 SpringCloud、Dubbo or Istio? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Tenxcloud10
V2EX    推广

微服务框架 | 潮流当前该如何选择 SpringCloud、Dubbo or Istio?

  •  
  •   Tenxcloud10 2017-08-31 17:56:55 +08:00 5977 次点击
    这是一个创建于 3011 天前的题,其中的信息可能已经有所发展或是发生改变。

    在 Kubernetes 容器云平台于众多企业里遍地实施开花后,迅速结出的果实:应用微服务化当仁不让的居于首位。众所周知,基于容器平台构建后端服务,可以更加迅速的实现业务微服务化,与之而来的框架选型讨论也迅速火热了起来。

    微服务框架选型之争

    选项其实很多,这里挑选一些讨论火热、或者主流的来对比,仅供参阅。

    • 主流微服务框架:SpringCloud、Dubbo
    • 新锐微服务框架:Istio

    1、框架背景对比

    ( 1 ) Spring Cloud,来源于 Spring Source,具有 Spring 社区的强大背书外,还有 Netflix 强大的后盾与技术输出。Netflix 作为一家成功实践微服务架构的互联网公司,在几年前就把几乎整个微服务框架栈开源贡献给了社区,这些框架开源的整套微服务架构套件是 Spring Cloud 的核心。

    • Eureka: 服务注册发现框架;
    • Zuul: 服务网关;
    • Karyon: 服务端框架;
    • Ribbon: 客户端框架;
    • Hystrix: 服务容错组件;
    • Archaius: 服务配置组件;
    • Servo: Metrics 组件;
    • Blitz4j: 日志组件。

    ( 2 ) Dubbo 是一个分布式服务框架,是国内互联网公司开源做的比较不错的阿里开放的微服务化治理框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案。 其核心部分包含(官网):

    • 远程通讯: 提供对多种基于长连接的 NIO 框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式;
    • 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持;
    • 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。

    Dubbo 也是采用全 Spring 配置方式,透明化接入应用,对应用没有任何 API 侵入,只需用 Spring 加载 Dubbo 的配置即可,Dubbo 基于 Spring 的 Schema 扩展进行加载。当然也支持官方不推荐的 API 调用方式。

    ( 3 ) Istio 作为用于微服务服务聚合层管理的新锐项目,是 Google、IBM、Lyft (海外共享出行公司、Uber 劲敌) 首个共同联合开源的项目,提供了统一的连接,安全,管理和监控微服务的方案。

    目前首个测试版是针对 Kubernetes 环境的,社区宣称在未来几个月内会为虚拟机和 Cloud Foundry 等其他环境增加支持。Istio 将流量管理添加到微服务中,并为增值功能(如安全性,监控,路由,连接管理和策略)创造了基础。

    • HTTP、gRPC 和 TCP 网络流量的自动负载均衡;
    • 提供了丰富的路由规则,实现细粒度的网络流量行为控制;
    • 流量加密、服务间认证,以及强身份声明;
    • 全范围( Fleet-wide )的策略执行;
    • 深度遥测和报告。

    2、开源社区活跃度对比

    开源社区情况:现如今企业在采用云计算首选开源,而选择一个开源框架,社区的活跃度将作为重要参考选项。

    查看下在 Github 上的更新时间,截止 2017 年 8 月 31 日:

    • Spring Cloud:Spring Cloud GitHub → 所有项目均更新于『 1 小时』内。
    • Dubbo:Dubbo GitHub → 核心项目最近更新于『一个月乃至数月』前。
    • Istio:Istio GitHub → 所有项目均更新于『 30 分钟』内。

    可见,项目在社区活跃度上,Istio > Spring Cloud > Dubbo,结合稳定性来看,对于使用 Java 系开发业务较多的企业,Spring Cloud 是相对更优的选择,对于更多企业来说,与语言几乎无绑定的 Istio 也是可以好好期待一下其在社区的发展。

    总结:结合项目背景、提供功能、社区更新活跃度,SpringCloud 是目前阶段最为稳妥的可执行微服务框架方案,Istio 作为支持对于 Kubernetes 的优先支持来讲,也是一个值得关注的方案。目前对比来看,Dubbo 则显得稍逊下来。

    时速云 | 企业版 - 微服务治理平台,即将发布!

    产品特色:深度定制 SpringCloud 等微服务框架,支持 gRPC,动态路由配置,流量控制,配置管理等增强服务,同时提供应用业务级的 APM 能力。敬请期待!

    4 条回复    2017-09-01 13:51:15 +08:00
    gmywq0392
        1
    gmywq0392  
       2017-09-01 10:05:47 +08:00   1
    流口水 ing,楼主好帖!

    个人写 Java 维持生计,Spring Cloud,一把梭。
    shawnall
        2
    shawnall  
       2017-09-01 10:17:02 +08:00
    @gmywq0392 维持生计好评( 233333
    Tenxcloud10
        3
    Tenxcloud10  
    OP
       2017-09-01 10:33:14 +08:00
    @gmywq0392 坐标总部北京、杭州、深圳、武汉,有木有兴趣过来一起做哇
    qinxi
        4
    qinxi  
       2017-09-01 13:51:15 +08:00
    查看下在 Github 上的更新时间,截止 2017 年 8 月 31 日:

    Spring Cloud:Spring Cloud GitHub → 所有项目均更新于『 1 小时』内。
    Dubbo:Dubbo GitHub → 核心项目最近更新于『一个月乃至数月』前。
    Istio:Istio GitHub → 所有项目均更新于『 30 分钟』内。
    可见,项目在社区活跃度上,Istio > Spring Cloud > Dubbo,
    这个如何根据一次提交记录就得出活跃度的?

    难道不应该是 多次提交间隔取平均?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1609 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 16:17 PVG 00:17 LAX 08:17 JFK 11:17
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86