1.集群工作原理
1.1 集群宕机条件
首先,每一个节点都存在这个集群所有主节点以及从节点的信息。它们之间通过ping-pong判断节点是否可以连上。如果有一半以上的节点去ping一个节点的时候没有回应,集群就认为这个节点宕机了,然后去连接它的备用节点。
如果节点主机数量缺失,则集群崩溃
案例1: 1主1从.现在→ 3台主机/3台从机 共6台redis. 问至少宕机几台 集群崩溃??? 2台
案例2: 1主2从.现在→ 3台主机/6台从机 共9台redis. 问至少宕机几台 集群崩溃??? 5台
1.2 hash槽算法
redis集群采用了hash槽(slot)算法,而没有使用一致性hash算法。因为一致性hash算法对于数据的分布,节点位置控制的不好(在设计时应尽可能降低分散性)
算法介绍
说明: RedisCluster采用此分区,所有的键根据哈希函数(CRC16[key]%16384)映射到0-16383槽内,共16384个槽位(2^14次方),每个节点维护部分槽及槽所映射的键值数据.根据主节点的个数,均衡划分区间.
crc16算法是一种校验算法。
算法:哈希函数: Hash()=CRC16[key]%16384
当向redis集群中插入数据时,首先将key值计算之后,将计算结果匹配到槽区间,然后将数据set到管理该槽的节点中
2、伪静态
伪静态是相对真实静态来讲的,通常我们为了增强搜索引擎的友好面,都将文章内容生成静态页面,但是有的朋友为了实时的显示一些信息。或者还想运用动态脚本解决一些问题。不能用静态的方式来展示网站内容。但是这就损失了对搜索引擎的友好面。怎么样在两者之间找个中间方法呢,这就产生了伪静态技术。伪静态技术是指展示出来的是以html一类的静态页面形式,但其实是用ASP一类的动态脚本来处理的。
总结: 以.html结尾的"动态"页面技术
3、关于跨域
3.1浏览器同源策略
说明:浏览器规定,当浏览器解析页面时,当遇到ajax请求时,如果请求与当前页面的 协议://域名:端口号都相同时,则满足同源策略,称之为同域请求。浏览器可以正确解析返回值,请求正常。如果三者之中有一项不同,则把请求称之为跨域请求。浏览器出于安全考虑,不予解析返回值。
3.2 JSONP
3.2.1 JSONP介绍
JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。
3.2.2 JSONP原理
- 利用javaScript标签 动态获取远程数据
<script type="text/javascript" src="http://manage.jt.com/test.json"></script>
2 自定义回调函数
<script type="text/javascript">
/*JS是解释执行的语言 */
/*定义回调函数 */
function hello(data){
alert(data.name);
}
</script
- 将返回值结果 进行特殊格式封装
hello({"id":"1","name":"tom"})
问题: JSONP能否发起POST请求啊?
不能 原因: javaScript中的src属性只能发起get请求,不可以用POST
3.3 CORS
3.3.1 CORS介绍
跨源资源共享 (CORS) 是一种基于HTTP 头的机制,该机制通过允许服务器标示除了它自己以外的其它origin(域,协议和端口),这样浏览器可以访问加载这些资源。跨源资源共享还通过一种机制来检查服务器是否会允许要发送的真实请求,该机制通过浏览器发起一个到服务器托管的跨源资源的**“预检”**请求。在预检中,浏览器发送的头中标示有HTTP方法和真实请求中会用到的头。
补充: 现阶段几乎所有的浏览器都默认支持CORS(IE除外)
3.3.2 CORS跨域原理
CORS在响应头中标识哪些网址可以访问服务器,CORS的配置是服务器端的配置,与浏览器没关系。