作者小楼,目前在国内出行巨头做中间件开发。
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
如何跟Java
的Dubbo
通信。由于Dubbo
协议是私有协议,用Go
重新实现一遍的代价还是挺大。于是Dubbo-Go
应运而生,Dubbo-Go
官方对这个项目的介绍也阐述了项目的技术价值:
Apache Dubbo Go 语言实现,架起 Java 和 Golang 之间的桥梁,与 gRPC/Dubbo 生态互联互通,带领 Java 生态享受云原生时代的技术红利。
我再通俗地翻译一下:一个公司或部门内有人用Java
版Dubbo
,有人用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电子书。