[NFV] LXD

近期接触到了 NFV (Network Function Virtulization),简单来说就是通过虚拟化技术,在服务器、云主机上构建虚拟的网络设备(交换机、路由器等),从灵活性、可扩展性、维护成本这些方面,是要优于专有网络硬件设备的。

NFV 主要依托KVMLXD等虚拟化技术,在 VM 中利用 QuaggaOpen vSwitch 等实现相应的功能,当然,基于容器 (Docker) 或者公有云私有云 (如 OpenStack 等) 的应用也是可以的。

本文主要内容:LXD,使用 LXD 构建虚拟路由器。

阅读更多

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 代理插件。

阅读更多

[Serverless] OpenWhisk

OpenWhisk 是由 IBM 开源的一个 FaaS 计算平台,在2016年贡献给了开源社区,2019年正式成为 Apache 基金会的顶级项目。

OpenWhisk 本身是一个事件驱动 (Event driven architecture) 的 FaaS (Function as a Service) 计算平台,用户只需要关注业务代码的逻辑,将操作代码发送给 OpenWhisk ,并提供所需的数据流,OpenWhisk 就能自动的对计算资源进行扩展。开发者无需关心相关的基础设施架构,虽说理论上有效的提高了开发效率,可以使开发人员可以将精力放在代码逻辑上,不过 Serverless 平台的开发体验还是颇受诟病的,由于无法接触到实际的运行环境,不管是开发还是 debug 都比较不方便,只通过 log 方式调试错误。

阅读更多

[Docker] 如何向容器中传入参数

单纯为了解决这个问题,只需要在 Dockerfile 中将程序入口定义为:

1
ENTRYPOINT exec command "$0" "$@"

更全面一点,DockerfileRUN CMD ENTRYPOINT 有何不同,又分别适应什么样的场景?

请看下文

阅读更多

Microservices in Golang - Part4

内容提要:微服务的认证

原作者:Ewan Valentine

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

引言

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

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

UPDATE 2020/05/04:

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