哪个CMS可以处理来自多个托管位置的服务页面?

时间:2012-07-24 17:28:09

标签: php mysql content-management-system replication web-hosting

我们公司在管理其网站方面非常成功,包括所有业务逻辑和内容。但是,还有很多静态内容页面,今天使用模板系统提供服务,模板系统将内容存储在文件系统上的序列化PHP对象中。

我们现在正在考虑使用“真正的”CMS,但是我们有一些要求可以或多或少地解决所有常见的嫌疑人。最重要的要求是我们的托管环境:

我们有两个完全独立的托管位置,采用“无共享”方法进行故障转移。这两个位置都有单独的MySQL实例,这些实例是我们主数据库的slave(),位于我们总部的现场。这两个位置都有一定数量的Web服务器,每个服务器都存储完整的网站(同样,用于故障转移)。

从这种架构中,自然会出现两种可能的方法: - 数据库驱动的CMS,在我们的总部进行管理,并被复制到我们的托管位置(以及使用我们的文件同步过程复制的图像和内容) - 文件驱动的CMS,其中不仅附件,而且内容文件使用我们的文件同步同步

数据库驱动的方法对我来说似乎更灵活,但是我们找不到一个在“在本地管理读/写数据库并仅使用只读从站提供内容”的CMS。例如,通常的嫌疑人(Typo3)需要一个数据库来写入其日志记录和会话管理,因此不是一种选择。其他CMS似乎分享这个问题。

所以,长话短说,那里有一个(PHP / MySQL-)CMS可以处理这个吗?有什么建议吗?

如果CMS可以轻松地与我们的Zend Framework应用程序集成(或反之亦然),则可以获得额外分数。

2 个答案:

答案 0 :(得分:3)

你应该看看Percona,这是一个MySQL性能公司,他把MySQL放在类固醇上。轻松支持Master / Master / Master环境,无需更改master到master的自动增量值即可轻松实现。

他们有一个名为XtraDB Cluster的产品。它是一个免费的产品,就像MySQL一样,安装方式相同,但在数据库级别处理集群并且做得很好。

一旦掌控了数据库,就可以在其中一台服务器上安装CMS,进行更改,将其复制到所有其他服务器,并使整个环境都准备好故障转移。

答案 1 :(得分:2)

根据评论中添加的信息,我们似乎在讨论静态内容。

现有系统

据我所知,您已经有一个系统已经就位且稳定,可以部署静态内容。从这个意义上说,制造更复杂的情况是没有意义的。保持简单,大部分时间都能满足您的需求。

根据您的需要,您可以在数据库同步或文件同步之间进行选择。

文件同步

如果您可以完全静态发送所有内容,那么您的文件同步功能就会很好。虽然我在那里看到了一个问题。例如:如果您需要最新新闻列表,则还必须生成并同步它。当您使用数据库同步时,您只需执行简单查询SELECT * FROM news ORDER BY created_at DESC LIMIT 0,10。

同步操作量

另一点是您需要执行的同步量。如果你有一个屏幕,例如你的后端有10个新闻项目。作者创建了3个帖子并开始单击每个帖子的发布按钮。基本上,您的文件同步将在第一个之后开始同步。所以首先应该同步新的新闻项目。然后它应该更新最新的新闻项目列表,然后同步那个。

如果他们开始编辑得很好,那可能会有点糟糕。因为这也需要在标题更改上完成,例如。

数据库解决方案

这是数据库更擅长的地方,您只需更新记录即可实现。当新记录可用时,最新的新闻部分将自动更新。

相关静态内容问题

现在您有一个问题:您必须确保您的流程分为两个步骤: 1.同步图像和其他静态内容 2.同步和/或发布新闻项目

否则你会看到破碎的图像。这可以通过以下方式完成:确保直接启动新图像的同步。所以当它上传到CMS时。然后它将在新闻项目发布之前出现。您可以根据自己的需要进行验证。

<强>替代

由于这是静态内容,因此您可以更好地处理它。这将需要您的堆栈的新技术,所以首先验证是否真的需要它。新闻项目是一个工作流程。所以,它有彼此相邻的步骤。通常,对于工作流,您可以使用队列。因此,您创建一个包含新消息项的队列,一个用于发布的队列,一个用于同步静态项等的队列。

队列在缓存系统中运行良好。我认为有一个非常有趣的部分需要回顾。目前有强大的缓存系统可以使内容可用并同步它们。它们基于这样一个事实,即您有许多服务器提供相同的内容。它们可能是一个非常稳定和简单的解决方案,可以完成您的工作。但如上所述,如果您还没有考虑它们是否要为堆栈添加新的复杂性。