【问题标题】:separated data server, content server, client server and back-end server [closed]分离的数据服务器、内容服务器、客户端服务器和后端服务器[关闭]
【发布时间】:2014-03-03 12:27:38
【问题描述】:

过去几年我公司的做法是在客户的服务器/主机上安装我们自己的 cms 并开发前端。但现在是时候改变我们的工作方式了。 现在我是这样想的。 内容服务器很少,客户端(前端)一台服务器,后端服务器一台,数据库/数据服务器一台。

后端应用和服务器

每个客户都可以访问一个后端应用。只有一个后端,它将数据存储在数据服务器上。后端/前端将请求数据,数据服务器从 mysql 数据库准备 json 数据,然后将其发送回客户端。 内容将临时上传到后端服务器,然后内容服务器将临时内容复制到多个内容服务器。

前端

前端服务器上不会有数据库/数据。前端网站、应用程序、移动应用程序将通过 json 从数据服务器/api 获取所有数据,或者来自内容服务器的内容。所以前端服务器上只会有前端脚本。

内容服务器

它不像 CDN,所有内容服务器都放在一个地方。已连接并同步。

数据服务器

将所有数据存储在 mysql 数据库中。会有从mysql数据库准备json数据的api。

现在的问题是:

  1. 这种结构是愚蠢的还是管理数百个网站和应用程序的正确方式?
  2. api 从 mysql 数据库准备 json 数据并将其发送回请求的应用程序很慢?还是正常的?
  3. 分离的内容服务器(不是 CDN,但它会创建内容缓存)比在一个请求中从一台服务器加载内容和脚本更好更快。
  4. 客户端访问前端服务器->前端服务器请求数据服务器->数据服务器将从mysql db准备json数据->将其发送回前端->浏览器从内容服务器获取内容->渲染网站、应用程序。这种方式是比一台服务器慢还是快?
  5. 我们的后端必须非常快速和非常酷。任务是带有历史记录的实时应用程序,没有哈希标签的 url,当 url 更改时,浏览器不会刷新并且不会损害后端应用程序媒体播放器(许多小工具)、实时通知和消息。我们应该为这个应用程序使用什么技术?请根据您的经验回答。

【问题讨论】:

标签: php mysql json real-time


【解决方案1】:

我正在构建与此堆栈类似的东西

后端服务器 - mongo、mariadb、nodejs 前端服务器 - nginx,将请求代理到后端

我认为你的方法是正确的。

因此,我们可以使用 redis 作为统一会话存储和状态保存中间件的少量后端 nodejs 进程(在少数 vps 上),并且所有前端 - css、javascript、图像、html 都由多个 nginx 服务器提供服务。

前面有一台 nginx 服务器作为负载均衡,我们也使用 nginx 作为负载均衡器,因为 Pound 负载均衡器 (http://www.apsis.ch/pound) 与 websockets 有问题,但速度有点快

【讨论】:

    【解决方案2】:

    您的设置绝对正确,多个前端客户端服务器,指向一个或多个集中式数据服务器,通过 JSON 通过网络传递小块数据。

    拥有集中式后端应用程序也具有实际意义,从维护的角度来看,您只需处理一个应用程序。您需要考虑是否计划将所有数据存储在一个全局数据库中,或者为每个应用程序创建一个单独的数据库实例。

    问题是,您的应用程序/网站是否维护会话信息,如果是,您需要考虑如何处理会话。此外,如果您还计划放入负载均衡器以正确分配负载。

    根据我的个人经验,我不能对会话对话说太多(我的想法是将会话存储在数据库中)但也许其他人可以对此有所了解。

    在技术方面,我肯定会研究AngularJSKnockout 等技术,这些框架非常适合构建客户端/服务器应用程序,类似于您的需求。

    希望帮助至少能引导您朝着正确的方向前进。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-18
      • 1970-01-01
      相关资源
      最近更新 更多