随笔分类 - golang
摘要:背景 在服务刚刚搭建时,通常的思维就是根据API编写业务逻辑: // SendStream ... func (d *Svc) SendStream(stream MyApi_data.ProxyDialOut_SendStreamServer) error { for { ... data, er
阅读全文
摘要:最近添哥一直反映,他手下的设备以grpc stream的方式向我服务端发送数据。偶然会收到错误。现象如下: 连接已经建立了一段时间,正常使用。 突然client.Send 返回 eof。 客户端有报错:connection reset by peer 在服务端找到错误:context cancele
阅读全文
摘要:udp的服务端有一个大坑,即如果收包不及时,在系统缓冲写满后,将大量丢包。 在网上通常的示例中,一般在for循环中执行操作逻辑。这在生产环境将是一个隐患。是的,俺就翻车了。 go强大简易的并发能力可以用在处理udp数据上。 PoolSizeUDP := 1472 listener, err := n
阅读全文
摘要:概览 在telemetry采集中,由于数据量极大,一般采用分布式架构;使用消息队列来进行各系统的解耦。有系统如下: 设备将各类数据上报给采集器,采集器充当格式转换的角色。将各类不同的设备数据转换为统一的格式。 采集器将数据写入到消息队列中,后端的其它服务,如“分析”,“告警”等服务从消息队列中取数据
阅读全文
摘要:背景 最近,上线的采集器忽然时有OOM。采集器本质上是一个grpc服务,网络设备通过grpc协议将数据上报后,采集器进行格式等整理后,发往下一个系统(比如分析,存储)。 打开运行环境,发现特性如下: 每个采集器实例,会有数千个设备相连。并且会建立一个双向 grpc stream,用以上报数据。 cp
阅读全文
摘要:最近开发的telemetry采集系统上线了。听起来高大上,简单来说就是一个grpc/udp服务端,用户的机器(路由器、交换机)将它们的各种统计数据上报采集、整理后交后端的各类AI分析系统分析。目前华为/思科的大部分设备支持。 上线之后,各类用户开始找来要求帮忙定位问题,一般是上报的数据在后端系统中不
阅读全文
浙公网安备 33010602011771号