商业 VS 开源 CMS 和负载平衡

发布于 2025-01-05 06:44:30 字数 1539 浏览 4 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

像极了他 2025-01-12 06:44:30

对于扩展 CMS 站点,通常需要与第三方工具兼容。

我最近的经验是使用 Drupal,但这些工具与其他基于 *AMP 的工具(即基于 PHP/Apache/MySQL)是相同的,就像大多数开源 CMS 一样。

您需要确定的真正关键问题是每个 CMS 与这些标准工具的兼容性,以实现可扩展性。这几乎比 CMS 本身的特定可扩展性功能更重要,这些功能在大多数现代 CMS 中几乎相同(积极的缓存等)。

Linux 的典型难题如下。您应该评估其中哪些部分对您很重要,哪些部分适用于您选择的 CMS。

  • Varnish:这个 HTTP 反向代理将位于您的主网络服务器前面,并尽可能有效地提供匿名页面请求。如果您的网站有大量匿名(未登录)流量,那么 Varnish 几乎可以为您提供与您的网站是静态 HTML 页面相同的性能。问题是:您的 CMS 必须与 Varnish 合作,要么通过附加模块,要么直接了解如何在这些代理之一背后运行。匿名页面必须在没有任何独特的cookie的情况下提供,否则Varnish就无法完成它的任务。
  • Memcached:这种内存中的对象缓存可用作 SQL 数据库中缓存表的替代方案。众所周知,内存访问比磁盘访问快 1000 倍,因此,如果您将这些缓存位保留在内存中,那么您的站点将无需使用数据库并旋转磁盘来运行查询,这是理所当然的。非常快。按理说,您需要足够的 RAM 来在内存中保存额外的内容副本。
  • CMS 中的缓存:所有现代 CMS 都尽力做到这一点,这是性能的关键。所有现代 CMS 的致命弱点是您无法真正很好地缓存登录数据(即仪表板为每个用户提供不同的内容)。因此,如果您的用户都已登录,例如社区网站或其他网站,那么无论是这个还是上面的两项都没有多大帮助。
  • CDN:当 CMS 人们抛出“使用 CDN”时,他们的意思有两点。一是顾名思义,在谷歌或亚马逊或其他人提供的内容交付网络上托管静态文件之类的东西,并且加载速度会更快。但它的另一件事是设置多个并行 DNS 名称来加载内容。您的浏览器一次最多可从单个域加载 6 个内容。如果您创建:a.example.com、b.example.com、c.example.com、d.example.com、e.example.com,然后如果您的 CMS 支持此 CDN 技术,则浏览器可以下载 30一次而不是 6 个 - 它可以从 a.、b.、c.、d. 和 e.example.com 中的每个项目中抓取 6 个项目(.css 文件、.js 文件、图像等)。这可以加快站点速度,但您的 CMS 必须支持它(内置或通过某种附加模块)
  • 数据库复制?如果您谈论的是在 MySQL 中执行此操作,这总是很棘手。无论哪种数据库,复制都是一个很难解决的问题,特别是如果它必须是双向复制(每一方都必须读取和写入)。如果您完美地完成上述所有操作,并尽可能购买最好的硬件,并将数据库放在自己的高性能服务器上,并且上面没有其他服务,并且使用一个漂亮的快速 raid-10 阵列(例如 6 个磁盘)来获得真正很棒的磁盘性能......那么您可能可以使用单个主数据库走很长的路。 (如果你把所有的鸡蛋都放在一个篮子里,那么复制到备用机器绝对是一个明智的主意)。无论如何,此时您已处于标准数据库复制领域...您的 CMS 可能支持多个数据库条目,但这在很大程度上是“您如何集群”的问题,而不是“您正在集群什么 CMS”的问题。如果任何现代替代方案不允许您为集群设置多个数据库主机名,我会感到惊讶,并且您始终可以通过循环 DNS 服务器的主机名在 DNS 中完成此操作。不过,这与您选择的 CMS 无关。

为了结束这一切并回答您的问题,我当然推荐 Drupal 作为坚如磐石的可扩展 CMS。扩展它是否很容易,以便它运行像 examer.com 或 Whitehouse.gov 这样的网站,或者拥有数百个甚至数千个子站点和数百万个节点的大学网站?哎呀不!在您选择的任何 CMS 中,这一挑战都不容易。但如果您解决了上述所有问题,您也应该能够选择任何现代流行的 CMS 并使其快速运行。

For scaling CMS sites, it's often a case of compatibility with 3rd party tools.

My recent experience has been with Drupal, but the tools are the same for other *AMP based tools (ie. PHP/Apache/MySQL based), like most open source CMS's are.

The real key thing to determine for you will be the compatibility of each CMS with these standard tools for getting the scalability happening. That is almost more important than the specific scalability features of the CMS itself, which are pretty much the same in most modern CMS's (aggressive caching and so on).

The typical pieces of the puzzle for Linux are the following. You should evaluate which of these pieces matter to you and which will work with the CMS you choose.

  • Varnish: This HTTP reverse proxy will sit in front of your main webserver and efficiently serve up anonymous page requests where it can. If you have a site with lots of anonymous (not logged in) traffic, then Varnish will pretty much give you the same performance you'd get if your site was static HTML pages. The catch: Your CMS must cooperate with Varnish, either through an add-on module or direct knowledge of how to behave behind one of these proxies. Anonymous pages must be served up without any unique cookies on them, or Varnish cannot do its thing.
  • Memcached: This in-memory object cache is used as an alternative to cache tables in your SQL database. As we all know, memory access is 1000 times faster than disk access, so it stands to reason that if you keep these cached bits in memory, instead of having to use the database and spin the disks to run queries.. that your site will be very fast. It also stands to reason you need enough RAM to hold extra copies of stuff in memory.
  • Caching in the CMS: All modern CMS's try do to this as well as they can, it's the key to performance. The achilles heel of all modern CMS's is that you can't really cache logged in data very well (ie. a dashboard that has different stuff to say for each user). So if your users are all logged in, say for a community site or something, then neither this nor the two items above is going to help all that much.
  • CDN: When CMS people throw around "use a CDN" they mean a couple things. One is what it sounds like, host stuff like static files on a content delivery network provided by Google or Amazon or someone, and things will load faster. But the other thing it means is to set up multiple parallel DNS names to load content off. Your browser will load 6 things at once max from a single domain. If you make: a.example.com, b.example.com, c.example.com, d.example.com, e.example.com, and then if your CMS supports this CDN technique, then a browser could download 30 things at once instead of 6 - it could grab 6 items (.css files, .js files, images, whatever) off each of a., b., c., d., and e.example.com. This speeds sites up, but again your CMS has to support it (built-in or through some kind of add on module)
  • Database replication? This is always prickly if you are talking about doing it in MySQL. Regardless of database, replication is a tough problem to solve, especially if it has to be 2-way replication (each side has to read and write). If you do everything above perfectly, and buy the best hardware you can, and stick the database on its own high performance server with no other services on it, and a nice fast raid-10 array say with 6 disks to get yourself really awesome disk performance........ then you could probably go a long way with a single master database. (it would definitely be a wise idea to replicate to a backup machine if you had all your eggs in one basket like that). Anyway, by this point you are in standard database replication land... Your CMS might support having multiple database entries, but it's largely more a question of "how do you cluster" rather than "what CMS are you clustering". I'd be surprised if any of the modern alternatives wouldn't allow you to set more than one database hostname for clustering, and you could always do it in DNS by round-robin'ing the hostname of your DNS server. Again though, not related to your choice of CMS really.

And to end this all of, and to answer your question, I of course recommend Drupal as a rock solid scalable CMS. Is it easy to scale it so it runs a site like examiner.com or whitehouse.gov or a university site with hundreds if not thousands of sub sites and millions of nodes? Heck no! Nor will that challenge be easy in any CMS you choose.. but you should also be able to choose any modern popular CMS and make it work fast, if you address all of the above.

爱已欠费 2025-01-12 06:44:30

我们目前在负载相当高的集群设置中使用 Alfresco。工作正常。不过,我们注意到 lucene 索引同步存在一些小问题 - 它可能需要一两分钟才能通过所有节点进行复制。

GA 版本是开源的。他们还提供广泛的文档和培训。

We are currently using Alfresco in a clustered setup with rather high loads. Works fine. We have noticed minor issues with lucene index synchonization though- it may take a minute or two for it to replicate through all nodes.

The GA version is open source. They also provide extensive documentation and training.

羁〃客ぐ 2025-01-12 06:44:30

这是我的观点,有些人可能不同意,但大多数中型企业内容管理系统(开源和商业)都提供负载平衡功能。问题是他们的解决方案的效率和可扩展性如何。例如,Sitefinity 提供负载平衡,其中网络场中的每台服务器都必须了解其他服务器。例如,如果我的网络场中有 20 台服务器,那么我必须配置每台服务器并确保它了解其他服务器。这确实很痛苦,但它仍然是一个“负载平衡”功能。我想说的是,在决定使用某个 CMS 之前,请确保您调查了负载平衡在该 CMS 中的工作原理。

This is my opinion and some might not agree with it, but the majority of medium to enterprise content management systems (both open source and commercial) offer load balancing functionality. The question is how efficient and scalable is their solution. For example, Sitefinity offers load balancing where each server in a web farm must be aware of other servers. For example, if I have 20 servers in a web farm, then I have to configure each server and make sure it's aware of other servers. This is a real pain, but it's still a "load balancing" feature. What I'm trying to say is make sure that you investigate on how the load balancing works in a certain CMS before you decide to use that CMS.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文