2017总结2018计划

又到年底,回顾2017年初定下的目标,咳咳咳…. 2017 2017,定了一堆目标,想当初定目标时信心满满,肯定能全部完成,然而事实证明,理想很丰满,现实啪啪啪。 技术 去年的工作内容主要在一些Go项目和容器技术上,技术栈是Go+Docker+Kubernetes,这三样基本是现学现卖,一边学习一边实践,做了几个go项目,帮助部门定制了一套开发流程并部署了开发环境,主要是基于Gitlab...

Kubernetes的资源管理

什么是资源 在Kubernetes中,资源指的是可以被pod或容器“请求”,“分配”,“消费”的那些东西。例如:CPU,内存,硬盘。资源又分为可压缩资源和不可压缩资源,目前CPU是唯一支持的可压缩资源,内存和硬盘是不可压缩资源。对于CPU这种可压缩资源,如果pod中服务使用CPU超过限额,该pod不会被kill掉但会被限制,而对于内存这种不可压缩资源,如果pod中服务使用内存超过限额,该po...

Kubeadm安装Kubernetes集群

前言 kubeadm是kubernetes官方提供的快速安装kubernetes集群的工具,相比以前手动安装各个组件,kubeadm可以说是非常方便了。我在安装的过程中遇到了很多坑,而引起这些坑的根本原因就是网络不通,因为要去拉谷歌的镜像,如果服务器没有配代理的话,会遇到各种各样的问题。所以,建议大家在安装前先配好代理,如果没有代理只能墙内安装,需要从其他镜像仓库把各个镜像拉下来,并修改各个...

Docker部署Go应用

前言 因为go的应用就是一个可执行的二进制文件,所以使用docker部署go应用非常简单。 编写一个go应用 下面是一个打印Hello World的简单go应用: //hello.go package main import ( "fmt" ) func main() { fmt.Println("Hello, World!") } 执行go build编译生成可执...

Go的包管理工具godep和dep

前言 目前go并没有官方的包管理工具,比较流行的是godep。godep从go 1.0开始就可以使用了,是比较老的包管理工具,早期使用go的人应该都用过godep。而dep是2017年初才发布的包管理工具,要求go >= 1.7,目前还不太成熟了,用的人很少,不过却是最有可能被纳入官方的包管理工具。下面分别介绍下godep和dep的使用。 godep install godep使用起...

理解FastCGI和PHP-FPM

前言 由于我一直对CGI、FastCGI、PHP-CGI、PHP-FPM这几个概念都比较模糊,所以最近花了点时间去详细了解了一下,并在此做个学习记录。 CGI和FastCGI CGI(Common Gateway Interface)全称是通用网关接口,是web服务器与应用程序之间数据交换的一种与语言无关的协议,它规定了要传递给web服务器的数据和格式,如URL、查询字符串、POST数据、...

Git使用技巧

有些东西一段时间不用就特别容易忘,最近在使用git的时候老是要去查文档,所以在这里记录git的一些用法,以方便以后查阅。 回滚 对于已经push过的代码,回滚到某个版本,可以使用git reset和git revert两种方法。 例如:远程提交记录是A -> B -> C -> D,要回滚到B那个版本: git reset git reset --hard B git ...

Nginx设置FastCGI Cache

前言 Nginx包含一个FastCGI模块,该模块具有缓存PHP后端提供的动态内容的指令。设置此操作将无需额外的页面缓存解决方案,如反向代理或特定于应用程序的插件。也可以根据请求方法,URL,Cookie或任何其他服务器变量不缓存某些内容。 开启FastCGI Cache 编辑nginx.conf配置文件,在Server{}模块的上面添加以下内容: fastcgi_cache_path /...

Go的变量命名

名字的重要性 可读性是定义良好代码的标准,好的名字对于可读性至关重要,这是对于Go的变量命名来讲的。 好的变量名 一个好的变量名的标准: 一致(容易猜测) 简短(容易声明) 准确(容易理解) 经验法则 变量声明的地方与使用它的地方隔的越远,则变量名应该越长。 使用大小写混合 Go中的变量名应该使用大小写混合,而不应使用names_with_underscores这种下划...

Docker搭建Mongodb集群

最近在搞公司内网开发环境,需要基于docker容器搭建一套mongodb复制集群,这我以前没搭过啊,于是我去Google了一下,发现还挺简单,但其中也遇到了坑,所以这里记录一下,避免以后再次踩坑。 思路 这里搭建集群是在单台物理机上搭建的,大致思路基本都是这样:使用mongo基础镜像启3个docker容器,一个主服务器两个备份服务器,将容器内的27017端口映射到物理机上三个端口,然后进入...