再谈微服务-服务框架对比 - Go语言中文社区

再谈微服务-服务框架对比


现在业界比较成熟的服务框架有很多,比如:Hessian、CXF、Dubbo、Dubbox、Spring Cloud、gRPC、thrift 等技术实现,都可以进行远程调用,具体技术实现优劣参考以下分析,这也是具体在技术方案选择过程中的重要依据。

Dubbo

是阿里巴巴公司开源的一个 Java 高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring 框架无缝集成。不过,略有遗憾的是,据说在淘宝内部,dubbo 由于跟淘宝另一个类似的框架 HSF(非开源)有竞争关系,导致 dubbo 团队已经解散,反到是当当网的扩展版本 Dubbox 仍在持续发展,墙内开花墙外香。其它的一些知名电商如当当、国美维护了自己的分支或者在 dubbo 的基础开发,但是官方的库缺乏维护,相关的依赖类比如 Spring,Netty 还是很老的版本(Spring 3.2.16.RELEASE, netty 3.2.5.Final),倒是有些网友写了升级 Spring 和 Netty 的插件。

PS:沉寂 3 年后,与 2017 年 9 月正式恢复更新

Dubbox

Dubbox 与 Dubbo 本质上没有区别,名字的含义扩展了 Dubbo 而已,以下扩展出来的功能,也是选择 Dubbox 很重要的考察点。

  • 支持 REST 风格远程调用(HTTP + JSON/XML)
  • 支持基于 Kryo 和 FST 的 Java 高效序列化实现
  • 支持基于 Jackson 的 JSON 序列化
  • 支持基于嵌入式 Tomcat 的 HTTP remoting 体系
  • 升级 Spring 至 3.x
  • 升级 ZooKeeper 客户端
  • 支持完全基于 Java 代码的 Dubbo 配置

PS:阿里的 Dubbo 团队已将以上特性集成

Spring Cloud

完全基于 Spring Boot,是一个非常新的项目,2016 年推出 1.0 的 release 版本,目前 Github 上更新速度很快. 虽然 Spring Cloud 时间最短, 但是相比 Dubbo 等 RPC 框架, Spring Cloud 提供的全套的分布式系统解决方案。Spring Cloud 为开发者提供了在分布式系统(配置管理,服务发现,熔断,路由,微代理,控制总线,一次性token,全局琐,leader选举,分布式session,集群状态)中快速构建的工具,使用Spring Cloud的开发者可以快速的启动服务或构建应用.它们将在任何分布式环境中工作,包括开发人员自己的笔记本电脑,裸物理机的数据中心,和像 Cloud Foundry 云管理平台。在未来引领这微服务架构的发展,提供业界标准的一套微服务架构解决方案。

缺点是项目很年轻,很少见到国内业界有人在生产上成套使用,一般都是只有其中一两个组件。相关的技术文档大部分是英文的,案例也相对较少,使用的话需要摸索的时间会长一些。

下图是 Spring Cloud 和 Dubbo 对比:

image

Motan

是新浪微博开源的一个 Java 框架。它诞生的比较晚,起于 2013 年,2016 年 5 月开源。Motan 在微博平台中已经广泛应用,每天为数百个服务完成近千亿次的调用。与 Dubbo 相比,Motan 在功能方面并没有那么全面,也没有实现特别多的扩展。用的人比较少,功能和稳定性有待观望。对跨语言调用支持较差,主要支持 Java。

Hessian

采用的是二进制 RPC 协议,适用于发送二进制数据。但本身也是一个 Web Service 框架对 RPC 调用提供支持,功能简单,使用起来也方便。基于 Http 协议进行传输。通过 Servlet 提供远程服务。通过 Hessain 本身提供的API来发起请求。响应端根据 Hessian 提供的 API 来接受请求。

rpcx

是 Go 语言生态圈的 Dubbo,比 Dubbo 更轻量,实现了 Dubbo 的许多特性,借助于 Go 语言优秀的并发特性和简洁语法,可以使用较少的代码实现分布式的RPC服务。

gRPC

是 Google 开发的高性能、通用的开源 RPC 框架,其由 Google 主要面向移动应用开发并基于 HTTP/2 协议标准而设计,基于 ProtoBuf(Protocol Buffers) 序列化协议开发,且支持众多开发语言。本身它不是分布式的,所以要实现上面的框架的功能需要进一步的开发。

thrift

是 Apache 的一个跨语言的高性能的服务框架,也得到了广泛的应用。

版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/fd207d194d7a
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-01-12 11:53:58
  • 阅读 ( 2814 )
  • 分类:Go Web框架

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢