分类 后台 articles

golang多版本管理

在我们的开发环境中,使多个golang版本并存。

大部分情况下,一个比较新的golang版本就能满足我们的日常的开发需求。
但是项目中,因为协作的原因,或者由于项目启动比较早,可能我们不同的工程需要用不同的golang版本。甚至有些工作用比较新的版本编译不了。
这时候,我们就需要让本地的开发环境支持多个golang版本。

……

Continue reading

服务器超时时间和请求队列大小设置

服务器超时时间和请求列表大小关乎程序的健壮性。设置过小,会导致有效的请求被丢掉。 设置过大,严重的情况下会引起雪崩。

超时

很多后台码农对超时时间的设置都没什么概念,特别是刚毕业的后台码农。 一般都是参照前人的代码,设置一个相同的超时,而且一般都是比较大的超时,只要程序能跑就没问题了。

……

Continue reading

nf_conntrack调优

深入了解conntrack调优。

netfilter

netfilter是linux内在的一个软件框架,用来管理网络数据包。

netfilter提供了5个hook来进行管理网络包。如下图: netfilter-hooks

……

Continue reading

nginx平滑的基于权重轮询算法分析

nginx使用的平滑权重轮询算法介绍以及原理分析。

轮询调度

轮询调度非常简单,就是每次选择下一个节点进行调度。比如{a, b, c}三个节点,第一次选择a, 第二次选择b,第三次选择c,接下来又从头开始。

……

Continue reading

mongo跨集群复制集同步

mongo的跨集群复制集同步方案。

在生产环境上使用mongo,需要考虑容灾。在跨idc的容灾方案上,我们需要把数据库同步到其他的idc去, 这样即使一个idc挂了,另一个idc还可以服务,而且数据不会丢。

……

Continue reading

tenfyzhong/goenv库介绍

goenv库将环境变量的值设置到一个结构体里, 以方便使用。类似于encoding/json解析到结构体。

背景

为了简化docker的发布,把配置从配置文件里抽取出来,设置到环境变量里。然后发布docker 容器的时候就不需要再带一个配置文件了。

……

Continue reading

golang交叉编译

golang的交叉编译。

golang的交叉编译非常简单,只要配好对应的环境变量后再go build就可以了。 需要配置以下的环境变量。

CGO_ENABLED

默认情况下这个变量为1。
交叉编译不支持cgo,所以需要关闭cgo。
linux/unix下为CGO_ENABLED=0
windows下为set CGO_ENABLED=0

……

Continue reading

nginx旁路

旁路的目的是为了把请求复制一份发到另外的服务上去。这样就可以不影响主流程的情况下 处理额外的逻辑了。最简单的方式就是让nginx把请求发出去,这样我们只要改配置就行了, 而不用改代码。相对于开发,测试回归的成本往往要高很多。

……

Continue reading

nginx配置http basic认证

http basic认证允许我们对自己的web服务器做简单的认证。可以适当的防止别人浏览器我们 的页面。

为什么需要http basic认证

对于一些简单的web服务需要做简单的认证。比如:

……

Continue reading