【问题标题】:Is it a bad idea to host a rest api on a cdn?在cdn上托管rest api是个坏主意吗?
【发布时间】:2017-11-20 09:50:53
【问题描述】:

我是服务器架构的新手,并且已经阅读了很多,但对于下面的设置是否是好的做法还没有一个可靠的意见,希望有经验的人可以给我确认如果我是正确设置我的架构:

  • 使用 Angular Universal 将 html 预渲染到 CDN(例如 Cloudflare)
  • 图像资产的 Cloudinary
  • 一台/几台强大的机器使用 ngix 处理总线负载并发送到下面列出的其他服务器(全部托管在数字海洋中):
    • Rest API(Express 服务器)
    • 数据库 MongoDB

我真的很担心我的 rest api 的速度,因为与 cloudflare 这样的 cdn 相比,数字海洋中提供的区域似乎要小得多。 这对我的速度和服务有多大影响?

我知道这听起来可能很荒谬,但地区问题让我想知道在 cdn 上托管一个 rest api express 服务器是否比像数字海洋这样的地方更好。 (我的直觉告诉我不应该在 cdn 上这样做,但我不知所措,希望有人能提供清楚的理由说明我可以或不应该在那里托管 express rest api 服务器。)

【问题讨论】:

    标签: rest express architecture cdn angular-universal


    【解决方案1】:

    据我所知,我会做一些不同的事情。

    CDN 用于提供内容,因此名称为 CDN(内容交付网络)。 CDN 本身并不提供内容,而是将用户路由到为其提供服务的服务器。例如,如果您在美国、法国和亚洲有一台服务器,而您来自英国,并请求该网站包含托管在这些服务器上的图像。 CDN 会为您指引最近/最好的服务器。在这种情况下,这将是法国的服务器。

    因此,要回答您的问题,在 CDN 上托管 RESTful API 并不是一个坏主意,但您需要在全球范围内使用多台服务器(如果您打算在全球范围内使用)并使用 Cloudflare CDN 来引导您的流量。

    这就是我要做的: 如果您没有预料到流量负载(如数百万),那么每个位置只有 1-2 台服务器,因此在北美、南美、法国(欧盟)、亚洲和澳大利亚可能只有 1-2 台。这将为您提供体面的报道。然后,当您设置应该处理谁去哪里的 CDN 时。使用 node 和 nginx 会帮助你很多,这会让你得到更便宜而不是强大的服务器,因为它们的重量很轻。

    现在,对于您的数据库,您可以在某处使用一种专用解决方案来做两件事之一,该解决方案对于法国 (EU) 等所有地区的延迟都一样少,因此它更加集中,或者您可以拥有多个并让它们同步。拥有多个同步的数据库将是更多的工作,并且需要大量的研究。拥有一台服务器更容易管理。

    数据库将是您决定是否使用一个并处理延迟或多个并且必须管理它们并使它们保持同步的最大问题。请记住,您可以使用云托管平台来托管您的数据库,这将帮助您解决问题,因为许多平台将提供全球覆盖以及提供同步数据库。但是,使用云平台时会遇到成本问题。

    希望这能回答您的问题并为您提供所需的知识!

    【讨论】:

    • 感谢您的回答,这真的很有帮助:),我希望在可行性方面与数字海洋与 cloudflare 进行速度比较。如果我选择使用所有数字海洋服务器的 8 个唯一位置,而不是 cloudflare 使用的大量节点:cloudflare.com/lp/cdn-a/…——我觉得数字海洋可能没有足够的服务器。是否足以覆盖全球?我希望我可以只使用数字海洋,因为与 cdns 相比,它感觉更安全
    • 如果您正在寻找全球覆盖范围,您将需要一个 CDN 来引导您的流量,请记住 CDN 不一定是服务器,它更像是一个路由器。所以你需要你的数字海洋服务器和像 Cloudflare 这样的 CDN 服务,正如我所说,如果你不期望数百万的流量,你应该在每个位置使用 1-2 台服务器就可以了,这样就足以覆盖全球。
    • 好的,感谢您的回复和回答,它提供了丰富的信息:)
    猜你喜欢
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    • 2011-05-17
    • 1970-01-01
    相关资源
    最近更新 更多