Go1.16 使用 Embed 嵌入静态资源(视频)

go1.16 版本已经 release 了,推出了一些新功能特性,其中有一个 embed 的新功能,通过 embed 可以将静态资源文件直接打包到二进制文件中,这样当我们部署 Web 应用的时候就特别方便了,只需要构建成一个二进制文件即可,以前也有一些第三方的工具包可以支持这样的操作,但是毕竟不是官方的。接下来我们就来为大家简单介绍下 embed 功能的基本使用。

[阅读全文]

真香!使用 VSCode 远程开发调试

对于大型的 Golang 项目往往我都会使用 Goland 这样的专业 IDE,但是由于我本地开发环境硬件资源偏低,不能很顺畅的使用 Goland,这个时候我们就可以使用 VSCode 来代替 Goland,另外 VSCode 同样还支持远程开发,所以我索性将开发环境放在远程机器上,然后用 VSCode 远程开发模式进行连接,最主要的是大部分我们的项目都是直接跑在 Linux 上面的,这个时候我们就可以直接在 VSCode 中运行 Linux 环境下面的应用,而且我们还可以很好地进行调试。

[阅读全文]

在 Golang 中使用 Cobra 创建 CLI 应用

create CLI app with cobra

虽然现在我们使用的大多数软件都是可视化的,很容易上手,但是这并不代表 CLI(命令行)应用就没有用武之地了,特别是对于开发人员来说,还是会经常和 CLI 应用打交道。而 Golang 就非常适合用来构建 CLI 应用,下面我们就将来介绍如何在 Golang 中构建一个 CLI 应用。

对于开发人员来说平时可能就需要使用到很多 CLI 工具,比如 npm、node、go、python、docker、kubectl 等等,因为这些工具非常小巧、没有依赖性、非常适合系统管理或者一些自动化任务等等。

[阅读全文]

自定义 Kubernetes 调度器

kube-scheduler 是 kubernetes 的核心组件之一,主要负责整个集群资源的调度功能,根据特定的调度算法和策略,将 Pod 调度到最优的工作节点上面去,从而更加合理、更加充分的利用集群的资源,这也是我们选择使用 kubernetes 一个非常重要的理由。如果一门新的技术不能帮助企业节约成本、提供效率,我相信是很难推进的。

[阅读全文]

使用 Golang 自定义 Kubernetes Ingress Controller

在 Kubernetes 中通过 Ingress 来暴露服务到集群外部,这个已经是一个很普遍的方式了,而真正扮演请求转发的角色是背后的 Ingress Controller,比如我们经常使用的 traefik、ingress-nginx 等就是一个 Ingress Controller。本文我们将通过 golang 来实现一个简单的自定义的 Ingress Controller,可以加深我们对 Ingress 的理解。

[阅读全文]

使用 GitHub Actions 自动化构建 Golang 应用

GitHub 前一段时间推出了自家的自动化构建工具:GitHub Actions,不过目前还没有开放注册,只能通过申请等待官方审核。我第一时间就提交了申请,现在已经审核通过了,所以第一时间体验了GitHub Actions的功能,总体感受是 Travis CI 之类的工具应该现在在墙角瑟瑟发抖吧 😄?

GitHub Actions允许构建一个完整的 CI/CD Pipeline,与 GitHub 生态系统深度集成,而无需使用 Travis CI 或者 Circle CI 等第三方服务,对于开源项目都是可以免费使用的。如果你也想尽快使用的话,可以通过链接 https://github.com/features/actions/signup 去申请权限。

github actions

[阅读全文]

Go Modules 基本使用(视频)

Go 语言全新依赖管理系统 Go Modules

Go 语言中一直被人诟病的一个问题就是没有一个比较好用的依赖管理系统,GOPATH 的设计让开发者一直有很多怨言,在 Go 语言快速发展的过程中也出现了一些比较优秀的依赖管理工具,比如 govendor、dep、glide 等,有一些差不多成了半官方的工具了,但是这些工具都还是需要依赖于 GOPATH,为了彻底解决这个“祸水”,随着 Go1.11 的发布,Golang 官方给我们带来了依赖管理的全新特性Go Modules,这是 Golang 全新的一套依赖管理系统。下面我们就来看下 Go Modules 是如何使用的。

[阅读全文]

并发模型

Golang的特色之一就是goroutine,使得程序员进行并发编程更加方便,适合用来进行服务器编程。作为后端开发工程师,有必要了解并发编程面临的场景和常见的解决方案。一般情况下,是怎样做高并发的编程呢?有那些经典的模型呢?

[阅读全文]