前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >秋招面试题系列- - -Java工程师(八)

秋招面试题系列- - -Java工程师(八)

作者头像
用户10216580
发布2022-12-06 14:16:08
2330
发布2022-12-06 14:16:08
举报
文章被收录于专栏:一叶知秋一叶知秋

前言:七月末八月初的时候,秋招正式打响,公司会放出大量的全职和实习岗位。为了帮助秋招的小伙伴们,学长这里整理了一系列的秋招面试题给大家,所以小伙伴们不用太过焦虑,相信你们一定能超常发挥,收到心仪公司的Offer~~ 内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux等技术栈

再次渡入繁世,人潮汹涌,眼里茫然,信仰永恒,皆为华夏  

目录

ZooKeeper面试题

7.客户端注册 Watcher实现

8.服务端处理 Watcher实现

9.客户端回调 Watcher

10. ACL权限控制机制

11. Chroot特性

12.会话管理


ZooKeeper面试题

7.客户端注册 Watcher实现

1、调用 getData()/getChildren()/exist()三个 API,传入 Watcher对象

2、标记请求 request,封装 Watcher到 WatchRegistration

3、封装成 Packet对象,发服务端发送 request

4、收到服务端响应后,将 Watcher注册到 ZKWatcherManager中进行管理5、请求返回,完成注册。

8.服务端处理 Watcher实现

1、服务端接收 Watcher并存储

接收到客户端请求,处理请求判断是否需要注册 Watcher,需要的话将数据节点的节点路径和 ServerCnxn(ServerCnxn代表一个客户端和服务端的连接,实现了 Watcher的 process接口,此时可以看成一个 Watcher对象)存储在

WatcherManager的 WatchTable和 watch2Paths中去。

2、Watcher触发

以服务端接收到 setData()事务请求触发 NodeDataChanged事件为例:

2.1封装 WatchedEvent

将通知状态(SyncConnected)、事件类型(NodeDataChanged)以及节点路径封装成一个 WatchedEvent对象

2.2查询 Watcher

从 WatchTable中根据节点路径查找 Watcher

2.3没找到;说明没有客户端在该数据节点上注册过 Watcher

2.4找到;提取并从 WatchTable和 Watch2Paths中删除对应 Watcher(从这里可以看出 Watcher在服务端是一次性的,触发一次就失效了)

3、调用 process方法来触发 Watcher

这里 process主要就是通过 ServerCnxn对应的 TCP连接发送 Watcher事件通知。

9.客户端回调 Watcher

客户端 SendThread线程接收事件通知,交由 EventThread线程回调 Watcher。客户端的 Watcher机制同样是一次性的,一旦被触发后,该 Watcher就失效了。

10. ACL权限控制机制

UGO(User/Group/Others)

目前在 Linux/Unix文件系统中使用,也是使用最广泛的权限控制方式。是一种粗粒度的文件系统权限控制模式。

ACL(Access Control List)访问控制列表

包括三个方面:

权限模式(Scheme)

1、IP:从 IP地址粒度进行权限控制

2、Digest:最常用,用类似于 username:password的权限标识来进行权限配置,便于区分不同应用来进行权限控制

3、World:最开放的权限控制方式,是一种特殊的 digest模式,只有一个权限标识“world:anyone”

4、Super:超级用户

授权对象

授权对象指的是权限赋予的用户或一个指定实体,例如 IP地址或是机器灯。

权限 Permission

1、CREATE:数据节点创建权限,允许授权对象在该 Znode下创建子节点

2、DELETE:子节点删除权限,允许授权对象删除该数据节点的子节点

3、READ:数据节点的读取权限,允许授权对象访问该数据节点并读取其数据内容或子节点列表等

4、WRITE:数据节点更新权限,允许授权对象对该数据节点进行更新操作

5、ADMIN:数据节点管理权限,允许授权对象对该数据节点进行 ACL相关设置操作

11. Chroot特性

3.2.0版本后,添加了 Chroot特性,该特性允许每个客户端为自己设置一个命名空间。如果一个客户端设置了 Chroot,那么该客户端对服务器的任何操作,都将会被限制在其自己的命名空间下。

通过设置 Chroot,能够将一个客户端应用于 Zookeeper服务端的一颗子树相对应,在那些多个应用公用一个 Zookeeper进群的场景下,对实现不同应用间的相互隔离非常有帮助。

12.会话管理

分桶策略:将类似的会话放在同一区块中进行管理,以便于 Zookeeper对会话进行不同区块的隔离处理以及同一区块的统一处理。

分配原则:每个会话的“下次超时时间点”(ExpirationTime)

计算公式:

ExpirationTime_ = currentTime + sessionTimeout

ExpirationTime = (ExpirationTime_ / ExpirationInrerval + 1) *

ExpirationInterval , ExpirationInterval是指 Zookeeper会话超时检查时间间隔,默认 tickTime

本期分享到此为止,关注博主不迷路,叶秋学长带你上高速~~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ZooKeeper面试题
  • 7.客户端注册 Watcher实现
  • 8.服务端处理 Watcher实现
  • 9.客户端回调 Watcher
  • 10. ACL权限控制机制
  • 11. Chroot特性
  • 12.会话管理
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档