优化(2)
优化四:应用服务器集群优化
应用服务器:webserver 业务和逻辑处理
应用服务器的集群定义:服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。
负载均衡,不仅仅能做反向代理(不是反向代理):
请求到一个负载服务器,然后把请求分发给应用服务器,并把数据返回,所以得保持负载服务器的高可用性(keepalived)
第一种形式(基本上被淘汰了):HTTP重定向负载均衡(用户发起一个请求到负载服务器(在应用服务器之前搭的,在网站的机房里),返回来一个新的IP地址,然后用户拿着新的IP去访问实际存在的服务器301永久重定向、302临时重定向【用的是这种】)
2系列状态码:请求成功之类的;3系列状态码:重定向;4系列状态码:请求语法错误 ;5系列状态码:服务器错误
优点:1.搭建非常简单
缺点:1.用户发起了两次请求,性能差 响应时间较慢
2.所有请求都有负载服务器分发,压力大,容易成为网站的瓶颈
3.重定向不利于SEO优化,可能被爬虫认为作弊(以后不爬了)
4.直接访问应用服务器危险性大(不安全)
拓展知识:SEO是由英文Search Engine Optimization缩写而来, 中文意译为“搜索引擎优化”!SEO是指通过对网站进行站内优化和修复(网站Web结构调整、网站内容建设、网站代码优化和编码等)和站外优化,从而提高网站的网站关键词排名以及公司产品的曝光度。通过搜索引擎查找信息是当今网民们寻找网上信息和资源的主要手段。
提高SEO排名方法:
1.新鲜的(爬虫没爬过的)
2.离百度蜘蛛近的 静态页面
3.不挣扎的 (内容不易变的,不经常重定向的)
拓展知识:百度蜘蛛,是百度搜索引擎的一个自动程序。它的作用是访问收集整理互联网上的网页、图片、视频等内容,然后分门别类建立索引数据库, 使用户能在百度搜索引擎中搜索到您网站的网页、图片、视频等内容。
第二种形式:DNS解析(只解决了负载服务器是本网站瓶颈的问题)
适用于超大型网站架构
(用户发起一个请求到负载服务器(在应用服务器之前11搭的,在网站的机房里),返回来一个新的IP地址,然后用户拿着新的IP去访问实际存在的服务器)
其中机房里还可以再加多层负载均衡服务器
优点:1.搭建简单
2.是由运营商DNS解析的,不用自己负载服务器瓶颈问题
3.支持按照地理位置解析,加快反应时间(例如在北京直接请求北京的站点)
与第一种HTTP重定向区别:负载服务器不在机房了,在网络运营商那里()
无论怎样都走服务运营商这条线(不易瘫)
第三种形式:反向代理
原理:用户发起一个请求到负载服务器(反向代理有两个网卡,一个对内,一个对外),对外的网卡接待,然后通过计算,通知对内网卡去访问实际存在的服务器,然后web server把数据返回给内网网卡,对内网卡发送给对外网卡,最后负载把数据返回给用户
缺点:简答:(反向代理会成为中转站,可能成为瓶颈)
1.两个网卡,一个对外,一个对内,因此在并发连接请求数量非常大的时候,代理服务器的负载也就非常大了,在最后代理服务器本身会成为服务的瓶颈
2.反向代理是处于OSI参考模型第七层应用的,所以就必须为每一种应用服务专门开发一个反向代理服务器,这样就限制了反向代理负载均衡技术的应用范围,现在一般都用于对web服务器的负载均衡。
第四种形式:IP负载均衡
原理:用户发起一个请求到负载服务器(通过计算解析成IP地址),然后根据真实的物理地址去访问实际存在的服务器,然后web server把数据返回给负载服务器,最后负载把数据返回给用户
缺点:网卡和带宽容易成为瓶颈
三四的优点:
优点:1.相对安全(用户不能直接访问web服务器)
2.效率提高
3.部署简单
4.提升了静态页面的访问速度
第五种形式:数据链路层均衡负载(相对于三四的优化)
请求时走负载,返回不走负载(通过数据链路层返回数据)
用户发起一个请求到负载服务器(通过计算解析成IP地址或通过网卡解析--还是三四的步骤),然后去访问服务器,然后web server直接把数据返回给用户(不走负载)
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是从软件方面搭建负载均衡
F5 公司是应用交付网络(ADN)领域的全球领先厂商,从硬件方面的搭建负载均衡服务器
负载均衡的算法(负载均衡计算)
1、轮询法(轮流分发给每个服务器)优势:简单。劣势:不能保障这些应用服务器请求是一样的
将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。
2、加权轮询法(能力越大,责任越大)(关键词:weight)
不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不相同。给配置高、负载低的机器配置更高的权重,让其处理更多的请;而配置低、负载高的机器,给其分配较低的权重,降低其系统负载,加权轮询能很好地处理这一问题,并将请求顺序且按照权重分配到后端。
3、源地址哈希法(源地址散列)根据IP来访问,开始是哪个用户IP访问哪个web server现在还访问哪个web server
源地址哈希的思想是根据获取客户端的IP地址,通过哈希函数计算得到的一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号。采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问。(得同一台电脑访问)
当做7天免登陆时:SESSION已经随机存储到了一台服务器,当再次访问时该怎么确认访问哪个服务器??
其延伸的拓展知识:session共享:
软件:
rsync(可以实现把其他服务器文件复制过来)
存库里(SESSION存到memcache里或redis里)
硬件:
NFS文件共享:
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
4、随机法(随机分发给每个服务器)
通过系统的随机算法,根据后端服务器的列表大小值来随机选取其中的一台服务器进行访问。由概率统计理论可以得知,随着客户端调用服务端的次数增多,
其实际效果越来越接近于平均分配调用量到后端的每一台服务器,也就是轮询的结果。
5、加权随机法(根据权重随机分发给每个服务器)
与加权轮询法一样,加权随机法也根据后端机器的配置,系统的负载分配不同的权重。不同的是,它是按照权重随机请求后端服务器,而非顺序。
6、最小连接数法(谁最闲分发给谁)
最小连接数算法比较灵活和智能,由于后端服务器的配置不尽相同,对于请求的处理有快有慢,它是根据后端服务器当前的连接情况,动态地选取其中当前
积压连接数最少的一台服务器来处理当前的请求,尽可能地提高后端服务的利用效率,将负责合理地分流到每一台服务器。
7.fair (第三方)(根据响应时间来分配,响应时间越短优先分配)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
配置文件:
upstream test {
server 192.168.109.5:81;
servse 192.168.109.3:80;
fair;
}
优化五:mysql优化
数据库 表( 表关系(一对一,一对多,多对多) 绘制表关系(ER图)powerdesigner;mysqlworkbeneh)
1.char(10)和VARCHAR(10)主要的区别是什么?
CHAR的长度是固定的,而VARCHAR2的长度是可以变化的
CHAR的效率比VARCHAR2的效率稍高。
CHAR与VARCHAR2是一对矛盾的统一体,两者是互补的关系.
2.数据库三范式
第一范式(1NF):是指数据库表的每一列都是不可分割的基本数据项
第二范式(2NF):要求数据库表中的每个实例或行必须可以被唯一地区分
第三范式(3NF):要求一个数据库表中不包含已在其它表中已包含的非主关键字信息
3.acid (数据库事务正确执行的四个基本要素的缩写)
原子性(Atomicity)、
事务是数据库的逻辑工作单位,它对数据库的修改要么全部执行,要么全部不执行。
一致性(Consistency)、
事务前后,数据库的状态都满足所有的完整性约束。
隔离性(Isolation)、
并发执行的事务是隔离的,一个不影响一个。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。通过设置数据库的隔离级别,可以达到不同的隔离效果。
持久性(Durability)、
在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。