如何使用golang微服务?

时间:2017-07-15 07:49:07

标签: go microservices

我的公司使用Go来构建一些HTTP API服务。我们希望这些服务共享一个HTTP端口。

所以现在解决方案是我们创建一个名为router的项目,路由器导入一些模块,每个请求都通过路由器传递给自己的模块。
但问题是,如果其中一个模块处理崩溃,路由器就会崩溃。

有没有解决方案?

需要:

  1. 一个http端口。
  2. 每项服务都是独立的。
  3. 我知道go-kit并且去微观,我也尝试过,但仍然不太了解。

3 个答案:

答案 0 :(得分:0)

Go-kitgo-micro用于编写微服务,它无法解决您的问题。

您应该在应用程序前使用反向代理,例如Nginx:https://www.nginx.com/resources/admin-guide/reverse-proxy/

以下是执行所需操作的nginx配置文件的示例:

import matplotlib.pyplot as plt

plt.show()

这样,您仍然可以在不同的端口上部署应用程序,但它们只会通过端口80公开。

答案 1 :(得分:0)

您正在寻找的是API网关。 API网关也是一种反向代理形式。我已经研究过像Tyk,Traefik和Zuul这样的完整解决方案,它们都是很好的解决方案。当然可以使用Nginx,但是你可能有很多必须使用Lua脚本进行合并,例如OpenID-Connect / OAuth的客户端用于授权等。另外需要考虑的是安全性,日志记录,指标,速率限制,(动态路由)等。我真的不会将我的API网关建立在Nginx上。 Nginx-Plus包含一个API网关,但需要付款。

我目前正在开展一个非常大的项目,并发现它需要以上述解决方案的插件形式进行大量的自定义工作。事实上,从头开始编写我的API网关(使用Golang和库)会更容易。

既然你提到你已经尝试过go-kit和micro,我建议你尝试使用Traefik,因为它设置起来非常简单,并且为方便起见包含了一个Web UI。

答案 2 :(得分:0)

我用来在Windows中托管Go微服务的方法只是运行go install <main-package-file>,它为Windows生成了一个exe文件。然后我只是用SC来创建一个Windows服务。然后将其作为普通的Windows服务运行。这样我就不需要Nginx或任何这样的引擎..