(1)异步处理:相比于传统的串行、并行方式,提高了系统吞吐量
(2)应用解耦:系统间通过消息通信,不用关心其它系统的处理。
(3)流量削峰:可以通过消息队列长度控制请求量,可以缓解短时间内的高并发请求。
(4)日志处理:解决大量日志传输。
(5)消息通讯:消息队列一般都内置了高效的通信机制。
(1)消息的顺序问题
消息有序指的是可以按照消息的发送顺序来消费。
解决方案:
保证生产者-MQServer-消费者是一对一对一的关系。
(2)消息的重复消费问题
造成消息重复消费的根本原因是:网络不可达。
解决方案:
保证每条消息都有唯一编号且保证消息处理成功与去重表的日志同时出现。利用一张日志表来记录已经处理成功的消息ID,如果新的消息ID已经在日志表中,则不再处理该消息。
Nginx是一个轻量级/高性能的反向代理Web服务器,他实现非常高效的反向代理、负载平衡,它可以处理2-3万并发连接数。
Nginx采用单线程来异步非阻塞处理请求(管理员可以配置Nginx主进程的工作进程的数量),不会为每个请求分配cpu和内存资源,节省了大量资源,同时也减少了大量的CPU的上下文切换,所以才使得Nginx支持更高的并发。
正向代理就是一个人发送一个请求直接就达到了目标服务器。
反向代理就是请求统一被Nginx接收,nginx反向代理服务器接收到请求之后,按照一定的规则分发给后端服务器进行处理。
正向代理服务器代理的是客户端,反向代理服务器代理的是服务端。
(1)正向代理:在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问。
(2)反向代理:我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器的地址。
(3)负载均衡:单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为请求分发到多个服务器上,将负载分到不同的服务器,也就是负载均衡。
(4)动静分离:为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低单个服务器的压力。
不会,每条消息都会持久化到CommitLog中,每个Consumer连接到Broker后会维持消费进度消息,当有消息消费后,只是当前Consumer的消费进度更新了。消息不会堆积,默认72小时后会删除不再使用的commitLog文件。
消费模型由Consumer决定,消费维度是Topic。
(1)集群消费
一条消息只会被同Group下的一个Consumer消费,多个Group同时消费一个Topic时,每个Group都会有一个Consumer消费到数据。
(2)广播消费
消息将对一个Consumer Group下的各个Consumer实例都消费一遍,即使这些Consumer属于同一个ConsumerGroup,消息也会被消费组中的每一个consumer消费一次。
Docker是一个容器化平台,它以容器的形式将您的应用程序及其所有依赖打包在一起,以确保您的应用程序在任何环境中都能无缝运行。
(1)CI(持续集成)服务器的功能是什么?
CI功能就是每次提交之后不断地集成所有提交到存储库的代码,并且检查编译错误。
Docker镜像是Docker容器的源代码,Docker镜像用于创建容器。使用build创建镜像。
Docker容器包括应用程序及其所有的依赖项,作为操作系统的独立进程运行。
Docker容器又四种状态:运行、已暂停、重新启动、已经退出。
Docker使用流程:创建Dockerfile后,可以构建它来创建容器的镜像,推送或者拉取镜像
Dockerfile中的常见指令:
FROM:指定基础镜像
LABEL:功能是为镜像指定标签
RUN:运行执行的命令
CMD:容器启动时要运行的命令
Dockerfile中的命令COPY和ADD命令有什么区别?
COPY与ADD的区别是COPY的只能是本地文件,其他用法一致。
Docker常用命令:
docker pull 拉取或者更新指定镜像
docker push 将镜像推送至远程仓库
docker rm 删除容器
docker rmi 删除镜像
docker images 列出所有镜像
docker ps 列出所有容器
(2)Devops有哪些优势
技术优势:更快地解决问题
商业利益:有更多时间可以增加价值(而不是修复/维护)
(3)什么是虚拟化?
主要有三种方式的虚拟化:仿真、半虚拟化、基于容器的虚拟化
(4)Docker与虚拟机有何不同
Docker不是虚拟化方法,它依赖于实际实现基于容器的虚拟化或者操作系统级别虚拟化的其他工具。
(5)容器内部机制
每个容器都在自己的命名空间中运行,但使用与其他容器完全相同的内核。发生隔离是因为内核知道分配给进程的命名空间,并且在API调用期间确保进程只能访问到自己的命名空间中的资源。
(6)什么是Docker Hub?
Docker hub是一个基于云的注册表服务,允许您连接到代码存储库,构建镜像并且测试他们,存储手动推送的镜像以及Docker云的链接,以便于可以将奖项部署到主机。它为整个开发路程中的容器镜像发现,分发和变更管理,用户团队协作以及工作流自动化提供了资源。
Docker镜像是Docker容器的源代码。Docker镜像用于创建容器,使用build命令创建镜像,并且在run启动时将它们生成容器。镜像存储于Docker注册表中,registry.hub.docker.com。因为他们可能变得非常大,镜像被设计为由其他镜像层组成,允许在通过网络传输镜像时发送最少量的数据。
(1)从Dockerfile开始,Dockerfile是镜像的源代码;
(2)创建完Dockerfile以后,可以构建它以创建容器的镜像。
(3)获得容器的镜像后,应该使用注册表重新分发容器。注册表就像一个git存储库,可以推送和拉取镜像。接下来,使用该镜像来运行容器。