UDP 为什么会 write: connection refused

一、前言 在某一次写 udp 服务时,发现一个奇特的现象,udp client 在调用 write 方法写入数据时会报 connection refused 。 对于懂得 socket 编程却不懂网络的人可能认为这根本就不是一个问题。 因为这报错显然就是远端服务对客户端发送的数据进行了拒绝,也许会认…

容器环境下 Go Panic 告警日志发送方案

一、前言 以前服务没有运行在容器中时,我们通常使用 supervisor 来守护一个 Go 编写的服务。并且在服务运行时,如果发生 Panic 导致容器退出,此时 supervisor 中配置的 stderr_logfile 会把程序运行时的标准错误设置成一个文件。就像下面这样 之后通过logage…

P2P 内网穿透通信与端口复用|Golang 代码示例

一、前言 一般情况下,如果要实现聊天即时通讯,都要借助公网服务器作为中继节点对消息进行转发。 例如用户A和用户B进行即时通讯的具体步骤如下所示 首先用户A和B需要和公网服务器建立长连接 ClientA ====> (建立长连接) ===> 公网服务器 `ClientB ====> (建立长连接) =…

Prometheus Histogram + Grafana 绘制接口响应热点图

一、前言 第一版的接口响应时长分布统计图表是根据 Prometheus Counter 数据类型制作的折线图,它大概长下面这个样子。 原理其实也非常简单,我就是将请求分组进行统计。大致的代码就是下面这个样子 奈何领导说接口统计最好不要用 counter 计数器,也不要做成折线图。要使用 Promet…

Golang 拉取 Github 私有库的姿势

我们的 Go 项目拉取依赖时,默认使用的是 https 协议的 git clone 。因此当你的 Golang 项目位于 Github 的私有仓库时,而你本地的项目又依赖这个私有库,此时你应当先设置SSH 保证 Git 能无密码拉取到该依赖。 其次你还必须要设置 GOPRIVATE ,当你设置后, …