我和我的团队正在开发一个应用程序,它需要能够处理相当大的流量。不是facebook级别的,但在未来,我希望能够在不重写大量代码的情况下进行扩展。
我的想法是将所有东西模块化成具有各自接口的独立服务。例如,消息传递将有一个消息传递接口,该接口可能具有作为方法的send和getMessages(),然后PHP web应用程序将简单地通过soap或curl或类似的东西来查询此接口。消息传递应用程序可以是任何类型的应用程序,比如Java应用程序、Python应用程序或任何适合特定功能的应用程序,都有自己的独立数据库分片。
这是一种好的方法吗?
发布于 2010-04-03 02:22:48
模块化
我的想法是把所有东西模块化成具有自己接口的独立服务。例如,消息传递将有一个消息传递接口,该接口可能具有作为方法的send和getMessages(),然后PHP web应用程序将简单地通过soap或curl或类似的东西来查询此接口
我喜欢分离每个服务模块的想法(良好的编码原则)。我不喜欢SOAP的部分:(.我认为这太复杂了。我会选择像JSON-RPC之类的东西。
一些小贴士:
我和我的团队正在开发一个应用程序,它需要能够处理相当大的流量。不是facebook级别的,但在未来,我希望能够在不重写大量代码的情况下进行扩展。
像其他人一样,谷歌
80%的最终用户响应时间花在前端上。大部分时间都花在下载页面中的所有组件上:图像、样式表、脚本、Flash等。减少组件的数量反过来又减少了呈现页面所需的HTTP请求的数量。这是更快的页面的关键。
使用HipHop,我们已经将
服务器上的CPU使用率平均降低了约50%,具体取决于页面。更少的CPU意味着更少的服务器,这意味着更少的开销
RAM is the new Disk
!Cache,cache,cache!,例如APC,memcached,redis。
PHP
发布于 2010-04-02 22:59:36
作为第一步,这听起来很合理,但请记住,PHP层和消息传递层之间的通信会增加一些延迟。您还可以考虑:
的性能
在High Scalability上也有一些很棒的文章,你可能会发现它们对你有帮助。
最后,请记住,过度设计解决方案是很容易的。最好的办法是在整个过程中持续测量负载、性能、资源利用率等,然后根据需要使用这些数据进行调整。
发布于 2010-04-02 23:05:27
缓存、缓存和更多缓存。SQL查询缓存,操作码缓存,避免多次查询相同的东西。然后在你跑步的时候使用一个分析器来跟踪你的弱点在哪里。
https://stackoverflow.com/questions/2567254
复制相似问题