RSS

Posts in 2021

  • Dubbo Go 的前世今生

    Monday, January 11, 2021 in 技术分享

    dubbo-go 是目前 Dubbo 多语言生态最火热的项目。dubbo-go 最早的版本应该要追溯到 2016 年,由社区于雨同学编写 dubbo-go 的初版。当时很多东西没有现成的轮子,如 Go 语言没有像 netty 一样的基于事件的网络处理引擎、 hessian2 协议没有 Go 语言版本实现,加上当时 Dubbo 也没有开始重新维护。所以从协议库到网络引擎,再到上层 dubbo-go ,其实都是从零开始写的。 在 2018 年,携程开始做 Go 语言的一些中间件以搭建内部的 Go …

    更多

  • Dubbo Go 踩坑记

    Monday, January 11, 2021 in 技术分享

    扯淡 前尘 由于我的一个项目需要做公司用户鉴权,而组内其他小伙伴刚好有一个 dubbo 的鉴权 rpc ,一开始我是打算直接的读 redis 数据然后自己做解密。工作进行到一半,由于考虑到如果以后这个服务有任何变动,我这边要有联动行为,所以改用 go 来调用 dubbo 的 rpc ,于是我在 github 上找到了 雨神 的 dubbogo (PS: 这个是 dubbo-go 前身)。不得不说,雨神是热心的人儿啊,当时还帮着我调试代码。最后也是接入了一个阉割版的吧,主要是当时 hessian2 …

    更多

Posts in 2020

  • Dubbo-Api-Docs -- Apache Dubbo文档展示&测试工具

    Tuesday, December 22, 2020 in 技术分享

    Dubbo-Api-Docs 背景 Swagger 是一个规范和完整的前端框架,用于生成,描述,调用和可视化 RESTful 风格的 Web 服务. Swagger 规范也逐渐发展成为了 OpenAPI 规范. Springfox 是一个集成了Swagger,基于 Sring MVC/Spring Webflux 实现的一个 Swagger 描述文件生成框架,通过使用它定义的 一些描述接口的注解自动生成Swagger的描述文件, 使 Swagger 能够展示并调用接口. 相信很多人都听说和使用 …

    更多

  • 从 2019 到 2020,Apache Dubbo 年度回顾与总结

    Monday, May 11, 2020 in 技术分享

    非常感谢大家对 Dubbo 社区的关注,通过这篇文章我们将:总结过去一年 Dubbo 社区取得的成绩,包括社区和框架演进两个方面;展望未来 Dubbo 社区和框架的新的规划(roadmap)。社区建设是推动 Dubbo 健康持续发展的一个非常重要的环节,我们需要与社区保持良性的互动、有活跃的贡献者、有积极的富有建设性的讨论,而整个 Dubbo 社区过去一年在这方面都做的不错;在框架演进上,我们主要发布了 2.7.0 - 2.7.5 共 6 个特性版本,功能层面涵盖编程模型、协议、服务治理、性能优 …

    更多

Posts in 2019

  • Dubbo测试验证

    Monday, December 02, 2019 in 技术分享

    除了线上常规的使用场景以外,我们在日常使用中还需要一些特定的使用方式,比如对正在开发的功能进行验证测试,比如单独调用某台机器的服务,这篇文章就来介绍一下这些场景下的使用方式。 只订阅 为方便开发测试,经常会在线下共用一个所有服务可用的注册中心,这时,如果一个正在开发中的服务提供者注册,可能会影响消费者不能正常运行。 可以让服务提供者开发方,只订阅服务(开发的服务可能依赖其它服务),而不注册正在开发的服务,通过直连测试正在开发的服务。 禁用注册配置 <dubbo:registry …

    更多

  • Dubbo 在 Service Mesh 下的思考和方案

    Saturday, November 30, 2019 in 技术分享

    开头 Service Mesh这个“热”词是2016年9月被“造”出来,而今年2018年更是被称为service Mesh的关键之年,各家大公司都希望能在这个思潮下领先一步。今天我也分享阿里中间件在这方面的观点,思考和实践。考虑到有些人没了解过Dubbo(集团内以HSF为主)和Servicemesh,先简单介绍下这两个词。Dubbo应该是国内最受欢迎的远程服务框架,在Github上有超过2w的star数,也是阿里分布式架构互联互通的核心所在。跟Dubbo一样,servicemesh也是面向服务互 …

    更多

  • Dubbo服务端异步接口的实现背景和实践

    Saturday, November 02, 2019 in 技术分享

    铺垫 建议先对Dubbo的处理过程中涉及的线程阶段先做个了解,具体可参考Dubbo客户端异步接口的实现背景和使用场景。 实现背景 有必要比较详细点的介绍下服务端的线程策略来加深用户在选择服务端异步的判断依据,同时有必要引出协程这一在服务端异步中常常会用到的“秘密武器”。 服务端的线程策略 Dubbo支持多种NIO框架来做Remoting的协议实现,无论是Netty,Mina或者Grizzly,实现都大同小异,都是基于事件驱动的方式来做网络通道建立,数据流读取的。其中以Grizzly对于线程策略的 …

    更多

  • Dubbo客户端异步接口的实现背景和实践

    Friday, November 01, 2019 in 技术分享

    铺垫 先简单介绍下一次完整的Dubbo调用所经历的线程阶段。几个信息这里罗列下 Biz~代表业务线程,即便是业务逻辑处理所处的线程,Biz~线程池可能是业务自己创建维护,大多数的可能是系统框架自身管理的(比如web型的业务系统跑在Tomcat容器下,Biz~线程就是Tomcat维护);IO~代表网络数据处理线程,是IO框架(比如Netty,Grizzly)创建维护,Dubbo Remoting所默认Netty实现是NioEventloopLoopGroup;另外按照Channel与IO线程的绑定 …

    更多

  • 支持 HTTP/2 gRPC 和 Protobuf

    Monday, October 28, 2019 in 技术分享

    本文总体上可分为基础产品简介、Dubbo 对 gRPC (HTTP/2) 和 Protobuf 的支持及示例演示三部分,在简介部分介绍了 Dubbo、HTTP/2、gRPC、Protobuf 的基本概念和特点;第二部分介绍了 Dubbo 为何要支持 gRPC (HTTP/2) 和 Protobuf,以及这种支持为 gRPC 和 Dubbo 开发带来的好处与不同;第三部分通过两个实例分别演示了 Dubbo gRPC 和 Dubbo Protobuf 的使用方式。 基本介绍 Dubbo 协议 从协议 …

    更多

  • 本地存根和本地伪装

    Tuesday, October 22, 2019 in 技术分享

    基本概念 典型的 RPC 调用客户端是依赖并且只依赖接口编程来进行远程调用的。在真正发起远程调用之前,用户往往需要做一些预处理的工作,比如提前校验参数。在拿到返回调用结果之后,用户可能需要缓存结果,或者是在调用失败的时候构造容错数据,而不是简单的抛出异常。 这个时候,用户可以编写出类似以下的代码来处理上面提出的这些场景: try { preProcess(); return service.invoke(...); } catch (Throwable e) { return …

    更多