大型网站技术架构读书笔记

大型网站架构发展历程javascript

一、应用服务和数据服务分离。
二、使用缓存改善网站的性能
三、使用集群改善网站的并发处理能力。
四、数据库读写分离
五、使用反向代理和CDN加速网站的访问速度
六、使用分布式文件系统和分布式数据库
七、使用NoSql数据库和搜索引擎
八、业务拆分
九、分布式服务

大型网站的架构模式css

一、分层。分层是业务系统中最多见的一种架构模式,将系统在横向维度上切分红几个部分,每一个部分负责相对比较单一的职责,而后经过上层对下层的依赖和调用组成一个完整的系统
    
二、分割。分层是对软件的横向切分,而分割是在纵向方面对软件进行切分

三、分布式。对大型网站而言,分层和分割的最终目的是为了方便切分后个模块的分布式部署。
    分布式面临的问题:
    1)分布式意味着服务调用必须经过网络,这可能会对性能形成严重的影响
    2)服务器越多,服务宕机的几率越大
    3)数据一致性难以保证
    4)开发管理维护困难
    经常使用的分布式方案:
    1)分布式运用和服务。
    2)分布式静态资源
    3)分布式数据存储
    4)分布式计算
    
四、集群。集群部署,经过负载均衡实现故障转移,提升服务的可用性

五、缓存。经过缓存加速数据的访问和处理速度
    经常使用的缓存方式有:
    1)CDN。内容分发网络,部署在距离用户终端最近的网络服务商,能够用来缓存一些静态资源,快速返回给用户
    2)反向代理。前端框架的一部分,部署在网站前端,当用户请求到达数据中心时,最早访问的就是反向代理服务器,
    3)本地缓存。入redis,将热点数据缓存到本地缓存中,加速访问响应速度
    4)分布式缓存
    
六、异步。异步是系统之间解耦的重要手段,将一个业务分红多个阶段,各阶段之间经过共享数据的方式异步执行
    异步执行的优势:
        1)提升系统的可用性。若是后端消费者服务宕机,消息会堆积在消息服务中,不会影响系统的可用性
        2)加速网站响应速度。生产服务器将业务请求处理完成后写入到消息服务器,而后直接返回,不须要等待消费者服务处理完成,减小响应延迟
        3)消除并发访问高峰。
        
七、数据冗余。

web前端优化策略html

一、减小http请求。主要手段:合并css、合并javascript、合并图片
二、使用浏览器缓存
三、启用压缩。在服务端对文件进行压缩,在浏览器短进行解压,从而较少同窗传输的数据量
四、css放在最上层,javascript放在最下层
五、较少cookie传输太大的cookie会严重影响数据传输
六、cdn加速。cdn可以缓存通常的静态资源,如图片、文件、css、javascript等
七、反向代理。

应用服务器优化策略前端

一、分布式缓存。缓存高频访问的热点数据
    一下状况不适合使用缓存
    1)频繁修改的数据。若是数据被频繁修改,会出现数据写入到缓存中还将来得及读取就已经失效的状况,此时使用缓存会增长系统负担
    2)没有热点的访问。若是访问不遵循二八定律,那么缓存没有意义
    3)数据不一致与脏读。通常缓存会设置必定的有效时间,一旦超过有效时间,就要从新从数据库中加载,所以运用要容忍必定时间的数据不一致性。若是运用要求数据的强一致性,可能不适合使用缓存
二、异步操做。使用异步可改善响应延迟,同时能够减少高峰期数据库压力
三、使用集群。将并发访问的请求分发到多台服务器上,避免一服务器由于负载压力过大而相应缓慢。
四、代码优化。
    1)多线程。在多线程编程时须要注意几点:将对象设计为无状态的;使用局部变量;并发访问资源时使用锁
    2)资源复用。资源复用有两种模式:单例和对象池
        单例:spring构造对象默认使用单例模式
        对象池:数据库链接池
    3)数据结构。
    4)垃圾回收

RAID(廉价磁盘冗余阵列)java

RAID技术主要是为了磁盘的访问延迟,加强磁盘的可用性和容错能力
一、raid0,数据写入缓冲区时,更具磁盘数量将数据分红N份,这些数据同时并发写入磁盘,使得总体写入速度是一块磁盘的N倍。读取时也同样,所以RAID0具备极快的读取和写入速度,可是因为 不作数据备份,一块磁盘损坏,数据完整性即遭到破坏
二、RAID1。数据写入时,将数据写入两块磁盘,这样任意一块磁盘损坏都不会破坏数据的完整性
三、RAID10。结合RAID0和RAID1,将全部磁盘平均分红两份,数据同时写入两份磁盘。磁盘利用率低
四、RAID3。在数据写入时,将数据分红n-1份,并发的写入n-1份磁盘,并在第n块磁盘记录校验数据,任何一块磁盘损坏均可以利用其余n-1块磁盘的数据修复。缺点是第n块磁盘更容易损坏
五、RAID5。和RAID3相似,可是校验数据不在固定写入第n块磁盘,而是螺旋的写入到每块磁盘中
六、RAID6。和RAID5相似,可是数据写入n-2块磁盘,并螺旋式的在两块磁盘写入校验信息

数据的一致性web

强一致性:各个副本的数据在物理储存中老是一致的
用户一致性:数据在各物理副本上可能不一致,可是在用户访问的时候经过纠错和校验机制,保证用户获得的是一个一致且正群的数据
最终一致性:即物理机上的数据多是不一致的,终端用户访问的数据也多是不一致的,但系统通过一段时间的自我恢复和修正,数据最终会达到一致性

应用服务器集群的伸缩性设计redis

一、http重定向负载均衡。利用http重定向协议实现负载均衡。即客户端统一访问一台重定向负载均衡器,由负载均衡器计算获得后端服务器具体的ip地址返回给客户端,客户端自动从新经过ip请求具体的服务器
    优势是简单,缺点是客户端须要请求2次才能完成一次访问,重定向服务器自身的处理能力可能成为性能瓶颈
    
二、DNS域名解析负载均衡。客户端经过域名访问DNS服务器,DNS服务解析域名获取具体后端ip返回给客户端,客户端自动根据ip从新请求具体的后端服务

三、反向代理负载均衡。客户端请求到反向代理服务器,反向代理服务器路由到具体的后端服务而后转发请求,后端服务处理完请求以后将结果返回给反向代理服务器,而后反向代理服务器再将结果返回给客户端

四、ip负载均衡。用户请求落在负载均衡服务器,负载均衡服务器根据负载均衡算法获得后端服务ip,而后服务均衡服务器将请求转发到后端,相似于反响代理负载均衡

五、数据链路层负载均衡。客户端请求到负载均衡服务器,负载均衡服务器路由到后端服务,后端服务处理完请求后直接将结果返回到客户端,也称做直接路由

经常使用的负载均衡算法:算法

轮询:全部请求一次被分发到各个服务器上
加权轮询:在轮询的基础上根据权重将请求路由到各个服务器上,使得高性能的服务器有机会处理更多请求
随机:请求随机分配到不一样的服务器上
最少链接:请求分发到最少处理链接的服务器上
源地址散列:经过散列算法,将相同地址的请求落到同一个服务器上

网站的安全spring

一、XSS攻击
    XSS即跨站点脚本攻击,指黑客经过篡改网页,注入恶意的html脚本,在用户浏览网页时,控制用户浏览器进行恶意操做的一种攻击方式
    防护方式:对用户输入的危险字符进行转意、对用户请求添加httpOnly属性,避免被攻击脚本窃取cookie
    
二、sql注入
    攻击者在http请求中构造恶意sql命令,从而使数据库sql执行时,恶意sql被一块儿执行
    防护:参数绑定或者字符转意

三、CSRF攻击
    CSRF跨站请求伪造:攻击者铜鼓跨站请求,以合法用户的身份进行非法操做
    防护:表单token、验证码、来源检查

经常使用的加密手段:sql

一、单向散列:如MD五、SHA加密
二、对称加密:指加密和解密使用的是同一个秘钥。如DES算法、RC算法等
三、非对称加密:指加密和解密用的不是同一个秘钥,其中对外界公开的称为公钥,另外一个只有用户本身知道,被称为私钥。如RSA算法
相关文章
相关标签/搜索