本文共 2155 字,大约阅读时间需要 7 分钟。
第1章、网站架构及其演变过程
1.1. 软件三大类型
1.2. 网络结构
OIS参考模型一共分为7层,这个主要用于教学。实际使用为4层:
* 网络接入层-将节点接入目标 * 网络互联层-寻找连接目标 * 传输层-实际传输数据 * 应用层-使用接收到的数据1.3. 原始网站架构
1.4. 海量数据处理方案
1.4.1 缓存和页面静态化
缓存即将数据库中的数据临时保存起来,不用每次都从数据库中读取,加快访问速度。
缓存的方式:使用缓存框架(常用框架有Ehcache、Memcache和Redis)
注意:缓存技术主要是用在数据不频繁变化的情况页面静态化:将页面的大部分不变的资源直接保存下来,不需要再次生成。其中的动态资源可以使用Ajax来处理
1.4.2 数据库优化
优化表结构:设计合理的表格
使用存储过程代替直接操作:即直接存储而不使用sql语句调用
1.4.3 分离活跃的数据
将用户进行分离,活跃的用户为一组,每次优先在活跃组中查找。定期转移用户到对应的组1.4.4 批量读取和延迟修改
批量读取:都是为了减少操作次数,对于具有相同属性的用户设置一个共同属性列,每次只需查找此列属性相同的即可,而不需要对每一个用户都进行年龄、性别等的多次判断 延迟修改:主要针对高并发导致的频繁的数据修改。当并发量较高时,我们对修改的数据只保存在缓存中,不立即刷新到数据库,只是定期刷新到数据库。这样,就减少了数据库的操作。但是而有一个问题,即数据库中的数据没有同步,当保存缓存的机器出现故障,数据就丢失了,所以对于重要的数据需要进行特殊的处理,延迟修改只对一般的数据使用1.4.5 读写分离
读写分离的本质是对数据库进行集群,即将(不同的)操作分配到不同的数据库。使用主服务器和从服务器。写数据时:首先发送给主服务器,然后由主服务器分发给对应的从服务器。读数据时:将读数据分配给所有的从服务器处理。1.5 高并发的解决方案
1.5.1 应用与静态资源分离
将静态网页资源与应用逻辑处理进行分离,保存在不同的服务器。静态资源如:js、css、图片、文件等。减轻应用服务器的负担。1.5.2 页面缓存
将已经生成的页面先缓存起来,不需要每次都重新生成。(如Nginx服务器自带缓存、还有专门的Squid服务器)1.5.3 集群和分布式
集群:主要为了解决分流问题。每台服务器的作用相同,但是为了防止一个服务器访问过多,添加其他的服务器。比如QQ服务器有四川的、山西的等。 分布式:将不同的业务分发给不同的服务器。比如网页的静态服务器和应用服务器就相当于分布式关系。这样多台机器可以加快执行效率1.5.4 反向代理和代理
反向代理:服务器调用别的资源,我们并不知道资源地址。比如主服务器调用静态资源服务器 代理服务器:我们知道资源地址,但是无法访问,然后找了个第三方帮我们找。比如访问谷歌1.5.5 CDN
Content Delivery Network-内容分发网络-一种特殊的集群页面缓存服务器。根据地理位置和业务不同将请求分配到对应的服务器。比如手机用户,北京上海对应不同的人群,联通电信对不同的人群。1.5.6 网络底层优化
目前网络主要使用的是http协议和tcp/ip协议,这些传输效率都有一定的慢。谷歌目前制定了新的传输协议如Quic和Spdy(2015年写)。quic介于tcp和udp之间,http/2已经取代spdy。1.7 小结
网络架构主要围绕高并发和大数据进行,解决方式主要是使用缓存和多资源处理。多资源即多cpu,多服务器、多网络,多存储。多资源又可以分为单个资源处理一个完整请求和多个资源处理一个。多存储和多CPU的集群和分布式,多网络的CDN和静态资源分离第2章、常见协议和标准
2.1、DNS
域名解析协议:ip和网址的对应关系,从dns服务器获取,在本机保存DNS缓存2.2 tcp/ip协议和Socket
ip为网际互连层,用于查找地址 tcp为传输层,用于传输数据 tcp的三次握手和四次挥手– socket是tcp/ip协议的一个具体实现2.3 http是应用层的协议,主要用于对数据进行编码和解码,分为请求报文和响应报文
2.4 servlet和javaweb开发
servlet是对接收到的数据进行处理并生成返回给客户端的结果第3章、DNS设置
一个问题:当浏览器上不了网而qq客户端可以联网,表明DNS出现错误。浏览器访问需要使用域名。
转载地址:http://kqepi.baihongyu.com/