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


    前言
    这本书基本上是个大杂烩,讲述构建大型Web应用程序的方方面面,技术平台主要是基于LAMP体系,当然其思路可以在其它Web开发平台借鉴,翻译的中规中矩,有些地方略显晦涩。

    第一章绪论
    构建大型Web应用程序并不是一掷而就的,而是应该在事先在硬件和软件层次上仔细的规划。
    开始条件:
    1)Idea
    2)组建开发团队和开发环境
    3)构建过程中记录问题和流程方法(版本控制,协同工具,Wiki等)
    4)采用的合适的开发方法(迭代,瀑布).

    第二章Web应用程序体系结构
    核心思想:分层和模块化,根据系统职责

    大的分层:硬件平台和软件平台

    硬件平台是指机器,硬件组件,系统软件等

    硬件平台初期策略:
    1.购买经济型硬件
    共享硬件,专用硬件,主机托管,自有主机(DC)
    考虑硬件冗余

    表现层 javascript, css, html ,asp.net mvc3 razor engine 非侵入

    逻辑层

    持久层
    仔细设计各层接口 接口广义上的概念

    第3章开发环境
    1.使用源代码控制
    2.使用单步构建
    3.跟踪程序缺陷
    编码规范, 测试

    第4章国际化,本地化和Unicode
    i18n L10n

    本地化三种方法
    1.字符串替换
    2.多个模板集合
    3.多个前端

    Unicode编码
    字符集, 码点,编码, 代码页
    UTF-8, UTF-16, UTF-32
    UTF-8编码规则

    UTF-8优点:
    1.编码成字节流
    2.从左到右存储码点,做一个二进制形式的原始字节排序就可以将字符串按码点排序.

    Web输出:
    1.header content-type: text/html; charset=utf-8
    2.<meta http-equiv="Content-type" content="text/html; charset=UTF-8">

    XML
    <?xml version="0.1" encoding="utf-8">

    第5章数据
    一致性和安全性
    总体原则, 不信任任何外部输入数据源
    1.在编码级保证数据有效性
    2.保证数据良好的
    a.过滤控制字符
    b.过滤html(白名单和黑名单)
    c.协议过滤
    3.安全(XSS, SQL注入)

    第6章电子邮件
    把电子邮件当成一种输出输入数据工具
    应用
    1.文件上传
    2.移动博客
    3.支持跟踪
    4.简单的自动化和API

    第7章远程服务
    组件之间交换数据的协议,格式,策略问题
    首要规则就是不能依赖远程服务, 远程服务可能会失败
    套接字(打开,写入,读取,关闭)
    REST, XML-RPC, SOAP, 自定义协议和格式

    第8章瓶颈
    瓶颈是程序中耗时最多的部分。
    思路:
    1.整理出系统组件之间关系的逻辑图
    2.深入地查看每个组件时间是如何被花费的
    CPU周期,内存I/O, 磁盘I/O, 网络I/O
    3.数据库优化
    4.缓存

    第9章扩展Web应用程序
    PV
    每秒查询数(QPS)

    可扩展性定义:
    1.系统能够容纳使用率的增加 通俗的讲使用人数增加,当然不一定的是人,也可能是系统调用。
    2.系统能够容纳数据集的增加
    3.系统可维护

    硬件平台的扩展方式:

    垂直扩展即购买更强大的机器

    水平扩展
    考虑点:
    1.会增加管理成本
    2.硬件利用率可能不足,需仔细考量
    3.软件支持水平扩展

    水平扩展和垂直扩展结合

    冗余
    冷备,热备,完全热备(最好让备份的机器也参与平时的工作)

    网络扩展

    负载均衡
    1.DNS负载均衡
    缺点:
    a. DNS一般机器都会缓存,添加/删除机器可能不会立即见效
    b. 无法精确控制(流量,故障等)

    2.硬件负载均衡
    VIP,
    优点:
    1. 易管理
    2. 能检测故障问题
    缺点:
    价格贵

    3.软件负载均衡
    1.应用软件层次(Perbal, Pound)
    2.操作系统 (LVS)

    负载均衡实现:
    a. 第四层 TCP
    b. 第七层 HTTP

    大规模平衡
    为应用服务分区,划分一个或多个透明的集群

    MySQL扩展
    提高读能力
    1.主从复制
    2.树状复制

    提高写能力
    3.主主复制

    数据库分区
    1. 纵向分区
    2. 横向分区

    第十章 统计数据,监测与警告
    1. 跟踪Web统计数据
    2. Web服务器日志
    3. 应用程序监测
    4. 网络带宽监测
    5. 数据库统计数据

    第十一章 API

  • 相关阅读:
    忘记密码破解
    关于本地变量的理解
    MVC的请求过程(或者MVC三者的关系)
    static 静态 关键字
    博客搬家通知
    C#一个可以马上跑起来的反射例子Assembly的使用
    C#之DateTime日期格式解析
    AddressParsing在C#中好用的地址拆分地址结构化库Net5
    C#中获取本地IP地址方法
    ComdeDom生成对象Emit之引用其他成员类库
  • 原文地址:https://www.cnblogs.com/jjyjjyjjy/p/2937343.html
Copyright © 2020-2023  润新知