首页

来自智得网
跳转至: 导航、​ 搜索

精选文章

Https查看全文
HTTPS和HTTP的对比.png
http协议是明文协议,明文数据会经过中间代理服务器,路由器,wifi,运营商等物理节点,传输内容存在被劫持的风险,劫持者还可以通过篡改传输信息发动中间人攻击。

https(HyperText Transfer Protocol over Secure Socket Layer)基于http增加了加密的机制。一般理解为HTTP+SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。 SSL(Secure Socket Layer)是1994年 Netscape 所研发的一种安全协议,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。基于 SSL,Netscape开发了TLS(Transport Layer Security)的最初几个版本(SSL 1.0、SSL 2.0、SSL 3.0),1999年TSL 3.1 开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。TLS 1.3 改动比较大,还在草案阶段,目前使用最广泛的是TLS 1.1、TLS 1.2。 Https通信过程中使用的到的主要技术有对称加密,非对称加密,数字证书等。 非对称加密 非对称加密一组密钥分为公钥和私钥,公钥加密的数据用私钥解谜,反之,私钥加密的数据使用公钥解密。 非对称加密的效率较低,所以https协议会在建立网络连接的时候产生随机的对称密钥,之后通过网站的公钥加密发给网站服务端,之后双方就可以通过这个约定的密钥进行对称加密 对称加密

对称加密需要信息传输双方持有一个相同的保密的密钥…
Paxos查看全文
Paxos的两阶段.png
Paxos是一种共识算法,共识算法往往用作分布式系统下实现一致性的一种手段。

Paxos是Leslie Lamport在1990提出的,Lamport在文中虚构了一个希腊城邦 Paxos 来阐述该理论,因为论文未和审稿人就修改意见达成一致,该文章未能在当年进行发表。 在 1998 年和 2001 年,Lamport分别写了两篇论文,《The Part-Time Parliament》和《Paxos Made Simple》来解释Paxos协议。 Paxos将共识算法分为了两个阶段,分别是投票阶段和审议阶段,通过两个阶段在集群中半数以上的结点完成一致性的共识。 名词解释 共识算法是保证分布式集群中多个结点达到最终一致性的算法。 共识算法不能解决拜占庭问题(数据的丢失以及错误问题) 保证多个结点数据一致性可以通过下列方式: Paxos将结点分为提议者( Proposer ),接收者( Acceptor ),学习者(Learner)。在提交数据的时候除了提交的值之外,还会提交递增的版本号。 结点类型 流程 Paxos将写入流程分为两个阶段,第一个阶段是投票阶段,第二个阶段是执行阶段。 投票 Paxos的第一阶段是Proposer发起提议,提议的过程中Proposer会结合Acceptor的返回判断是否进行第二阶段的提交操作。 Proposer发起某个版本的提议。 Acceptor接收Proposer的提议,Acceptor会记录之前Proposer提交的数据版本,并且将之前保存的数据版本以及已经接收的值返回给Proposer。

Proposer接收到Acceptor的返回之后,有两种情况会直接放弃提议…
分布式锁查看全文
分布式锁的实现类型.png
在单机环境下,锁一般通过CAS方式实现,通过锁定的时机或者范围一般分为悲观锁和乐观锁,在操作开始之前执行锁定操作一定成为称之为悲观锁,在提交的时候才可以加锁进行校验成为乐观锁。

在集群环境下,本机锁无法和集群内其他节点实现互斥,会出现业务逻辑错误,分布式锁就是集群场景下可以实现互斥能力的结构体。 锁的实现例如CAS本质上还是通过修改共享数据来实现的,所以分布式锁的本质也是修改分布式场景下的共享数据。 根据共享数据的不同,分布式锁可以通过Redis,数据库,Zookeeper等实现。 Redis Redis锁的实现方式是通过Redis客户端向Redis写入数据的方式的方式,通过CAS实现写入的原子性来保证分布式锁实现的。 Redis加锁的命令一般是Redis解锁的命令一般是Redis分布式锁的问题如下,当Master节点不可用的时系统自动切换Slave(failover),但由于Redis的主从复制(replication)异步的原因,可能导致在failover过程中丧失锁的安全性。例如下面场景的客户端1和客户端2同时持有了同一个资源的锁。 客户端1从Master获取了锁。 Master宕机,存储锁的key还未同步到Slave。 Slave升级为Master。 客户端2从新Master获取到了对应同一个资源的锁。 RedLock RedLock的加锁流程如下: 客户端向N个Redis实例执行加锁操作,统计总耗时为TotalCost 超过半数节点实例成功获取锁,并且锁的有效期大于TotalCost才表明加锁成功 若加锁失败,则释放已成功获取的锁。

若加锁成功,锁的有效时间=锁的超时时间-TotalCost

热门分类

算法题库

精选内容