分布式策略设计:
-
心跳检测机制:
-
为什么要进行心跳检测
为了保证我们的可靠性、高可用性
-
如何进行心跳检测
server给各个节点发送心跳检测包,节点收到检测包之后给对应的server返回信息,通知自己还活着。
-
如果应对异常的机制
-
周期检测心跳机制:
Server断每隔t秒向Node集群发送监测请求,设定超时时间,如果超过超时时间,则判断为“死亡”或者濒临死亡。
-
累计失效检测机制
在周期检测心跳机制的基础上,统计一定周期内节点的返回情况(包括超时及正确返回),以此计算节点的“死亡”概率。另外,对于宣告“濒临死亡”的节点可以发起有限次数的重试,以作进一步判断。
-
-
-
高可用是系统架构设计必须考虑的因素之一。
高可用常用设计模式包括三种:主备,互备和集群。
exp:mysql
-
主从复制,首先将对数据的操作写入到bin-log日志中,从节点开了一个IO线程,一旦有写入,bin-log就会对IO线程进行读取。把数据写到slave的relay-log(终极日志)中,此时,从节点会在开启一个线程SQL~Thread,以事键的方式把relay-log读取到对应的数据库中。
-
互备模式:(处理大量读写的场景,用到的很少)
根据算法取模存储到不能mysql,然后根据业务进行合并。
-
集群模式
多节点在运行,同时可以通过主控节点分担服务请求,如用Zookeeper
-
-
容错性设计:
缓存穿透:可以根据不合法key设置null值,不让其查询数据库,而是查询缓存。
-
负载均衡
算法:
- 轮询:即Round Robin,根据Nginx配置文件中的顺序,依次把客户端的Web请求分发到不同的后端服务器。
- 最少连接:当前谁连接最少,分发给谁
- IP地址哈希:确定相同的IP请求可以转发给同一个后端节点处理,以方便session保持。
- 基于权重的负载均衡:配置Nginx把请求更多的分配到高配置的后端服务器上,把相对较少的请求分发到低配服务器。