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版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
6天前
|
负载均衡 NoSQL 算法
一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
这篇文章是关于Java面试中Redis相关问题的笔记,包括Redis事务实现、集群方案、主从复制原理、CAP和BASE理论以及负载均衡算法和类型。
一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
|
6天前
|
存储 NoSQL Java
一天五道Java面试题----第十一天(分布式架构下,Session共享有什么方案--------->分布式事务解决方案)
这篇文章是关于Java面试中的分布式架构问题的笔记,包括分布式架构下的Session共享方案、RPC和RMI的理解、分布式ID生成方案、分布式锁解决方案以及分布式事务解决方案。
一天五道Java面试题----第十一天(分布式架构下,Session共享有什么方案--------->分布式事务解决方案)
|
4天前
|
消息中间件 缓存 负载均衡
复盘女朋友面试4个月的RocketMQ面试题
这篇文章复盘了面试中关于RocketMQ的高频题目,包括架构组成、使用姿势、功能原理及高级特性,并强调了理解这些实现机制对于面试成功的重要性。
复盘女朋友面试4个月的RocketMQ面试题
|
6天前
|
缓存 NoSQL Redis
一天五道Java面试题----第九天(简述MySQL中索引类型对数据库的性能的影响--------->缓存雪崩、缓存穿透、缓存击穿)
这篇文章是关于Java面试中可能会遇到的五个问题,包括MySQL索引类型及其对数据库性能的影响、Redis的RDB和AOF持久化机制、Redis的过期键删除策略、Redis的单线程模型为何高效,以及缓存雪崩、缓存穿透和缓存击穿的概念及其解决方案。
|
4天前
|
消息中间件 网络架构
RabbitMQ消息队列常见面试题
这篇文章总结了RabbitMQ的常见面试题,涵盖了消息模型、使用场景、实现功能、消息幂等性、顺序性、堆积和丢失的避免方法,以及推模式和拉模式的区别。
17 0
|
5天前
|
NoSQL Java 数据库
2022年整理最详细的java面试题、掌握这一套八股文、面试基础不成问题[吐血整理、纯手撸]
这篇文章是一份详尽的Java面试题总结,涵盖了从面向对象基础到分布式系统设计的多个知识点,适合用来准备Java技术面试。
|
5天前
|
算法 关系型数据库 MySQL
一天五道Java面试题----第七天(mysql索引结构,各自的优劣--------->事务的基本特性和隔离级别)
这篇文章是关于MySQL的面试题总结,包括索引结构的优劣、索引设计原则、MySQL锁的类型、执行计划的解读以及事务的基本特性和隔离级别。
|
6天前
|
自然语言处理 NoSQL Java
一天一道Java面试题----第十二天(如何实现接口幂等性)
这篇文章探讨了实现Java接口幂等性的几种方法,包括使用唯一ID、服务端token、去重表、版本控制以及控制状态等策略。
|
8天前
|
负载均衡 应用服务中间件 API
Nginx:location配置模块的用法(一)
Nginx:location配置模块的用法(一)
53 2
|
5天前
|
Web App开发 应用服务中间件 网络安全
如何在 Apache 和 Nginx 上配置 OCSP Stapling
如何在 Apache 和 Nginx 上配置 OCSP Stapling
23 8