【转】web架构常用软件

2013/05/21 09:05
阅读数 169

1、反向代理软件
haproxy
nginx
squid
Varnish

2、负载
nginx
lvs
haproxy

3、key value缓存
redis
memcache

4 图片缓冲服务器
varnish
squid

5 web服务器
apache
nginx
iis
lighttpd

6、内容检索服务器
shpinx
xapain

7、消息队列
httpsqs http://blog.s135.com/httpsqs/ http://blog.xhbin.com/archives/1007
RabbitMQ
ActiveMQ

8、分布式文件系统
nfs,mfs,fastdfs,tfs

9、数据库
mysql mogodb sqlite

10、文件同步系统
drbd rysnc

11、监控平台
Nagios
cacti
zabbix

12、通讯方法
socket
管道
共享内存
http

13、数据交换格式
xml
json
protocol buffers
yaml

14、js相关工具

jquery (http://jquery.com/)
jtemplates 类似smarty (http://jtemplates.tpython.com/)

15、压力测试工具
webbench,ab,sysbench

视频教程

大型项目架构
前端 php
后端 c java python erlang

常用通讯方式 xml_rpc json_rpc http socket soap

php 缺点
1.php现编译先运行,无编译优化;
2.php无多线程,只能fork 进程
3.php 做超大型可扩展的网站 性能极差
4.php做分布式站点 扩展极差

linux服务器上用apache+fastcgi模式跑php程序

用户发起请求http://xxx.com/index.php
apache收到请求
问linux要了index.php文件的内容
apache调用cgi附上index.php的路径
apache调用cgi附上index.php路径
cgi调用php-cgi附上index.php内容
php-cgi处理index.php得到结果A
php-cgi返回A给cgi
cgi返回A给apache
apache返回A给用户浏览器

如果是nginx 的话
用户发起请求,nginx监听到请求,开始查找请求文件,不存在返回错误,或者一些权限检验,通过的话将请求转发到fastcgi监听的端口,fastcgi处理后返回给nginx,然后nginx可以处理下再返回给浏览器。

目前在HTTPServer这块基本可以看到有三种stack比较流行:
  
    Apache+mod_php5
  
    lighttp+spawn-fcgi
  
    nginx+PHP-FPM

一个具有一定知名度的网站,面对的问题无非是:稳定的性能、海量访问、海量数据。
优秀的website architecture应该良好的解决上述问题,那么Terry认为应该熟悉或了解下面的技术:
开发语言架构:应该至少熟悉一种web开发语言,包括java、web、python、ror等,然后采用比较稳健的、成熟的开发语言架构
单点登陆 自建session server,类似discuz的passport的方案
目前常用的是cas sso解决方案
web服务器集群: 负载均衡:软件比如keepalived,ultramokey.硬件如四层交换机;
web服务器集群方案:常用lvs
web服务器选型:apache、Nginx、lighttpd
其他服务器-如java 应用服务器的集群部署;
利用缓存: 页面静态化规则,页面缓存;缓存软件:squid,oscache,等
常用数据缓存解决方案,缓存数据命中率
如果采用ORM,考虑采用二级缓存
ajax:避免页面全局刷新,提高用户体验;合理使用,避免泛滥。
数据库 集群数据库 如果数据库采用mysql,那么一般是master-slave,对master进行写入或更新数据,对slave进行 数据的查询。如果使用 hibernate那么,使用native sql太动态绑定不同的数据库表。复杂一些可以研究一下Hibernate Shards,这是google捐献给hibernate的项目的。
oracle数据库集群,可以采用磁盘阵列方式,oracle部署在几个服务器上,表和数据文件放在磁盘阵列上

做好备份策略
分清不同数据的生命周期。根据不同的生命周期,做好数据的归档/转存的工作
商业数据存储首选大型商业数据库,其他数据可以用mysql等开源数据库。

搜索引擎: 常用的技术选型是lucene ,另外有ferret,Sphinx。
分布式存储和分布式查询
中文分词
网络蜘蛛: 知道如何抓取别人网站的网页
懂得如何屏蔽未知或部分蜘蛛访问你的网站

seo
关注互联网业内的情况 facebook的f8是啥回事
google的产品和api,了解Google Maps API、OpenSocial API、Google Apps等等
找到sns,blog,wiki等web2.0的技术表现形式
guice、google toolkit、Android
关注新冒出来一些网站的情况
研究和分析知名网站的架构
跟踪一些知名技术专家的文章或blog
适当的参加一些技术或互联网聚会和话题讨论

了解比较新的一些技术概念,如soa、esb、云计算、MapReduce、BigTable、Google,map和replication,
反向代理+CDN+cache

展开阅读全文
打赏
0
12 收藏
分享
加载中
总结的不错
2014/09/22 22:42
回复
举报
更多评论
打赏
1 评论
12 收藏
0
分享
返回顶部
顶部