2

我在一家经营多家互联网商店的公司工作。我们即将彻底重写整个代码:网站内容和产品管理、订单处理、合作伙伴关系、会计、客户群等。目前我们有一个系统,所有的东西(所有内部管理站点、业务逻辑和互联网商店网站)都紧密耦合在单个 LAMP 实例上运行,并且绝对所有数据都位于一个字面上的单个垃圾数据库中。正因为如此(也因为 10 年的发展,部分从 perl 重写,php 代码质量)引入了新的网络商店,重新设计任何现有的或改变任何逻辑都是不可能的任务。

为了不仅重写旧代码而且优化系统架构,我肯定决定将网站(相互)分离,将“业务核心”与网站和业务核心相互分离。

从某一点来看,所有网店都主要销售一种常见的产品基础,它们就像镜子一样,有时只是针对国际客户进行了不同的设计(标题和描述可能会有所不同)。我们销售的东西是一种服务产品,它依赖于当地的合作伙伴,但具有共同的预定义产品范围。但是在几个城市我们有特价,在其他城市我们提供除了普通范围之外的增强产品范围。因此,我们还运行专注于单个城市的专门网站、仅销售特价商品的网站等等。

与每个网站都有自己的产品数据库(有时是另一个网站的副本)的解决方案相比,我正在考虑将所有产品描述信息、不同城市和/或不同站点的可用性和价格组合到一个独立的产品管理系统中并通过 SOAP 提供所有信息。每次任何用户访问任何站点时,站点都会使用该服务(提供一些参数)然后列出产品。显然,可以开发通用访问库以将其包含到每个站点。

1)该解决方案是否足够?如果没有缓存,它会执行得足够快吗?我们的资源有限(1.5 开发人员),所以我尽量不(如果可能)引入额外的技术复杂性,例如在每个站点上使用 memcached 的要求。

2)假设,我以解耦的方式重建系统。收益是否足以让我自己参与 memcached 等的所有工作?

3)在SOAP服务器端缓存数据是合理的,而不是在网站上继续发出数千个soap请求?

所有系统将被解耦,其中一些相关的网站例如订单处理,客户授权(所有网站通用),收款集成等。如果订单处理时需要下订单-site通过SOAP远程把它放到订单处理系统中,然后反过来暴露自己的SOAP服务器来接收订单状态更新。

4) 以 SOAP 为中心的解耦哲学对吗?

使用的技术是 nginx、php、MySQL

4

1 回答 1

0

爱德华。我会尽力回答你的问题。首先,我将给出一些序言,然后逐点介绍:

一、实际上很明显,完全重写必须是对系统架构的优化,只是为了有一定的意义。在您的特定情况下,将“一些”模块化引入架构是一种优化。(我还要强调,在你绑定一些 AR 风格的应用程序框架之前,你的代码中必须至少有三个可识别的语料库:

1)模型现在是一个非常“通用”的术语,但将领域的所有抽象知识(对象和关系)与与该领域没有太大关系的任何事物分开仍然是有意义的
2)数据持久性组织,其中基本上是一个“数据访问层”,但我希望由于您选择的 ORM 框架,它可以不那么厚。
3)其他库代码,以上都不是

使用此设置,您可以使所有大量代码部分在可能需要的任意数量的虚拟节点上可重新分发和共享。

二、我可以做的一个小评论是关于应用程序质量的一般概念。您将被迫在系统的简洁性、项目截止日期和由此产生的性能指标之间找到平衡点。这些都是矛盾的要求,我仍然不能说你的主要情况是什么。但是过于笼统和抽象的代码可能会变得难以维护,因此您必须至少对结果系统的功能要求进行有效描述。我猜至少有效期为 3-5 个月。


现在相关部分:
1)足够?至少它必须比你现在拥有的东西更充足。它会在没有缓存的情况下快速执行吗?我真的不知道,但我认为简短的回答是“不” - 我想你的意思是目标数据缓存(大型数据集),我看不出它适合任何类似 memcache 的东西。(顺便说一句,您没有 1.5 的开发人员,但是 (1 - 0.25) 的开发人员,我猜是什么给了您 0.75 :))
2)作为建议,您可以用比 PHP 更糟糕的方式编写与业务逻辑相关的代理。除此之外 - 取决于您对可能涉及的技术的个人经验。
3)我认为这两种方式都是可能的,但我仍然认为网页端的缓存更好,因为你可以消除可能的瓶颈
4)对于那个具体的例子?不在我的视野中。作为一个论点,我可以说整合两个网站(!)通常是一个糟糕的过程。

于 2010-08-17T18:12:27.043 回答