随笔分类 -  golang

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