【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

当当网开源 Dubbox,扩展 Dubbo 服务框架支持 REST 风格远程调用

  • 2014-10-22
  • 本文字数:1520 字

    阅读完需:约 5 分钟

当当网近日开源了 Dubbox 项目,可为 Dubbo 服务框架提供多项扩展功能,包括 REST 风格远程调用、Kryo/FST 序列化等等。

当当网架构部和技术委员会架构师沈理向InfoQ 中文站介绍了Dubbox 项目,开发背景和主要特点描述如下:

Dubbo 是一个被国内很多互联网公司广泛使用的开源分布式服务框架,即使从国际视野来看应该也是一个非常全面的 SOA 基础框架。作为一个重要的技术研究课题,在当当网我们根据自身的需求,为 Dubbo 实现了一些新的功能,并将其命名为 Dubbox (即 Dubbo eXtensions)。

主要的新功能包括:

  • 支持 REST 风格远程调用(HTTP + JSON/XML):基于非常成熟的 JBoss RestEasy 框架,在 dubbo 中实现了 REST 风格(HTTP + JSON/XML)的远程调用,以显著简化企业内部的跨语言交互,同时显著简化企业对外的 Open API、无线 API 甚至 AJAX 服务端等等的开发。事实上,这个 REST 调用也使得 Dubbo 可以对当今特别流行的“微服务”架构提供基础性支持。 另外,REST 调用也达到了比较高的性能,在基准测试下,HTTP + JSON 与 Dubbo 2.x 默认的 RPC 协议(即 TCP + Hessian2 二进制序列化)之间只有 1.5 倍左右的差距,详见下文的基准测试报告。

  • 支持基于 Kryo 和 FST 的 Java 高效序列化实现:基于当今比较知名的 Kryo FST 高性能序列化库,为 Dubbo 默认的 RPC 协议添加新的序列化实现,并优化调整了其序列化体系,比较显著的提高了 Dubbo RPC 的性能,详见下图和文档中的基准测试报告。

  • 支持基于嵌入式 Tomcat 的 HTTP remoting 体系:基于嵌入式 tomcat 实现 dubbo 的 HTTP remoting 体系(即 dubbo-remoting-http),用以逐步取代 Dubbo 中旧版本的嵌入式 Jetty,可以显著的提高 REST 等的远程调用性能,并将 Servlet API 的支持从 2.5 升级到 3.1。(注:除了 REST,dubbo 中的 WebServices、Hessian、HTTP Invoker 等协议都基于这个 HTTP remoting 体系)。
  • 升级 Spring:将 dubbo 中 Spring 由 2.x 升级到目前最常用的 3.x 版本,减少项目中版本冲突带来的麻烦。
  • 升级 ZooKeeper 客户端:将 dubbo 中的 zookeeper 客户端升级到最新的版本,以修正老版本中包含的 bug。

上面很多功能已在当当网内部稳定的使用,现在开源出来,供大家参考和指正。也希望感兴趣的朋友也来为 Dubbo 贡献更多的改进。

注:dubbox 和 dubbo 2.x 是兼容的,没有改变 dubbo 的任何已有的功能和配置方式(除了升级了 Spring 之类的版本)。另外,dubbox 也严格遵循了 Apache 2.0 许可证的要求。

附:分布式服务框架与 RPC 框架

目前开源领域能找到的分布式服务框架也有不少,比较有代表性的包括 Twitter 的 Finagle (基于 Scala 语言), Flipkart (印度最大的 B2C 网站)的 Phantom (文档较少),Apache 的 Tuscany (有点陈旧,而且不是很适合互联网公司)等等,其实国内也有少数公司提供了开源 Java 服务框架,但 dubbo 在其功能完善性、架构优雅性、使用简便性等方面依然有其相对独特的优势,尽管 dubbo 绝大部分的开发都是 2012 年以前完成的。

另外,业界的开源 RPC 框架更是数量众多,难以计数,但是,一般的 RPC 框架和我们讨论的分布式服务框架还是具有相当大的距离,比如在远程调用的多协议、多序列化支持,完善的服务治理等等方面都有较多的缺失。也正是由于这种缺失,著名的 Apache Thrift 等框架在这里也可归为 RPC 框架,而主要构建在 Thrift 之上的 Finagle、Phantom 等框架更接近于完整的分布式服务框架(当然,Dubbo 其实也支持 Thrift,只是还不太完善)。

有关沈理

沈理,目前在当当网的架构部和技术委员会担任架构师,主要负责当当网的 SOA 实施(即服务化)以及分布式服务框架的开发。以前也有在 BEA、Oracle、Redhat 等外企的长期工作经历,从事过多个不同 SOA 相关框架和容器的开发。

2014-10-22 00:0946368

评论 1 条评论

发布
用户头像
基于dubbo哪个版本开发的呢
2022-09-05 19:07 · 北京
回复
没有更多了
发现更多内容

推动OpenHarmony在AIDC行业落地,优博讯的技术积累与实践

Geek_2d6073

数据库操作入门:PyMongo 和 MongoDB 的基本用法

小万哥

Python 程序员 软件 后端 开发

go-mongox:简单高效,让文档操作和 bson 数据构造更流畅

陈明勇

Go golang mongodb 开源 go mongo

Mac电脑压缩解压工具WinZip激活最新版

胖墩儿不胖y

Mac软件 压缩工具 解压缩软件

概念回顾: API 和 API 互联

NGINX开源社区

API 协议 API 类型 API 策略 API 架构 API使用现状

inBuilder低代码平台新特性推荐-第七期

inBuilder低代码平台

低代码

零代码秒集成打通小鹅通订单支付信息与CRM合同接口

RestCloud

零代码 APPlink

Databend 与海外某电信签约:共创海外电信数据仓库新纪元

Databend

市场行情回暖、利好月来袭,Web3 广告业领头羊 Verasity 或迎爆发

鳄鱼视界

企业APP软件定制开发的关键步骤

Geek_16d138

软件开发 app定制开发

多行业用户齐聚,2023 IoTDB 用户大会详细议程更新!

Apache IoTDB

选人与育人,孰先孰后?

凌晞

团队管理

以终为始,依托度量指标,多种工具全面提升研发效能

之家技术

工具 团队 效能 AIGC 释产能

保驾“双十一” 博睿数据助力电商零售迎高峰无烦忧

博睿数据

可观测性 博睿数据

10w+播放!自动化办公,用到了哪些实用的Python技术?

程序员晚枫

Python 编程 自动化办公

释产能,论研效提升之路

之家技术

效率 团队 资源 效能 释产能

Milvus 上新!全新 Range Search 功能,可精准控制搜索结果

Zilliz

Milvus Zilliz 向量数据库

市场行情回暖、利好月来袭,Web3 广告业领头羊 Verasity 或迎爆发

威廉META

Kstry: 业务架构的首选之选

快乐非自愿限量之名

开发工具 业务框架

玩转 Cgroup 系列之三:挑战手动管理 Cgroup

小猿姐

cpu 资源管理 Cgroup

一文带你了解TypeScript 函数

Aion

typescript Vue 前端

高效使用 PyMongo 进行 MongoDB 查询和插入操作

小万哥

Python 程序员 软件 后端 开发

typhonjs-escomplex 代码可读性 & 可维护度探索

南城FE

JavaScript 前端开发 代码质量 代码规范

Redis分布式锁问题分析与处理方案

郑在暴富中

redis redisson 分布式锁

使用AWS CodePipeline自动部署项目到EC2

王坤祥

亚马逊云 亚马逊云科技 EC2 CodePipeline CodeDeploy

「冰点还原精灵」Deep Freeze for mac 系统还原工具

加油,小妞!

Deep Freeze 系统还原

文心一言 VS 讯飞星火 VS chatgpt (135)-- 算法导论11.3 1题

福大大架构师每日一题

福大大架构师每日一题

Kyligence 入选 Gartner® 2023 客户之声报告,高分获评“卓越表现者”

Kyligence

数据分析 指标平台

OpenHarmony开发者论坛正式上线,盖楼赢惊喜好礼~

OpenHarmony开发者

OpenHarmony

世界杯、NBA赛事直播视频源数据接口获取,开发体育直播平台搭建行动方案

软件开发-梦幻运营部

GitHub Universe 2023:AI 技术引领软件开发创新浪潮

SEAL安全

GitHub AI 企业号11月PK榜

当当网开源Dubbox,扩展Dubbo服务框架支持REST风格远程调用_Java_沈理_InfoQ精选文章