简述Nginx、优点和缺点
Nginx是一个Web服务器和反向代理服务器,可以实现负载均衡。
优点:响应快
高扩展、跨平台
高可靠、用于反向代理
低内存消耗,这个Nginx支持高并发的基础
为什么要使用MQ
解耦、异步、削峰
解耦:一个系统或者说一个模块,调用了多个系统或者模块,互相之间很复杂,维护起来比较麻烦。但是这个接口不需要同步接口的,比如通知等,这个时候采用异步化进行解耦
异步:某些操作,比如非事务操作,这个时候可以采用异步的方式
削峰:减少高峰期对服务器的压力。
MQ有什么缺点
系统可用性降低,从某种情况来说,因为依赖中间件越多,出问题的概率就越大。
系统复杂度提高:怎么保证消息不会重复消费,保证消息没有丢失
一致性问题:可以采用事务消息。
https://blog.csdn.net/QGhurt/article/details/114630705
简单描述 Zookeeper
ZK主要的特点:维护、协调、管理、监控。
ZK有哪些应用场景
数据发布与订阅:发布和订阅所谓的配置管理,顾名思义就是将数据发布到ZK节点上,供订阅者动态获取数据,实现配置信息的集中式管理。
ZK采用的是推拉结合的方式
推:服务端会推给注册了监控节点客户端Wathcer事件
拉:客户端获取通知后,然后主动到服务端拉取最新的数据
命名服务:是通过指定的名字来获取资源或者服务地址,利用ZK创建一个全局路径,这个路径可以作为一个名字。
在分布式环境下,通常需要对应用、服务统一命名,便于识别不同服务
可将服务名以及地址写入ZK,客户端通过ZK进行获取
配置管理:程序分布式部署在不同的机器上面,可以将程序的配置信息放在ZK的node节点下,当配置发送改变时,可以通过swatch机制通知给相应的客户端。
集群管理:分布式中,实时掌握每个节点的状态是必要的,可以根据实时状态节点做出调整,
分布式锁:
说说Zookeeper的工作原理
ZK的核心原理是原子广播,这个机制保证了各个Server之间的同步,实现这个机制的协议叫做Zab协议。
Zab协议分别有两种模式:恢复模式(选主)、广播模式(同步)
请描述下ZK的通知机制是什么
ZK允许客户端向服务端的某个node节点注册是一个Watcher监听,当服务端的一些事件出发了这个Watcher事件过后,服务端会向客户端发送一条分布式通知消息,客户端根据消息内容做出改变
ZK对节点watcher监听是永久的吗
不是,是一次性的,无论是服务端还是客户端,一旦一个watcher被触发,ZK都会将相应的节点存储删除,这样设计有效减轻了服务器的压力,不然对太频繁的节点,服务端会不断发送通知,无论是网络还是服务器压力都会非常之大。
ZK中的角色有哪些
Leader:事务请求的唯一处理和调度者,保证集群消息处理顺序性,集群内部各服务之间的调度者。
Follower:处理客户端非事务请求,事务请求转发给Leader,参与选举投票。参与过半写成功 策略。
Observer:处理客户端非事务请求,事务请求转发给Leader,不参与投票
ZK岩机如何处理
ZK本身也是集群,推荐配置计数个数的服务器,因为岩机需要选举Leader,需要过半操作,所以不用偶数服务器个数。
如果是Follower岩机了,这个时候不影响对外使用,用户无感知。
CAP理论
一致性(C):所有节点保持数据一直
可用性(A):服务一直处于可用状态
分区容错性(P):某节点或者网络故障时候,仍然能够对外提供满足一致性或可用性的服务。