小编Gre*_*gra的帖子

使用外部API和智能内容建议设置移动应用程序的体系结构

我和我的一些同事已经开始研究为用户提供社交购买体验的iPhone应用程序.目标是为数以百万计的产品提供扩展的搜索功能(全文,模糊搜索,基于过滤器等),这些产品不断从几个产品列表API(如eBay和亚马逊)获取,然后进行标准化(即转换为字段,类别和关系),应用了一些业务逻辑,以便用户能够根据几个标准获得自定义内容(独特的配置文件,即年龄/性别,搜索历史记录,我的朋友购买的内容等).该应用程序还具有社交功能,如关于产品的帖子,喜欢和评论,跟随其他用户等.

所以现在我们正在尝试设计支持这些需求的服务器架构,其中包括性能考虑因素("给我所有与我的搜索词匹配的产品,并通过相关性对它们进行排序"应该运行得非常快~1到10秒)和可扩展性考虑(10个结果用户将获得与100,000个用户相同的时间结果,假设我可以投入更多的机器来解决这个问题).

我们假设我们将拥有数以万计的产品

我们想到的是(基于AWS):

  1. 设置Elastic Beanstalk以支持可伸缩性,方法是在流量增加时抛出更多EC2实例,并在流量减少时将其删除
  2. 使用MySQL设置RDS作为应用程序的RDBMS(管理用户,配置文件,规范化产品等)以及多个可用区域
  3. 在不同的服务器上设置后台"代理"进程,以便不断从API获取产品数据(具有可自定义的提取Que)
  4. 将上述"原始数据"存储在某些NoSQL中作为临时数据
  5. 设置另一个"代理"以规范数据,对其进行分析并将其插入RDBMS中,以便能够快速搜索已经基于用户不同的配置文件
  6. 设置缓存机制以减少RDBMS上的负载
  7. 建立一个好的全文搜索引擎(即Lucene)

我们主要考虑的是:

  1. Linux环境
  2. 主要是PHP和MySQL
  3. 性能是一个问题
  4. 可扩展性将在不久的将来(6-12个月)成为一个问题(希望:)

现在有几个问题:

  1. 架构是否有意义?
  2. 关于数据存储 - RDBMS是正确的选择还是我们应该考虑使用NoSQL引擎(即MongoDB)?
  3. 在解决这个问题时,我们应该考虑哪些技巧/方法?

顺便说一句,战争故事将非常感激:)

architecture rdbms amazon-web-services nosql

5
推荐指数
1
解决办法
466
查看次数

标签 统计

amazon-web-services ×1

architecture ×1

nosql ×1

rdbms ×1