Go Context的踩坑经历

0 引言context是Go中广泛使用的程序包,由Google官方开发,在1.7版本引入。它用来简化在多个go routine传递上下文数据、(手动/超时)中止routine树等操作,比如,官方http包使用context传递请求的上下文数据,gRpc使用context来终止某个请求产生的routine树。由于它使用简单,现在基本成了编写go基础库的通用规范。笔者在使用context上有一些经验,遂分享下。本文主要谈谈以下几个方面的内容:context的使用。context实现原理,哪些是需要注...阅读全文

2019-08-24 17:47:06 包增辉
阅读:31912 评论:4

Golang之微服务为什么发现不了

李乐问题引入  2020-12-25日晚,突然接收到少量错误日志报警『failed to dial server: dial tcp xxxx:yy: i/o timeout』。原来是微服务客户端请求服务端,连接失败。  简单介绍下服务现状:我们的服务部署在k8s环境,微服务框架我们使用的是smallnest/rpcx,注册中心基于zookeeper,链路如下图所示:第一步:这些连接超时的pod(一个pod相当于一台虚拟机)是有什么异常吗?根据连接超时的IP地址查找对应的pod,发现没有一个po...阅读全文

2021-01-05 23:32:33 LNMPR源码研究
阅读:643 评论:0