Microservices in Golang - Part7

内容提要:Kubernetes

原作者:Ewan Valentine

原文链接:https://ewanvalentine.io/microservices-in-golang-part-8/

引言

前文中,我们使用了 micro 工具包中的 RPC 代理网关,使得从外部调用 RPC 方法成为可能,以此为基础,我们构建了一个简单的 web 端用户界面

在原本系列的第七章中,作者介绍了如何使用 TerraformIaaS ( 如 Google Cloud 等) 上的实例进行编排管理,不过由于译者日常使用的是服务器的集群,且考虑到网络和费用状况,这章的内容其实帮助不大,有兴趣的可以参考原文

综上,直接进入系列第八章的内容 —— 将服务迁移到 Kubernetes。这其实也是译者学习与翻译此系列文章的出发点。

阅读更多

Microservices in Golang - Part6

内容提要:API GATEWAY & UI

原作者:Ewan Valentine

原文链接:https://ewanvalentine.io/microservices-in-golang-part-6/

引言

前文中我们从事件驱动架构出发,关注了 go-micro 和原生 go 中事件驱动的一般实现。这一节中我们将从 web 端出发,探寻客户端与微服务交互的方法。

micro 工具集 已经为我们提供了 web 端服务从外部直接调用我们内部 rpc 的方法。

我们将为货流平台创建一个用户界面,包括登录页面创建 consignment 的接口。通过这节的学习我们可以将之前的内容全部联系起来。

阅读更多

Microservices in Golang - Part5

内容提要:事件驱动 & NATS

原作者:Ewan Valentine

原文链接:https://ewanvalentine.io/microservices-in-golang-part-5/

引言

上文中,我们接触到了用户认证与 JWT。在这篇文章中,我们将会使用到 go-micro 的服务代理功能。

正如之前文章中所提到的,go-micro 是一个可拔插式的架构,它可以使用很多常用开源插件,参见 plugins repo,你可以看到它所支持的插件。

在本节中,我们会用到 NATS 代理插件。

阅读更多

Microservices in Golang - Part4

内容提要:微服务的认证

原作者:Ewan Valentine

原文链接:https://ewanvalentine.io/microservices-in-golang-part-4/

引言

上文中,我们创建了user服务,并且开始将用户信息存储到数据库中。现在我们需要一种更安全的保存密码的方式,并且需要在微服务中引入密钥分发和用户鉴权的机制。

注意,现在我把我们的服务拆分成了多个仓库,这确实更容易部署一些,其实一开始我确实是想把所有的代码都放到一起的,但是后来我发现这样很难管理Go项目的依赖,总是引起很多冲突(译者注:你知道我踩了多少坑吗!),之后我也会开始说下该怎么独立的运行和测试微服务了。

UPDATE 2020/05/04:

  • 优化目录结构
  • 添加运行截图
  • 程序结构图
阅读更多

Microservices in Golang - Part3

内容提要:docker-compose & 持久化

原作者:Ewan Valentine

原文链接:https://ewanvalentine.io/microservices-in-golang-part-3/

引言

系列的第二章节中,我们开始使用Docker对服务进行容器化,并使用go-micro替代了gRPC,并且引入了vessel服务。本章节中我们将会使用docker-compose,它能够使我们在本地运行多个服务变得更加简单,以及,我们将介绍几个不同的数据库,并且这次将迎来服务组合中的第三位成员。

UPDATE 2020/05/02

阅读更多

Microservices in Golang - Part2

内容提要:Docker & Go-Micro

原作者:Ewan Valentine

原文链接:https://ewanvalentine.io/microservices-in-golang-part-2/

引言

上篇文章中,我们介绍了编写基于gRPC的微服务的基础知识,在这一部分我们将介绍Docker化服务(Dockerising a service) 的相关知识,同时我们也会在程序中使用 go-micro 以替代 gRPC ( go-micro 中也对 gRPC 进行了封装),最后引入第二个服务。

阅读更多

Microservices in Golang - Part1

原作者:Ewan Valentine

原文链接:https://ewanvalentine.io/microservices-in-golang-part-1/

引言

《Go微服务》系列文章包括十个部分,这是系列的第一篇。本系列中将会用到protobufgRPC作为服务间的通讯协议。我花了很长时间找到了这个简洁明了的解决方案,所以我想将我所了解的有关微服务项目创建、测试以及微服务端到端部署的知识分享给刚接触这个领域的新手们。

在教程中,我们将介绍一些基本概念,术语,并以最原始的形式创建我们的第一个微服务。

在整个系列中,我们将会创建以下服务:

  • consighments
  • users
  • authentication
  • vessels

我们需要用到的技术栈包括:golang, mongodb, grpc, docker, Google Cloud, Kubernetes(容器编排), NATS(消息中间件), CircleCI, Terraform(实例操作工具,代替kubectl), go-micro.

UPDATE 2020/05/21

  • 感谢 @lihao 指出 go mod 使用上的问题
阅读更多