面试官常问的 微服务 问题(七)

61.Docker 容器有几种状态?

Docker 容器可以有四种状态:运行、已暂停、重新启动、已退出

我们可以通过运行命令来识别 Docker 容器的状态:docker ps –a
这将依次列出所有可用的 docker 容器及其在主机上的相应状态。从那里我们可以很容易地识别感兴趣的容器,以相应地检查其状态。

62.解释基本的 Docker 使用流程

1)一切都从 Dockerfile 开始。Dockerfile 是镜像的源代码。

2)创建 Dockerfile 后,您可以构建它以创建容器的镜像。镜像只是“源代码”的“编译版本”,即 Dockerfile。

3)获得容器的镜像后,应使用注册表重新分发容器。注册表就像一个 git 存储库 - 你可以推送和拉取镜像。

4)接下来,您可以使用该镜像来运行容器。在许多方面,正在运行的容器与虚拟机(但没有管理程序)非常相似。

63.Dockerfile 中最常见的指令是什么?

1)FROM:我们使用 FROM 为后续指令设置基本镜像。在每个有效的 Dockerfile 中,FROM 是第一条指令。

2)LABEL:我们使用 LABEL 按照项目,模块,许可等组织我们的镜像。我们也可以使用 LABEL 来帮助实现自动化。在 LABEL 中, 我们指定一个键值对,以后可用于以编程方式处理 Dockerfile。

3)RUN:我们使用 RUN 命令在当前镜像之上的新图层中执行任何指令。使用每个 RUN 命令,我们在镜像顶部添加一些内容,并在 Dockerfile 的后续步骤中使用它。

4)CMD:我们使用 CMD 命令提供执行容器的默认值。在 Dockerfile 中,如果我们包含多个 CMD 命令,则只使用最后一条指令。

64.Docker 镜像和层有什么区别?

镜像:Docker 镜像是由一系列只读层构建的
层:每个层代表镜像 Dockerfile 中的一条指令。

65.Docker 常用命令?

dockerpull 拉取或者更新指定镜像 dockerpush 将镜像推送至远程仓库 dockerrm 删除容器 dockerrmi 删除镜像 dockerimages 列出所有镜像 dockerps 列出所有容器

66.Dockerfile 中的命令 COPY 和 ADD 命令有什么区别?

虽然 ADD 和 COPY 在功能上类似,但是首选 COPY。
因为COPY比 ADD 更易懂。COPY 仅支持将本地文件复制到容器中,而 ADD 具有一些功能(如仅限本地的 tar 提取和远程 URL 支持) ,这些功能并不是很明显。
因此,ADD 的最佳用途是将本地 tar 文件自动提取到镜像中。
例如:ADD apache-tomcat-8.5.20.tar.gz/

67.什么是 rabbitmq?

MQ:消息队列
采用 AMQP 高级消息队列协议的一种消息队列技术,最大的特点就是消费并不需要确保提供方存在,实现了服务之间的高度解耦

用处:流量削峰、定时任务。。。

68.为什么要使用 rabbitmq?

1.在分布式系统下具备异步,削峰,负载均衡等一系列高级功能;

2.拥有持久化的机制,进程消息,队列中的信息也可以保存下来;

3.实现消费者和生产者之间的解耦;

4.对于高并发场景下,利用消息队列可以使得同步访问变为串行访问达到一定量的限流,利于数据库的操作;

5.可以使用消息队列达到异步下单的效果,排队中,后台进行逻辑下单。

69.使用 rabbitmq 的场景?

1.服务间异步通信
2.顺序消费
3.定时任务
4.请求削峰

70.如何确保消息正确地发送至 RabbitMQ? 如何确保消息接收方消费了消息?

1)发送方确认模式: 将信道设置成 confirm 模式(发送方确认模式)。
则所有在信道上发布的消息都会被指派一个唯一的 ID。 一旦消息被投递到目的队列后,或者消息被写入磁盘后(可持久化的消息) ,信道会发送一个确认给生产者(包含消息唯一 ID)。
如果 RabbitMQ 发生内部错误从而导致消息丢失,会发送一条nack(notacknowledged,未确认)消息。
发送方确认模式是异步的,生产者应用程序在等待确认的同时,可以继续发送消息。
当确认消息到达生产者应用程序,生产者应用程序的回调方法就会被触发来处理确认消息。

2)接收方消息确认机制:消费者接收每一条消息后都必须进行确认(消息接收和消息确认是两个不同操作)。
只有消费者确认了消息, RabbitMQ 才能安全地把消息从队列中删除。 这里并没有用到超时机制,RabbitMQ 仅通过 Consumer 的连接中断来确认是否需要重新发送消息。
只要连接不中断, RabbitMQ 给了 Consumer 足够长的时间来处理消息。保证数据的最终一致性;
下面罗列几种特殊情况:
如果消费者接收到消息,在确认之前断开了连接或取消订阅,RabbitMQ 会认为消息没有被分发,然后重新分发给下一个订阅的消费者。 (可能存在消息重复消费的隐患,需要去重) 如果消费者接收到消息却没有确认消息,连接也未断开,则 RabbitMQ 认为该消费者繁忙,将不会给该消费者分发更多的消息。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值