如何管理实时的微服务

时间:2018-08-18 19:12:13

标签: java spring spring-boot microservices

我最近一直在使用springboot创建微服务项目来测试微服务。我对设置了解得越多,面临的问题就越多。

  1. 如何运行,管理所有微服务?开发人员如何通过中央位置管理,部署或更新微服务?
  2. 部署微服务的多个实例时,您是否要在运行时决定端口,还是应该预先定义端口?

我确信以后还会出现更多问题。 使用的链接:

谢谢。

3 个答案:

答案 0 :(得分:0)

您可以从以下内容开始:

监控:

Start with spring-boot-admin and prometheus.
https://github.com/codecentric/spring-boot-admin

部署:

Start with docker and docker-compose and move to kubernetes.

一些关于docker compose的示例

  1. https://github.com/jinternals/spring-cloud-stream
  2. https://github.com/jinternals/spring-micrometer-demo

答案 1 :(得分:0)

微服务的确倾向于迟早会失控。既然有这么多服务浮动,您需要提前考虑部署和监视策略。

这两个都不是容易的问题,但是您可以使用许多工具。

从CI / CD开始。搜索它,您将找到解决方法。一种选择是利用Jenkins进行蓝色/绿色部署 在这种情况下,jenkins将是您管理部署的中心位置(但这只是一个例子,我们确实有很多工具可以围绕此构建,可以根据您的需求更好地帮助您)

此问题的其他部分在于您倾向于在什么地方部署东西?不同的云提供商有他们自己的处理微服务的特定方式,这实际上取决于您的主机。但是一种选择是使用容器。

如果直接使用像dockers这样的原始容器,则必须处理映射端口(如果它们部署在同一主机上),但是您可以在此之上使用抽象,例如如果您在AWS上,则可以考虑使用ECS或Docker集群,或者我个人更喜欢Kubernetes。您无需担心它们所在的端口,并且可以通过负载均衡器直接与您的服务通信。这里缺少很多东西,您确实需要选择一种这样的工具并进行深入研究,但是这里有可供您探索的选项。

接下来是监视,如果您要使用kubernetes,则确实可以使用许多监视工具,它们将帮助您访问服务日志以查询它们等。但是您还需要确保从开发的角度出发提供相关ID,API指标,响应时间,因为当涉及微服务时,特别是与延迟相关的微服务,您将需要它们来调试问题。如果您不在kubernetes上,您仍然可以单独添加所有这些功能,例如用于日志监视的ELK堆栈(因为您不想转到每个服务来检查日志),用于跟踪的zipkin,用于服务的API网关和负载均衡器发现并与容器对话。

希望这可以帮助您入门。

答案 2 :(得分:0)

有可用的容器服务/容器管理系统,例如Amazon ECS,Azure容器服务,Kubernetes等,它们负责通过Amazon ECR等集中存储库进行自动部署,自动扩展/缩减微服务实例,利用动态端口分配,以在单个实例/主机上运行同一服务的多个实例,还为您提供集中式仪表板,以监视资源使用情况和基础结构事件。

您可以利用任何一个问题来回答所有问题,因为它们都提供了管理微服务所需的大多数功能。