6.md 5.9 KB
Newer Older
W
wizardforcel 已提交
1
# ThemBid 架构
W
init  
wizardforcel 已提交
2

W
wizardforcel 已提交
3
> 原文: [http://highscalability.com/blog/2007/7/26/thembid-architecture.html](http://highscalability.com/blog/2007/7/26/thembid-architecture.html)
W
init  
wizardforcel 已提交
4

W
wizardforcel 已提交
5
ThemBid 提供了一个市场,需要完成工作的人们可以广播他们的请求,并接受竞争该工作的人们的出价。 与在 HighScalability 上介绍的许多网站不同,ThemBid 的流行程度不及 Paris Hilton。 它不是媒体的宠儿,也不是行业的巨头。 但是我喜欢的是他们有一个策略,可以构建网站的观点,并且足够亲切地分享有关如何构建网站的非常详细的说明。 他们甚至深入研究了所使用的各种软件包的实际安装细节。 看看他们的工作,任何人都可以从中受益。
W
init  
wizardforcel 已提交
6

W
wizardforcel 已提交
7
网站:http://www.thembid.com/
W
init  
wizardforcel 已提交
8

W
wizardforcel 已提交
9
## 信息来源
W
init  
wizardforcel 已提交
10

W
wizardforcel 已提交
11
*   [使用 Ubuntu,Symfony 和 Lighttpd 构建可扩展的 Web 2.0 站点](http://blog.thembid.com/index.php/2007/04/05/build-scalable-web-20-sites-with-ubuntu-symfony-and-lighttpd/)
W
init  
wizardforcel 已提交
12

W
wizardforcel 已提交
13
    ## 平台
W
init  
wizardforcel 已提交
14

W
wizardforcel 已提交
15
    *   Linux(Ubuntu)*   Symfony*   Lighttpd*   的 PHP*   电子加速器*   蚀*   慕宁*   AWStats
W
init  
wizardforcel 已提交
16

W
wizardforcel 已提交
17
    ## 里面有什么?
W
init  
wizardforcel 已提交
18

W
wizardforcel 已提交
19
    ### 统计资料
W
init  
wizardforcel 已提交
20

W
wizardforcel 已提交
21
    *   从 2006 年 12 月开始工作,到 2007 年 3 月进行了完整的演示。*   一名开发人员/系统管理员与兼职图形设计师合作。*   启动后针对了数千名用户。
W
init  
wizardforcel 已提交
22

W
wizardforcel 已提交
23
    ### 架构
W
init  
wizardforcel 已提交
24

W
wizardforcel 已提交
25
    *   **硬件**。 具有 2GB RAM 的双核服务器*   **存储**。 RAID1 上的 2 x 36SCSI 10K RPM。*   **数据中心**。 由于过去的积极经验,他们与 Layeredtech 一起使用了托管服务器。*   **开发环境**。 Ubuntu 和 Eclipse。*   **操作系统**。 他们选择 Ubuntu 的服务器发行版是因为它们是在客户端使用的,并且 Ubuntu 支持“比典型的 IT 部署更简单的安装和更容易的维护”。*   **Web 服务器**。 Lighttpd 用于处理静态内容并将动态 PHP 页面请求转发到 FastCGI。*   **数据库**。 MySQL 的。 当需要增长时,想法是转向主从配置,它们可能是 MySQL 集群。*   **Web 框架**。 之所以选择 PHP 是因为他们知道它,并且 Digg 和 Yahoo 等其他成功的网站也成功地部署了 PHP。 他们选择 Symfony 作为那里的框架,是因为它具有出色的文档和活跃的开发社区。 雅虎也使用 Symfony。 这个决定对他们来说效果很好。*   **PHP 缓存**。 eAccelerator 用于编译和缓存 PHP 脚本。*   **对象和内容缓存**。 该计划是要缓存很多内容。 对于像他们这样的出价网站,这是有道理的。 许多片段会被反复使用,因此将它们放入内存将加快整个系统的速度,并减轻数据库和 IO 系统的压力。 最初,基于内存的文件系统顶部使用了 SQLite 缓存。 该选择是因为它得到了 Symfony 的支持。 当有 memcached 插件可用时,他们会尝试的。*   **客户端缓存**。 Lighttp 的 mod_expire 模块用于防止浏览器不必要地重新下载很少更改的 Javascript,样式表和图像。*   **监视**。 Munin 用于监视其资源使用情况。 只需访问“ yoursite.com/status”即可查看发生了什么。*   **日志分析**。 AWStats 用于跟踪点击数和请求类型。 此信息可用于确定瓶颈。
W
init  
wizardforcel 已提交
26

W
wizardforcel 已提交
27 28 29 30 31 32
    *   **可伸缩性计划**。
    -使用 Munin 告诉何时考虑升级。 当您的增长趋势很快将与资源趋势交叉时,就该采取行动了。
    -将 MySQL 移至单独的服务器。 这样可以释放资源(CPU,磁盘,内存)。 您要在此服务器上运行的内容取决于其功能。 也许在上面运行一个 memcached 服务器。
    -使用 memcached 移至分布式内存缓存。
    -添加 MySQL 主/从配置。
    -如果需要更多的 Web 服务器,我们可以在前端使用 LVS 作为负载均衡器。
W
init  
wizardforcel 已提交
33

W
wizardforcel 已提交
34
    *   **Future Directions** . Work on fault tolerance.
W
init  
wizardforcel 已提交
35

W
wizardforcel 已提交
36
    ## 得到教训
W
init  
wizardforcel 已提交
37

W
wizardforcel 已提交
38
    *   **使用通用的低成本工具**,只需几个人就可以相当快地创建一个不错的网站。 而且您的系统将强大而强大。 没有偷工减料。
W
init  
wizardforcel 已提交
39

W
wizardforcel 已提交
40
    *   **使用系统的反馈**了解需要优化的内容以及何时进行扩展。
W
init  
wizardforcel 已提交
41

W
wizardforcel 已提交
42
    *   **好的文档和活跃的社区吸引了人们**。 对于人们决定使用什么产品,这些都是非常有吸引力的品质。 当看起来您可能在未来无路可走而无所适从时陷入困境时,很难使用工具链。 如果您使工具变得难以理解,学习,使用和部署,那么它们将变得死气沉沉。
W
init  
wizardforcel 已提交
43

W
wizardforcel 已提交
44
    *   **坚持使用熟悉的**。 它可能不是最佳的,也可能不是最佳的,但更重要的是您要开始并取得进步。 您不想延迟发布网站,这样您就可以学习一个完全不同的工具链,这可能会使您的生活变得更轻松,并且在某些未来的计划中。 未来是现在。
W
init  
wizardforcel 已提交
45

W
wizardforcel 已提交
46
    *   **使用对他人有用的东西**。 Yahoo 和 Digg 使用 PHP 的事实是一个很好的建议。 当然,PHP 不是构建站点的唯一方法,但它确实降低了风险水平并帮助您在晚上入睡。 这也意味着有一个活跃的社区可以在您遇到问题时为您提供帮助。
W
init  
wizardforcel 已提交
47

W
wizardforcel 已提交
48
我希望您能为我的 Wiki 撰写有关整个可伸缩性问题的文章。 我希望使其成为网站,seo,sem 创建 Wiki。 我喜欢这些资源,很可能会将您的许多想法添加到我的网站中。 这篇文章是如此复杂,完美地引导了我。 为了制作更多的访问者,对您的策略进行视频/截屏怎么办?
W
init  
wizardforcel 已提交
49

W
wizardforcel 已提交
50
本文错过了很多真正的高可伸缩性问题。
W
init  
wizardforcel 已提交
51

W
wizardforcel 已提交
52
如果站点扩展到 Ebay / Amazon 的规模,此可伸缩性计划是否可行? 没有。
W
init  
wizardforcel 已提交
53

W
wizardforcel 已提交
54
设计高度可扩展的网站时,您需要一个计划来扩展各个方面。 这包括数据库,内容生成,静态数据和网络。
W
init  
wizardforcel 已提交
55

W
wizardforcel 已提交
56
可伸缩性与您使用的硬件,RDBM 或编程语言/框架无关。 这是关于它们如何彼此交互以及如何摆脱单个瓶颈点。
W
init  
wizardforcel 已提交
57

W
wizardforcel 已提交
58
本文中的体系结构是有缺陷的,不应用作可伸缩性模型。