构建可扩展的Web站点读书笔记

构建可扩展的Web站点读书笔记

书读完了一遍,边做一个示例网站边写读书笔记。

第一章   绪论

不要花刘个月时间制定规范,再花一年来实施。花一天定规范,几天实现,几个月完善。这个建议和《梦断代码》惊人的相似。

第二章   Web应用程序

这章讲的是web站点需要分层,例如持久化存储层、业务逻辑层、展现层……示例网站采用Django作为框架,我理解的“层次”如下:

 

网站层次图

Django本身就是分层的,自称MTV框架。模板层使用Django自带的模板语言,此外包括XHTMLCSSJS等前端技术。视图则是纯的Python代码,可以使用Django框架带来的各种功能。模型层也是Python代码,但是主要的任务就是定义数据库模型(表结构),以及定义对这些模型的管理(manager),它会负责与数据库的连接。

下载Django之后,默认的配置采用SQLite数据库,可以迁移到MySQLPostgreSQL上。自己对PostgreSQL比较陌生,但是目前MySQL前途未卜,而Django官方又推荐PostgreSQL,决定难下。

同样,Django内置一个测试的服务器,不过不能用在生产环境。官方推荐Apache+mod_python,但是民间似乎传说nginx拥有速度优势。

第三章   开发环境

1.       使用源代码控制系统:SVN

2.       单步构建:代码要经过开发、提交测试,然后才能部署。

3.       问题跟踪(缺陷跟踪)Google Code好像有这个功能。Trac好像不错,但是应该要配置一段时间。

本段还介绍了微软的“零错误方法学”

编码规范:制定包括缩进,注释等的代码风格规范以及对变量名的约定。

测试:

回归测试(Regression Testing),确保程序没有旧病复发,建议不要太多,否则浪费时间。

手工测试web程序必经的步骤。

第四章   i18nL10nUnicode

本章大多介绍的是如何在PHP中使用UTF-8。幸运的是Django内部直接就采用了Unicode的处理字符串,而且自带一个i18n模块。

第五章   数据一致性和安全性

1.       过滤HTML输入。

2.       XSS:对输出进行escape,这个是Django的默认行为。

3.       SQL注入:Django基本上免疫,因为正常情况下不会手工构造SQL语句进行查询。

第六章   电子邮件

越过。

第七章   远程服务

介绍了socket、基于HTTPXML-RPCSOAP,最后介绍了Flickr利用自定义协议实现的文件存储协议。

第八章   瓶颈

找出瓶颈

把应用划分为逻辑组件,之后对每个组件进行分析,深入到硬件层次(CPU、内存I/O、硬盘I/O、网络I/O)

CPU:使用top查询。

磁盘I/Oiostat –c 可以看到CPU因等待I/O操作完成而处于空闲状态的百分比(iowait)iostat – dx查看更详细的报告。

网络I/Onetstat –i netstat –ieth0 –e

内存I/Ofree –m ,查看内存分配状态。vmstat –S M 物理内存和虚拟内存的使用。ps axRSS为驻留集(在主内存中)VSZ为工作集(虚拟大小)。避免使用SWAP

数据库:查询优化、索引优化、缓存。

第九章   扩展Web应用程序

水平扩展:多机器的软硬件最好是一致的,配置起来比较方便。

负载均衡DNS方式僵硬,硬件方式太贵,软件方式靠谱。

扩展MySQL

MySQL的复制(主从、主主)。主从的大概机制,主数据库向从数据库发送binary log,从数据库将受到的log写入relay log,再按顺序执行relay log。后面介绍了数据库分区(纵向扩展)以及联合(横向扩展)

存储扩展:

文件系统,当一个目录有太多的文件时,基于inodeUnix文件查找会很慢,而新的文件系统Reisserext3解决了这个问题。RAID、联合(GFSMogileFS)、缓存(memchachedSquid)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值