我在公司里用 Go 给 Dubbo 写中间件

2022-10-27 10:24:52 浏览数 (2)

作者小楼,目前在国内出行巨头做中间件开发。

Dubbo是国内电商巨头阿里巴巴,于2011年开源的一款RPC框架,使用的开发语言是 Java。一般公司在规模达到一定程度,单体应用无法支撑业务发展时,会选择微服务架构,这时就需要一个好用的RPC框架。类似Dubbo的竞品如 Spring Cloud 在2014年开源,微博的 Motan 在2017年开源,跨语言的 gRPC 在2015年开源,Thrift 2007 年开源。

这些RPC框架中只有Thrift 比它早,但Thrift只是个单纯的RPC框架,Dubbo则包含了开箱即用的服务治理能力,如服务注册与发现、负载均衡、容错、动态配置等等。可以说早期RPC框架没得选,开发也得用Java语言。就算到了RPC框架百花齐放的时代,这么多公司的使用加上阿里的背书,Dubbo也有它的一席之地。

当一个公司选择了Java编程语言和Dubbo框架,后来又想尝试Go,或者一些新业务、新部门想尝试Go时,他们就面临了一个难题,Go如何跟JavaDubbo通信。由于Dubbo协议是私有协议,用Go重新实现一遍的代价还是挺大。于是Dubbo-Go应运而生,Dubbo-Go官方对这个项目的介绍也阐述了项目的技术价值:

Apache Dubbo Go 语言实现,架起 Java 和 Golang 之间的桥梁,与 gRPC/Dubbo 生态互联互通,带领 Java 生态享受云原生时代的技术红利。

我再通俗地翻译一下:一个公司或部门内有人用JavaDubbo,有人用Go,这两者需要通信,于是就有了Dubbo-Go,用来解决通信问题。

我本人数学本科毕业,开始在小厂做PHP开发,后来去了杭州一家独角兽公司呆了5年,从PHP转到了Java,也从业务开发转向了后端基础架构,目前在某出行巨头公司做中间件开发工作,技能树又点上了Go。陆续改进过Dubbo/Nacos/Sentinel/SkyWalking等开源项目。

如果你有这方面的问题,可以一起探讨,也欢迎关注我的微信公众号

我写了很多关于Dubbo的文章,比如:

《Dubbo网关演进之路》

《小白也能看懂的Dubbo应用级服务发现》

《Dubbo为什么用Go重写?》

更多见Dubbo杂谈合集

写这些博客的初衷也是记录一些排查问题的过程,像下面这些,一个个都是血泪史:

  • 《太极限了,JDK的这个BUG都能被我踩到》
  • 《案例分享 | dubbo 2.7.12 bug导致线上故障》
  • 《一次漫长的Dubbo网关内存泄漏排查经历》
  • 《skywalking内存泄漏排查》
  • 更多见问题排查合集

当然我还写了很多其他干货文章,很多都被各大平台相继转载:

  • 《我好像发现了一个Go的Bug》
  • 《惨,给Go提的代码被批麻了》
  • 《Java 问题排查技术分享》
  • 《记一次提升18倍的性能优化》
  • 《zookeeper到nacos的迁移实践》
  • ...

目前我也在整理一些学习资料,关注公众号回复关键字「资料」送你一些我觉得还不错的pdf电子书。

0 人点赞