Java面试准备-Nginx、MQ、ZK

简介: Java面试准备-Nginx、MQ、ZK

简述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):某节点或者网络故障时候,仍然能够对外提供满足一致性或可用性的服务。

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
6天前
|
SQL Java
java面试题笔试常见选择题大全含答案
java面试题笔试常见选择题大全含答案
|
6天前
|
SQL JavaScript Java
java程序员面试题大全含答案(2018--2019)
java程序员面试题大全含答案(2018--2019)
|
6天前
|
设计模式 开发框架 Java
java设计模式面试题大全含答案
java设计模式面试题大全含答案
|
6天前
|
缓存 安全 Java
Java线程面试题含答案
Java线程面试题含答案
|
16小时前
|
安全 Java 中间件
《面试专题-----经典高频面试题收集一》解锁 Java 面试的关键:深度解析常见高频经典面试题(第一篇)
《面试专题-----经典高频面试题收集一》解锁 Java 面试的关键:深度解析常见高频经典面试题(第一篇)
6 0
|
16小时前
|
安全 Java API
《面试专题-----经典高频面试题收集三》解锁 Java 面试的关键:深度解析并发编程基础篇高频经典面试题(第三篇)
《面试专题-----经典高频面试题收集三》解锁 Java 面试的关键:深度解析并发编程基础篇高频经典面试题(第三篇)
4 0
|
1天前
|
Java
Java中的面试常见问题解析
Java中的面试常见问题解析
|
5天前
|
Java Android开发 Kotlin
Android面试题:App性能优化之Java和Kotlin常见的数据结构
Java数据结构摘要:ArrayList基于数组,适合查找和修改;LinkedList适合插入删除;HashMap1.8后用数组+链表/红黑树,初始化时预估容量可避免扩容。SparseArray优化查找,ArrayMap减少冲突。 Kotlin优化摘要:Kotlin的List用`listOf/mutableListOf`,Map用`mapOf/mutableMapOf`,支持操作符重载和扩展函数。序列提供懒加载,解构用于遍历Map,扩展函数默认参数增强灵活性。
14 0
|
10天前
|
消息中间件 Java 双11
RocketMQ:揭秘电商巨头背后的消息队列秘密
**RocketMQ概览:**高性能分布式消息队列,适用于有序消息、事务处理、流计算、消息推送、日志处理及Binlog分发。在双11等高流量场景下证明了其性能、稳定性和低延迟。Java开发,利于扩展,性能超RabbitMQ,支持死信队列,但可能有集成兼容性问题。适合Java开发者,为电商等场景优化,每秒处理大量消息。
32 3
RocketMQ:揭秘电商巨头背后的消息队列秘密
|
17天前
|
消息中间件 监控 应用服务中间件
消息队列 MQ操作报错合集之重启Broker后,积压数出现为负数是什么导致的
在使用消息队列MQ时,可能会遇到各种报错情况。以下是一些常见的错误场景、可能的原因以及解决建议的汇总:1.连接错误、2.消息发送失败、3.消息消费报错、4.消息重试与死信处理、5.资源与权限问题、6.配置错误、7.系统资源限制、8.版本兼容性问题。
消息队列 MQ操作报错合集之重启Broker后,积压数出现为负数是什么导致的