chr*_*ann 12 php web-services scalability
我和我的团队正在开发一个需要能够处理相当繁忙的流量的应用程序.不是Facebook级别,但在未来我希望能够扩展到没有大量代码重写.
我的想法是通过自己的界面将所有内容模块化为单独的服务.因此,例如,消息传递将具有可能具有send和getMessages()作为方法的消息传递接口,然后PHP Web应用程序将通过soap或curl或类似的东西简单地查询该接口.然后,消息传递应用程序可以是任何类型的应用程序,因此Java应用程序或Python或任何适合于具有其自己的单独数据库分片的特定功能的应用程序.
这是一个好方法吗?
Alf*_*red 20
我的想法是通过自己的界面将所有内容模块化为单独的服务.因此,例如,消息传递将具有可能具有send和getMessages()作为方法的消息传递接口,然后PHP Web应用程序将通过soap或curl或类似的东西简单地查询此接口
我喜欢将每个服务模块分开的想法(良好的编码原理).我不喜欢关于SOAP的部分:(.我认为这是复杂的方法.我会选择像JSON-RPC之类的东西.
我和我的团队正在开发一个需要能够处理相当繁忙的流量的应用程序.不是Facebook级别,但在未来我希望能够扩展到没有大量代码重写.
最终用户响应时间的80%用于前端.大部分时间都在下载页面中的所有组件:图像,样式表,脚本,Flash等.减少组件数量反过来减少了呈现页面所需的HTTP请求数量.这是更快页面的关键.
使用HipHop,我们将Web服务器上的CPU使用率平均降低了约50%,具体取决于页面.CPU越少意味着服务器越少,这意味着开销越少
如果您希望您的网站扩展,您必须遵循口头禅:
这听起来很合理作为第一步,请记住PHP层和消息传递层之间的流量会增加一些延迟.您可能还会考虑:
通过将会话数据存储在数据库中,将Web服务器扩展到多台计算机.一旦你可以支持2个Web服务器,添加第三个(第四个,第五个等)应该很简单.请记住,您最终可能还需要将消息传递层扩展到多台计算机.
使用PHP e-Accelerator等工具缓存已编译的脚本; 应该有助于提高Web层的性能
有一些关于高可伸缩性的好文章,你可能会觉得有帮助.
最后,请记住,过度设计解决方案很容易.最好的办法是在整个过程中持续测量负载,性能,资源利用率等 - 然后根据需要使用这些数据进行调整.