寻求有关如何在Golang中管理微服务的帮助

时间:2016-07-15 06:56:33

标签: go deployment microservices

目前,我每天都在9-5处理微服务。我接触的大多数内容都是用PHP编写的,而且作为一名软件工程师,SysOps管理与运行的应用程序等有关的所有内容。我对如何设置基础架构和构建管道有一点熟悉,但我仍然不是一个SysOps或DevOps的人。

说到这一点,我喜欢Golang,对于一个侧面项目,我正在创建一个包含大量活动部件的相当大的Web应用程序。编写和设计代码很容易,因为我从日常工作中学到了很多东西,但是部署和管理Golang Web应用程序(因为它们是可执行文件)与更新apache服务文件完全不同。

我已经研究了很多关于如何构建和部署我的微服务应用程序的方法,但我一直在考虑需要在此过程中解决的更多问题。我已经考虑过将Docker用于所有这些的想法,但我宁愿没有更复杂的学习和管理所有图像的存储,因为这可能很大。

部署后管理Golang应用程序是否有最佳实践或好方法?我需要一种方法来跟踪所有微服务进程,以便能够查看它们是否仍处于运行状态,并且能够在部署新构建时停止它们。

至于设置,只需假设所有微服务都将在服务器上运行,而不是在容器或VM中运行。他们都需要管理,但也能够独立行事。 Jenkins将用于构建和部署。我将使用Consul进行服务发现和可能的配置,并且很可能对服务进行健康检查。我想让每个微服务在启动时注册自己,并在停止时取消注册。

同样,我正在寻找一种解决方案,希望不仅仅是“Docker”。我也想过创建一个管理服务(添加和删除)的部署服务,以及在Consul中注册它们。因此,如果我找不到更好的解决方案,我可能会走这条路。任何帮助表示赞赏。

**对不起,如果我的问题令人困惑,但由于有几个人回答了手头的错误话题,我会尽力澄清。我不需要任何帮助制作微服务,甚至不了解它们。我提出了为什么我需要问我的问题。基本上我需要的是能够管理所有微服务的运行过程,这样我就可以进行部署,并能够停止并启动进程来更新代码。当您不得不担心一个应用程序时,它会更容易,但是当您可以拥有多达10-15个不同的微服务时,它们会变得更难以跟踪。在我自己的研究之后,似乎Supervisord就是我想要的,但我不确定。这就是我对这个问题的看法。感谢。

1 个答案:

答案 0 :(得分:0)

Golang非常适合用于微服务,但我想说管理golang或其他语言微服务并没有太大的区别。 我要说的是具体的golang:

  • 您不需要在服务器上安装任何东西,因为golang被编译为单个库
  • 你可以利用std lib golang rpc包和gob二进制解码,而不是使用第三方解决方案(gorpc,协议缓冲等)

除此之外,您需要使用自己的判断。在微服务世界中有很多方法可以做一件事;有一天你会实施解决方案A但是在3个月之后你会发现做B更好。

在互联网上,有很多关于微服务的阅读。我会建议你2次好的反复:https://books.google.co.uk/books/about/Building_Microservices.html?id=RDl4BgAAQBAJ&source=kp_cover&redir_esc=y&hl=en

文章:http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html

请记住,微服务并不是一个金银子,它们通常可以帮助使应用程序更易于维护和增长,但从另一方面需要大量额外的工作,从而指定API合同和强大的devops文化。