Monday, January 11, 2021 在 Golang
前言 Apache Dubbo是由阿里开源的一个RPC框架,除了基本的RPC功能以外,还提供了一整套的服务治理相关功能。目前它已经是Apache基金会下的顶级项目。 而dubbogo则是dubbo的go语言实现。 最近在dubbogo的todo list上发现,它还没有实现TPS Limit的模块,于是就抽空实现了这个部分。 TPS limit实际上就是限流,比如说限制一分钟内某个接口只能访问200次,超过这个次数,则会被拒绝服务。在Dubbo的Java版本上,只有一个实现,就 …
Monday, January 11, 2021 在 Golang
最近因为要在 Apache/dubbo-go(以下简称 dubbo-go )里面实现类似的这个 metrics 功能,于是花了很多时间去了解现在 Dubbo 里面的 metrics 是怎么实现的。该部分,实际上是被放在一个独立的项目里面,即 metrics ,见 https://github.com/flycash/dubbo-go/tree/feature/MetricsFilter 下 metrics 子目录。 总体上来说,Dubbo 的 metrics 是一个从设计到实现都非常优秀的模块, …
Monday, January 11, 2021 在 Golang
环境 Go编程环境 启动zookeeper服务,也可以使用远程实例 从服务端开始 第一步:编写 Provider 结构体和提供服务的方法 https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-server/app/user.go 编写需要被编码的结构体,由于使用 Hessian2 作为编码协议,User 需要实现 JavaClassName 方法,它的返回值在dubbo中对应User类的类 …
Monday, January 11, 2021 在 Golang
5 月 21 日,经过一年多的孵化,Apache Dubbo 从 Apache 软件基金会毕业,成为 Apache 顶级项目。 Dubbo 是阿里于 2011 年开源的一款高性能 RPC 框架,在 Java 生态中具有不小的影响力。当初经历过一段被外界诟病的“停止维护”灰暗时光,后来在 2017 年 Dubbo 浪子回头,官方宣布重新重点维护。 重新启航的 Dubbo 将首要目标定位于重新激活社区,赢回开发者的信任,并且逐渐将 Dubbo 打造成一个国际化与现代化的项目,目前距离宣布重启已经过了 …
Monday, January 11, 2021 在 Golang
dubbo-go 是目前 Dubbo 多语言生态最火热的项目。dubbo-go 最早的版本应该要追溯到 2016 年,由社区于雨同学编写 dubbo-go 的初版。当时很多东西没有现成的轮子,如 Go 语言没有像 netty 一样的基于事件的网络处理引擎、 hessian2 协议没有 Go 语言版本实现,加上当时 Dubbo 也没有开始重新维护。所以从协议库到网络引擎,再到上层 dubbo-go ,其实都是从零开始写的。 在 2018 年,携程开始做 Go 语言的一些中间件以搭建内部的 Go …
Monday, January 11, 2021 在 Golang
扯淡 前尘 由于我的一个项目需要做公司用户鉴权,而组内其他小伙伴刚好有一个 dubbo 的鉴权 rpc ,一开始我是打算直接的读 redis 数据然后自己做解密。工作进行到一半,由于考虑到如果以后这个服务有任何变动,我这边要有联动行为,所以改用 go 来调用 dubbo 的 rpc ,于是我在 github 上找到了 雨神 的 https://github.com/apache/dubbo-go-samples/tree/master (PS: 这个是 dubbo-go 前身)。不得不说,雨神是 …