(译)为什么要使用 Go 模块代理

引入Go模块之后,我以为这就是最终解决方案了。我很快意识到事实并非如此。最近,大家开始提倡使用Go模块代理。在研究了利弊之后,我得出结论,这是近年来最重要的变化之一。何处此言?是什么使Go模块代理如此特别?

在Go模块中,如果你添加了新的依赖项或者在没有缓存过的新机器上构建Go模块,则它将(go get)下载go.mod中的所有依赖项,并将其缓存以用于进一步的操作。可以通过使用vendor/文件夹并编译时携带-mod=vendor参数来绕过缓存(以及下载依赖项)。

但是这两种方法都不甚完美,我们有更好的方案。

……

Continue reading

Raft 算法理解和总结

Hyperledger fabric 自1.4.1版本开始支持了 Raft 共识,比原先的生产环境推荐共识"kafka",搭建的复杂度和可维护性上要好不少,并且 1.4.0 是 Hyperledger的第一个长期维护版本(long term support),推荐在生产环境中使用,完全可以升级并使用Raft共识。

本文介绍总结Raft 算法,主要是根据著名的 Raft讲解动画的理解,并进行文字化的总结。强烈推荐这个讲解动画,可配合动画阅读下文,更容易理解。

……

Continue reading

docker多容器实践:nginx+go+beego镜像做反向代理

本文通过一个简单的案例实践,描述了多容器多服务下如何对服务配置和关联。具体为

  1. 基于 beego实现的一个 http服务,使用 go官方镜像,打包成一个容器1
  2. 通过 go 容器,将1中的服务,简单修改,克隆出第二个 http,打包成容器2
  3. 使用 nginx 镜像,生成一个反向代理容器,代理到对上述两个容器服务
……

Continue reading

go 包管理

golang 的包管理一直为人所诟病,从GOPATH到vendor再到vgo,都不太理想。于是出现了各种第三方的解决方案。最近发布的 1.11版本,官方推出了 go module,试图统一这种乱象,解决包管理方面的不足。

……

Continue reading

entitlements授权机制

在对ipa重签名的时候,你可能会疑惑,为什么可以用别的证书重签之后,ipa就可以安装,又为什么在重签的时候需要加入 embedded.mobileprovision 文件,重签失败出现的闪退又是为什么。那么也许你需要深入了解 entitlements 的验证机制。

……

Continue reading