0%

介绍

我猜测大部分长期使用 Java 的开发者应该较少会接触 gRPC,毕竟在 Java 圈子里大部分使用的还是 Dubbo/SpringClound 这两类服务框架。

我也是近段时间有机会从零开始重构业务才接触到 gRPC 的,当时选择 gRPC 时也有几个原因:

  • 基于云原生的思路开发部署项目,而在云原生中 gRPC 几乎已经是标准的通讯协议了。
  • 开发语言选择了 Go,在 Go 圈子中 gRPC 显然是更好的选择。
  • 公司内部有部分业务使用的是 Python 开发,在多语言兼容性上 gRPC 支持的非常好。
Read more »

不知不觉年终总结就像每个人的 KPI 一样,年底不总结一下感觉今年就白过了似的。

今年时间真的感觉过的特别快,经常感觉工资刚发不久结果没几天又到了发薪日;再也没有小时候一个暑假都能过一年的感觉。

Read more »

前言

最近实现某个业务时,需要读取数据然后再异步处理;在 Go 中实现起来自然就比较简单,伪代码如下:

1
2
3
4
5
6
7
8
9
10
list := []*Demo{{"a"}, {"b"}}
for _, v := range list {
go func() {
fmt.Println("name="+v.Name)
}()
}

type Demo struct {
Name string
}
Read more »

前言

早在几年前写过关于 LRU cache 的文章:
https://crossoverjie.top/2018/04/07/algorithm/LRU-cache/

当时是用 Java 实现的,最近我在完善 ptg 时正好需要一个最近最少使用的数据结构来存储历史记录。

ptg: Performance testing tool (Go), 用 Go 实现的 gRPC 客户端调试工具。

Go 官方库中并没有相关的实现,考虑到程序的简洁就不打算依赖第三方库,自己写一个;本身复杂度也不高,没有几行代码。

Read more »

go-grpc-client-gui.md---008i3skNly1gwuz3q9a2nj30rs0rs3z1.jpg

前言

平时大家写完 gRPC 接口后是如何测试的?往往有以下几个方法:

  1. 写单测代码,自己模拟客户端测试。
    go-grpc-client-gui.md---008i3skNly1gwv0138u2ij31eq0lwn07.jpg

  2. 可以搭一个 gRPC-Gateway 服务,这样就可以在 postman 中进行模拟。

Read more »

go-benchmark-test.md---008i3skNly1gwer3yhu0dj30vn0u00v3.jpg

前言

前段时间有个项目即将上线,需要对其中的核心接口进行压测;由于我们的接口是 gRPC 协议,找了一圈发现压测工具并不像 HTTP 那么多。

最终发现了 ghz 这个工具,功能也非常齐全。

事后我在想为啥做 gRPC 压测的工具这么少,是有什么难点嘛?为了验证这个问题于是我准备自己写一个工具。

Read more »