Sep 20

阅读杂记(HA,PHP) 不指定

felix021 @ 2011-9-20 12:44 [IT » 网络] 评论(0) , 引用(0) , 阅读(5758) | Via 本站原创 | |
通过Coolshell.cn的这篇文章看了一些东西,简单记下来,方便以后查询。

Tagged: 从简单的15台LAMP服务器发展到现在的1000台服务器,首先采用PHP、单数据库,以实现快速迭代开发;加入memcached大幅缓解数据库压力;使用多台数据库服务器(主从?)扩展处理能力;引入Lucene(Java),提供搜索服务(这个PHP没法做);数据库压力还是太大,采用Oracle的Sharded Database横向扩展处理能力,同时因为大量的数据库请求,php的短连接不合适,加入了一个中间层。于是整个架构中的各种大压力环节可以简单地使用增加机器的方式来横向扩展,让开发人员可以专注于功能(feature)的开发,而不是焦头烂额地处理各种问题。CTO貌似曾经被Java1.0坑过,有点反感,但是在使用Lucene以后发现,引入Java,使得开发很多类型的功能变得可能(尤其是这些事情对于php不合适,"impractical"),比如利用大量常驻内存的数据来构造关系网、个性化搜索建议等。

Flipkart: (不知道为什么在Load Balancer一节专门提到Apache Thrift) 使用HAProxy和四层设备来进行负载均衡。HAProxy提供RoundRobin和基于IP的两种算法实现负载均衡,支持在4层或者7层进行转发(甚至可以用来搞MySQL),支持高并发,并且能够进行服务器健康检测,总的来说是各方面都比较均衡的解决方案。使用Varnish来实现HTTP缓存,据说效率比Squid要高好几倍,主要是因为将swap的事情交给操作系统来完成。最外面还加了一层nginx,它对js等静态小文件的效率效率非常的高,而且也支持多种负载均衡的协议(不明白为什么要搞好几层负载均衡)。在负载均衡环节,同一个session(一个用户的连续多次请求)不一定落在一个机器上,但是保证落在一组机器,而不是任意一台机器上(三种方案各有优劣,均衡考虑,但是实现复杂性也增加了)。使用heartbeat来保证单点服务的高可用性。使用php-fpm。fk-w3-agent: 运行于每一台web机器上的小型的java daemon,实现php本身不适合完成的异步log、连接池、多线程等、(准)实时配置更新和部署、运行时数据统计。"There are only two hard things in computer science: cache invalidation and naming things."

Beyond PHP: php没能做到的,很多杂碎和坑,可以看看。



欢迎扫码关注:




转载请注明出自 ,如是转载文则注明原出处,谢谢:)
RSS订阅地址: https://www.felix021.com/blog/feed.php
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   *非必须
网址   电邮   [注册]