golang
文章平均质量分 79
Dlutzhangyi
一个正在研究docker和k8s的互联网底层码农
展开
-
负载均衡之子集选择算法
目录背景背景目前的场景下,任务管理集群Apiserver有6个节点,agent集群的数量有36w+。之前的算法是agent通过注册中心获取Apiserver全量的节点数,并建立连接,所以每个Apiserver上维护了36w+的连接池。当集群负载高时,扩容Apiserver节点并不能解决负载的问题,因为新节点并不能平摊其他节点的连接数,为此需要采用sharding的方式,让每个agent连接到部分的Apiserver节点,并且这个过程需要是幂等的,就是如果APiserver节点没有变更,.原创 2020-07-08 21:47:51 · 832 阅读 · 0 评论 -
go mod入门
文章目录背景介绍快速上手创建一个新的module添加依赖更新依赖添加一个新的major版本的依赖更新新的major版本依赖移除未使用的依赖结论背景介绍在Go 1.11版本开始,go支持go modules-(go官方的依赖管理系统),使得依赖版本信息的管理更加简单方便。同时官方给了对应blog,使用户能够快速上手go mod,blog链接可参考Using Go Modules。在go 1.1...原创 2020-02-27 17:53:58 · 659 阅读 · 0 评论 -
gorm踩坑笔记1
文章目录背景解决过程排查过程解决方案背景最近在用gorm查询满足某个条件的所有记录中最新的记录,代码可参考下面的例子,具体查询语句如下所示,目的是查询满足条件host_id=1的所有记录中按时间倒序,然后返回最新的记录。orm.First(&hostStat, "host_id = ?", 1).Order("time desc").Error完整的casepackage ma...原创 2020-02-25 15:57:38 · 1376 阅读 · 0 评论 -
服务限流
文章目录背景核心逻辑代码分析Client基于令牌桶的限流器背景 在去年的年底,组里的项目出了COE。当时的情况是用户在前端点击创建任务,但是接口长时间不返回结果(系统的其他功能都是正常)。第一时间查看了Prometheus监控,发现master组件的goroutine激增,飙到了1w+(正常情况下,goroutine的数量维持在3k-4k)。当时的第一反应是有用户高频率地调用创建任务的接口,...原创 2020-02-12 21:43:50 · 337 阅读 · 0 评论 -
Golang Channel源码解析
文章目录channelsHow to use ChannelsChannel源码解析代码入口channel的结构体新建channelchannel发送元素channel读取元素关闭channelchannelschannel存在以下四个特性goroutine-safestore and pass values between goroutinesprovide FIFO semanti...原创 2020-02-11 21:19:39 · 428 阅读 · 1 评论 -
golang编译器的//go:解析
文章目录//go:noescape//go:nosplit//go:linkname localname [importpath.name]//go:nowritebarrierrec//go:yeswritebarrierrec//go:noinline//go:norace在阅读golang源码时经常会遇到以//go:开头的注释,其目的就是告诉编译器如何编译这段代码。//go:noesca...原创 2020-01-14 17:35:09 · 1375 阅读 · 0 评论 -
使用bazel构建golang的项目
文章目录Bazel什么是bazel如何安装bazelinstall Xcode command line toolsdownload the bazel installerrun the installersetup environment搭建项目整体结构使用bazel构建项目WORKSPACE和BUILD.bazelWORKSPACEBUILD.bazel使用bazel运行更新仓库生成并更新各目...原创 2019-12-27 12:05:59 · 1455 阅读 · 0 评论