大型网站架构发展历程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算法