面试题总结

Nginx 篇

【1】简述一下什么是Nginx,它有什么优势和功能?

Nginx 是高性能的 HTTP 和反向代理的服务器,处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。Nginx主要提供功能有

  • http服务器

  • 反向代理服务器

  • 负载均衡服务器

  • 动静分离配置

  • 缓存数据

【2】简述一下什么是正向代理,什么是反向代理

正向代理代理的是客户端访问服务端,比如防火墙,反向代理代理的是服务端,等待客户端访问代理服务。具体配置如下:

面试题总结_第1张图片

【3】解释一下什么是Nginx的负载均衡

nginx反向代理tomcat服务集群,当客户端访问nginx服务器时,由nginx负载均衡去访问tomcat集群中的某一个节点。具体配置

面试题总结_第2张图片

【4】说一下什么是动静分离

静态资源配置到nginx服务器中,动态资源通过nginx反向代理到tomcat。

面试题总结_第3张图片

Docker 篇

【1】说一下什么是Docker?

Docker是一个开源的应用容器引擎,它让开发者可以将他们的应用以及依赖包打包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上。Docker使用沙箱机制,使得容器之间完全隔离,互不干扰。Docker的镜像可以包含应用程序的代码、运行环境、依赖库、配置文件等必需的资源,从而实现方便快速并且与平台解耦的自动化部署方式。无论部署环境如何,容器中的应用程序都会运行在同一种环境下。

【2】说一下你都用过哪些Docker命令

Docker命令操作主要包含

  • 镜像操作

  • 容器操作

  • 数据卷操作

  • 自定义镜像操作

  • 网络操作

【3】说一下镜像操作的常用命令

  • docker pull 拉取镜像

  • docker push 推送镜像

  • docker images 查看所有镜像

  • docker inspect 镜像名 查看镜像详细信息

  • docker rmi 镜像名 删除镜像

  • docker build 自定义镜像

  • docker save 保存镜像

  • docker load 加载镜像

【4】说一下Docker容器命令

  • docker run 构建容器,常见参数

    • --name 容器名

    • -d 后台启动

    • -p 端口映射

    • -v 数据卷挂载

    • -e 设置传递环境变量

    • -it 以交互模式运行容器,通常与-d 一起使用

    • --restart 设置容器的重启策略

    • --network 将容器连接到指定网络

  • docker start 容器名 启动容器

  • docker stop 容器名 停止容器

  • docker restart 容器名 重启容器

  • docker ps 查看所有正在运行的容器

  • docker ps -a 查看所有容器

  • docker rm 删除容器

【5】说一下数据卷命令

  • docker volume create 创建数据卷

  • docker volume ls 查看所有数据卷

  • docker volume inspect 查看数据卷详细信息

  • docker volume rm 删除数据卷

  • docker volume prune 删除未使用的数据卷

【6】说一下如何自定义镜像

首先编写Dockerfile,Dockerfile内容参照相关文档操作,最后根据docker build -t 镜像名 . 创建镜像。

【7】说一下如何创建网络

  • docker network connect 将容器连接到网络

  • docker network create 创建一个网络

  • docker network ls 列出所有网络

  • docker network inspect 显示一个或多个网络详细信息

  • docker network rm 删除一个获得多个网络

  • docker network prune 删除所有未使用的网络

Zookeeper 篇

【1】说一下什么是Zookeeper ?

ZooKeeper是一个开放源代码的分布式协调服务。ZooKeeper的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。

Zookeeper主要能作为分布式架构的协调者---注册中心,以及大数据的协调者(了解)

Zookeeper 是一个树形结构的监听机制系统,主要应用场景:

  • 数据发布/订阅

  • 负载均衡

  • 服务命名

  • 分布式协调/通知

【2】说一下你都用过哪些zookeeper命令

  • create 创建节点

  • ls 查看节点

  • get /获取节点结构

  • set 设置节点命令

  • delete 删除节点

  • deleteall 删除节点以及节点包含内容

  • stat 查看节点状态

Dubbo 篇

【1】说一下Dubbo执行流程

面试题总结_第4张图片

【2】说一下Dubbo支持哪些协议?

Dubbo 支持如下协议:

  • Dubbo协议

  • Hessian协议

  • HTTP协议

  • RMI协议

  • WebService协议

  • Memcached协议

  • Redis协议

建议使用Dubbo协议。

【3】注册中心挂了,consumer 还能不能调用 provider?

可以。因为刚开始初始化的时候,consumer 会将需要的所有提供者的地址等信息拉取到本地缓存,所以注册中心挂了可以继续通信。但是 provider 挂了,那就没法调用了。

【4】怎么实现动态感知服务下线的呢?

服务订阅通常有 pull 和 push 两种方式:

  • pull 模式需要客户端定时向注册中心拉取配置;

  • push 模式采用注册中心主动推送数据给客户端。

Dubbo ZooKeeper 注册中心采用是事件通知与客户端拉取方式。服务第一次订阅的时候将会拉取对应目录下全量数据,然后在订阅的节点注册一个 watcher。一旦目录节点下发生任何数据变化, ZooKeeper 将会通过 watcher 通知客户端。客户端接到通知,将会重新拉取该目录下全量数据, 并重新注册 watcher。利用这个模式,Dubbo 服务就可以做到服务的动态发现。

注意:ZooKeeper 提供了“心跳检测”功能,它会定时向各个服务提供者发送一个请求(实际上建立 的是一个 socket 长连接),如果长期没有响应,服务中心就认为该服务提供者已经“挂了”,并将其 剔除。

【5】Dubbo 负载均衡策略?

  • 随机(默认):随机来

  • 轮训:一个一个来

  • 活跃度:机器活跃度来负载

  • 一致性 hash:落到同一台机器上

【6】Dubbo 容错策略

  • failover cluster 模式

provider 宕机重试以后,请求会分到其他的 provider 上,默认两次,可以手动设置重试次数,建议把写操作重试次数设置成 0。

  • failback 模式

失败自动恢复会在调用失败后,返回一个空结果给服务消费者。并通过定时任务对失败的调用进行重试,适合执行消息通知等操作。

  • failfast cluster 模式

快速失败只会进行一次调用,失败后立即抛出异常。适用于幂等操作、写操作,类似于 failover cluster 模式中重试次数设置为 0 的情况。

  • failsafe cluster 模式

失败安全是指,当调用过程中出现异常时,仅会打印异常,而不会抛出异常。适用于写入审计日志等操作。

  • forking cluster 模式

并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks="2" 来设置最大并行数。

  • broadcacst cluster 模式

广播调用所有提供者,逐个调用,任意一台报错则报错。通常用于通知所有提供者更新缓存或日志等本地资源信息。

Redis 篇

你可能感兴趣的:(java)