【问题标题】:Regarding servers, when should a process be moved to another server instead of on the same?关于服务器,什么时候应该将进程移动到另一台服务器而不是同一台服务器上?
【发布时间】:2018-03-30 22:42:11
【问题描述】:

假设我有一台服务器。它的工作是为我的前端提供视图请求。数据库连接到它,什么没有。

假设我还想要一个程序来获取用户上传的图像,然后允许用户通过 api 修改图像?

什么时候在同一台服务器上运行这两个程序是个好主意?一个坏主意?是否有其他因素决定何时将程序放置在单独的服务器上?

例子。我在 heroku 的一台服务器上运行了一个 django 应用程序(python)。该应用程序正在提供一个宁静的 api。我在 s3 上完成了图像托管,并直接上传到浏览器。

我想在某个时候允许用户将他们的图像上传到我的服务器进行处理,然后再将它们上传到 s3。也许他们想调整图像大小、裁剪图像等。我担心的是,在同一台服务器上大规模完成这两个操作将是糟糕的设计。我错了吗?

【问题讨论】:

    标签: performance server load


    【解决方案1】:

    我会尝试提供一些有用的建议,但您的问题过于宽泛,会很困难。您要问的问题是设计问题,其答案因以下因素而异:

    • 您使用的是哪种语言/框架。
    • 缓存或不缓存。
    • 安全需求(例如,是否有必要将修改图像的进程与视图界面线程/请求隔离开来)。例如,这可能是由于您的框架或缓存基础架构的限制。
    • 您是否有可用的服务器来隔离这些进程。

    系统架构师通常会获得丰厚的报酬,以根据具体的实施需求找出这些问题的答案。

    如果您能提供更多细节,我们或许能提供更好的帮助。


    根据您的 python 示例更新信息:

    我不太了解 django/heroku,但您的示例有所帮助。一般来说,从同一台服务器运行这两个应用程序应该没问题,至少最初是这样。只要服务器没有因 CPU/IO 开销而过载,并且应用程序部署为单独的应用程序(以保护它们的进程免受彼此影响),一切都应该可以正常工作。

    这涵盖了共享服务器时最常见的两个问题:

    1) 一般服务器过载(硬件无法处理 CPU/IO 需求)

    2) 应用程序进程需要隔离,以防止因可能对环境进行共享访问而导致的各种编程错误和安全问题。

    另外一点:我注意到如果您使用多个域,在 Heroku 中部署多个应用程序可能会出现问题,因此请记住这一点。我不确定它是否仍然是真的,但这里有一个链接:

    https://pilot.co/blog/hosting-multiple-heroku-apps-on-a-single-domain/

    希望对你有帮助。

    【讨论】:

    • 谢谢。我将针对特定情况编辑我的问题
    • 根据您的具体情况编辑了我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多