【问题标题】:How to efficiently handle spring boot microservices?如何高效处理 Spring Boot 微服务?
【发布时间】:2017-07-10 23:55:57
【问题描述】:

我有一堆运行在独特端口中的 Spring Boot 微服务。我们如何在生产环境中处理这些微服务?

在生产中,我们只需要DNS,我们如何处理DNS映射。

例如: example-microservice-1(端口:8001)
example-microservice-2(端口:8002)
示例微服务 3(端口:8003)
example-microservice-4(端口:8004)
example-microservice-5(端口:8005)

我想要类似下面的东西,
myprod.com/example-microservice-1
myprod.com/example-microservice-2
...

而不是,
myprod:8001/example-microservice-1
myprod:8002/example-microservice-2

(由于声誉较低,删除了上面的“https/http”)

所有微服务都存在于不同的代码库中,构建时将创建单独的可运行 jar。

【问题讨论】:

  • 有很多选择。研究“api网关”。你可以用 Zuul 之类的东西来构建你自己的。您可以使用 Apigee 等服务。做一些研究。
  • @Strelok 谢谢。我试过zuul。试图找到一个领先于 nginx 的理由(通过文档)。
  • 是的,反向代理模式下的 nginx 也可以正常工作
  • API Gateway+ 服务注册表(例如 Netflix Zuul)应该是这种情况下的明显选择,因为您将来可能需要建立服务间通信。 nginx 应该配置在 API Gateway 前面。单个微服务不应暴露给 nginx,因为它会妨碍您的生态系统的扩展能力。

标签: java spring spring-boot dns microservices


【解决方案1】:

只需安装 nginx 并对您的微服务进行反向代理。

nginx示例:

server {
    listen 80 default_server;
    server_name myprod.com;
    location /example-microservice-1 {
        proxy_pass http://localhost:8001;
        proxy_set_header Host      $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    location /example-microservice-2 {
        proxy_pass http://localhost:8002;
        proxy_set_header Host      $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

【讨论】:

  • 谢谢。这是我用例的理想解决方案。但是,在尝试不同的选项时,我遇到了 Netflix Zuul,想知道这是否能提供更好的选择。
【解决方案2】:

在 Spring Boot 应用程序依赖于 Spring Cloud 依赖项的情况下。 Zuul 是正确的选择。

请仔细阅读以下指南

https://spring.io/guides/gs/routing-and-filtering/

您可以在此处找到示例应用程序:

https://github.com/BarathArivazhagan/Microservices-workshop

文档参考:http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html

【讨论】:

    猜你喜欢
    • 2018-03-16
    • 2019-01-19
    • 2017-07-23
    • 2021-04-09
    • 2019-01-03
    • 2019-08-02
    • 2019-10-29
    • 2019-01-19
    • 2020-03-11
    相关资源
    最近更新 更多