Plantre Plantre
首页
后端
技术
硬件
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 技术

    • 技术文档
    • GitHub技巧
    • Nodejs
    • 博客搭建
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

plantre

一个后端开发者
首页
后端
技术
硬件
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 技术

    • 技术文档
    • GitHub技巧
    • Nodejs
    • 博客搭建
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 计算机组成原理

  • 操作系统

  • 计算机网络

  • 设计模式

  • Java

  • Spring

  • SpringCloud

  • MySQL

  • Redis

  • 分布式

  • Zookeeper

  • Dubbo

    • dubbo没有服务端吗
    • 两个独立的springboot项目可以用dubbo吗,不是spring cloud
    • 和http调用的区别
      • ​​Dubbo和SpringCloud适用场景
    • Kafka

    • 数据结构

    • 算法

    • OJ

    • 从道家哲学看计算机?
    • 后端
    • Dubbo
    plantre
    2025-06-24
    目录

    和http调用的区别

    Dubbo 与 HTTP 作为两种主流的远程调用方式,在协议设计、性能、治理能力等方面存在显著差异。以下是核心区别的对比分析:


    # ⚙️ 1. 协议与传输机制

    • Dubbo:
      • 协议层:默认使用自定义的二进制协议(基于 TCP 传输层),支持高效的数据序列化(如 Hessian)。
      • 连接方式:采用 单一长连接 + NIO 异步通信,避免频繁建立连接的开销,适合高并发场景。
    • HTTP:
      • 协议层:基于应用层协议(如 HTTP/1.1 或 HTTP/2),数据以文本格式(如 JSON/XML)传输,头部信息较大。
      • 连接方式:HTTP/1.1 默认短连接(需多次 TCP 握手),HTTP/2 支持长连接但普及度有限。

    💡 关键区别:Dubbo 的二进制协议减少冗余数据,长连接降低网络延迟;HTTP 的文本协议易读但传输效率低。


    # ⚡️ 2. 性能与效率

    • Dubbo:
      • 二进制序列化 + 长连接 + NIO 异步传输,吞吐量高、延迟低,适合内部系统的高频调用(如 10K+ QPS)。
      • 参数包建议 <100KB,避免传输大文件。
    • HTTP:
      • 文本协议头部开销大,序列化效率低(如 JSON 解析耗资源),性能在高并发下明显下降。
      • 适合数据包大小混合的场景(如 RESTful API 调用)。

    📊 数据对比:相同硬件下,Dubbo 的 RPC 调用耗时约为 HTTP 的 1/3~1/2。


    # 🛠️ 3. 服务治理能力

    • Dubbo:
      • 内置治理功能:服务注册发现、负载均衡(随机/轮询/最少活跃调用等)、熔断降级、流量控制。
      • 动态路由:通过注册中心(如 Zookeeper、Nacos)实时推送服务列表变更。
    • HTTP:
      • 无治理能力:需依赖外部组件(如 Spring Cloud 的 Eureka + Ribbon 实现服务发现和负载均衡)。
      • 弱容错:错误处理需客户端手动重试或熔断(如 Hystrix)。

    🌐 扩展性:Dubbo 的多协议支持(如 gRPC、Triple)可无缝接入不同技术栈。


    # 🔄 4. 通信模式与灵活性

    • Dubbo:
      • 支持 同步、异步、单向调用,可灵活应对复杂业务逻辑。
      • 接口需严格定义(Java Service Interface),跨语言支持较弱(需额外适配)。
    • HTTP:
      • 主要支持 同步调用(HTTP/2 支持服务端推送,但应用较少)。
      • 协议无状态,接口设计自由(RESTful 风格),跨语言兼容性好。

    🧩 适用场景:

    • Dubbo:内部服务调用、高性能要求的微服务集群。
    • HTTP:对外暴露 API、多语言异构系统集成。

    # 🔐 5. 安全性设计

    • Dubbo:
      • 设计侧重内网通信,原生安全较弱(如无 HTTPS 支持),需自行实现 IP 白名单或 Token 验证。
    • HTTP:
      • 支持 HTTPS 加密传输、OAuth2 鉴权等,安全性标准化程度高。

    # 💎 总结:核心区别对比表

    维度 Dubbo HTTP
    协议类型 自定义二进制协议(TCP 传输层) 文本协议(HTTP 应用层)
    性能 高吞吐、低延迟(适合高频调用) 中等,受头部和序列化开销影响
    服务治理 内置负载均衡、熔断等 需依赖外部组件(如 Spring Cloud)
    连接方式 长连接 + NIO 异步 短连接(HTTP/1.1)或长连接(HTTP/2)
    适用场景 内部微服务、高并发集群 对外 API、跨语言系统
    安全性 较弱(需自行增强) 强(标准 HTTPS/OAuth2)

    # 📌 选型建议:

    • 选择 Dubbo:
      需要高性能 RPC(如金融交易系统)、强治理能力的内网服务、已有 Java 技术栈。
    • 选择 HTTP:
      对外提供开放 API、多语言混合开发生态、快速迭代的 Web 应用。

    两种协议并非互斥:Dubbo 支持 HTTP 协议暴露服务(如 dubbo.protocol.name=http),可兼顾性能与通用性。

    编辑 (opens new window)
    上次更新: 2025/06/24, 00:41:57
    两个独立的springboot项目可以用dubbo吗,不是spring cloud
    ​​Dubbo和SpringCloud适用场景

    ← 两个独立的springboot项目可以用dubbo吗,不是spring cloud ​​Dubbo和SpringCloud适用场景→

    最近更新
    01
    集成loki
    07-04
    02
    TCP的ESTABLISHED是什么意思
    06-24
    03
    安装1panel
    06-24
    更多文章>
    Theme by Vdoing | Copyright © 2025-2025 plantre | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式