目录
第一部分:企业网站架构部署与优化.................................................. 6
1. 列举几种常见的HTTP状态码?及各种代表的含义?................................ 6
2. HTTP请求方法有哪些?请至少列举三种,并简述它们的用途。........................ 6
3. HTTP协议的全称是什么?它主要负责什么功能?................................... 6
4. HTTP与HTTPS的主要区别是什么?为什么现在更推荐使用HTTPS?.................... 6
5. HTTP报文结构包括哪几部分?请简要说明。...................................... 7
6. 解释一下HTTP的无状态性,并说明如何在Web应用中维持用户会话状态。............... 7
7. HTTP请求的方法中get与post区别?.......................................... 7
8. 静态网页与动态网页的区别................................................... 8
9. 简述HTTP缓存机制及其作用。................................................ 9
10. 解释HTTP请求报文和响应报文的基本结构。..................................... 9
11. Apache HTTP Server的主要功能是什么?...................................... 9
12. Apache服务器都有哪些特点................................................. 9
13. 虚拟web主机有哪几种类型?................................................ 9
14. Apache的三种工作模式是什么?各自的特点和适用场景是什么?.................... 10
15. 如何排查Apache服务器无法启动的问题?..................................... 10
16. Apache的三种工作模式是什么?各自的特点和适用场景是什么?.................... 10
17. 简述LAMP的工作流程..................................................... 10
18. 如何对Apache进行访问控制?.............................................. 11
19. Apache日志分割的原因:.................................................. 11
20. Apache日志分割的工具与方法:............................................. 11
21. 如何提高Apache的性能?.................................................. 11
22. 什么是防盗链?.......................................................... 12
24. Apache Web 服务器有些什么不同的日志文件?.................................. 12
25. Apache 侦听 http 和 https的 端口是什么?.................................. 12
26. 什么是Nginx?简述其主要用途。............................................ 12
27. Nginx服务有哪些特点..................................................... 12
28. Nginx的四大功能是什么................................................... 13
29. Nginx相比于其他Web服务器(如Apache)的主要优势是什么?.................... 13
30. 解释Nginx的Master和Worker进程模型。.................................... 13
31. Nginx如何处理静态文件与动态内容?......................................... 14
32. Nginx的location指令是如何工作的?....................................... 14
33. 如何进行Nginx的性能调优?............................................... 14
34. 解释Nginx的rewrite指令及其应用场景。.................................... 14
35. 解释Nginx的upstream模块中ip_hash指令的作用。............................ 14
36. 如何通过Nginx与Tomcat结合实现动静分离和负载均衡?......................... 15
37. 请描述如何调优Tomcat性能,并提供一些建议。................................ 15
38. Tomcat服务中8005、8009、8080三个端口的含义............................... 15
39. Tomcat核心组件有哪些?.................................................. 15
40. Tomcat如何处理HTTP请求?请简述其处理流程。............................... 16
第二部分:数据库管理与高可用..................................................... 16
41. 常用的关系数据库有哪些(各自是哪个公司研发的)?............................ 16
42. 简述数据、表及数据库的各自基本概念?....................................... 16
43. 如何理解关系型数据库的实体、属性、联系?................................... 16
44. 简述mysql数据库的特点?................................................. 17
45. 非关系型数据库的优点有哪些?列举常见的非关系型数据库有哪些产品?............... 17
46. 查看数据库列表信息、数据表信息及数据表结构,分别使用什么语句?................ 17
47. SQL(结构化查询语句)分为哪几种类型?...................................... 17
48. 在数据库中删除指定的数据记录的sql语句是?................................. 18
49. 查看数据库列表信息、数据表信息及数据表结构,分别使用什么语句?................ 18
50. insert语句的语法是什么?................................................ 18
51. 在数据库中修改、更新数据表中的数据记录的sql语句是?......................... 18
52. 如何使用select进行数据查询?............................................ 18
53. 修改mysql数据库root用户的登陆密码有几种方法?............................ 19
54. 如何实现MySQL的用户账户安全加固?........................................ 19
55. 如何理解并设置MySQL的全局权限与数据库特定权限?............................ 19
56. mysql数据库的索引都有哪些类型............................................ 20
57. mysql数据库使用索引的作用是什么?......................................... 20
58. 创建索引的原则依据是什么?................................................ 20
59. 什么是最左前缀原则?为什么在使用复合索引时需要考虑这个原则?.................. 21
60. 查看已创建索引的方法有哪些?.............................................. 21
61. 索引有哪些优缺点?....................................................... 21
62. 在什么情况下不适合创建索引?.............................................. 21
63. 什么是事务?............................................................ 21
64. 事务具有的四个属性分别是什么?(简述其中的某一个属性特点).................... 22
65. mysql事务操作过程中,如何使用set命令进行控制?(如何禁止/开启自动提交功能)... 22
66. mysql数据库常用的两种存储引擎是什么?..................................... 22
67. mysql数据库MyISAM存储引擎的特点有哪些?.................................. 23
68. mysql数据库MyISAM存储引擎的应用场景是?.................................. 23
69. mysql数据库InnoDB存储引擎的特点有哪些?.................................. 23
70. mysql数据库InnoDB存储引擎的应用场景是?.................................. 24
71. mysql主从复制的原理?................................................... 24
72. mysql主从复制的类型有哪些?.............................................. 24
73. 搭建mysql主从复制环境的应用场景?........................................ 25
74. 什么是mysql主备延迟.................................................... 25
75. mysql读写分离的原理?................................................... 25
77. 搭建mysql读写分离环境的应用场景?........................................ 26
78. MHA是什么?MHA由那两部分组成?MHA的优势是什么?........................... 26
79. MHA的实施步骤是什么..................................................... 26
80. 简述常见的MySQL常见的故障有哪些?........................................ 27
第三部分:高性能群集部署技术..................................................... 27
81. 简述LVS(Linux Virtual Server)的工作原理及其主要组成部分。................ 27
82. 负载均衡群集的工作模式有哪几种?.......................................... 27
83. 什么是LVS.............................................................. 28
84. 如何使用ipvsadm创建一个虚拟服务器?...................................... 28
85. 如何将一个Web服务器节点添加到一个虚拟服务器中,并解释常用的选项?............ 28
86. LVS中常用的几种调度算法有哪些?请简要说明每种算法的工作机制。................ 28
87. 如何使用ipvsadm命令添加、删除和查看LVS的虚拟服务器和服务规则?............. 29
88. 遇到LVS调度不均的情况,可能的原因有哪些?如何进行故障排查?.................. 29
89. LVS与Nginx相比,在负载均衡方面的主要区别是什么?各适用于哪些场景?........... 29
90. LVS中如何实现健康检查?能否自定义健康检查脚本?............................ 29
91. keepalived的健康检查方式有哪些........................................... 30
92. 简述Keepalived的作用及其基本工作原理。................................... 30
93. Keepalived如何与LVS结合使用以提升服务的可用性?........................... 30
94. 解释VRRP协议中的Master和Backup状态,以及它们是如何工作的。................ 30
95. 什么是脑裂现象,Keepalived如何避免脑裂?.................................. 30
96. Haproxy常用的调度算法中,RR、LC、SH三种调度算法的区别是什么?............... 31
97. 四层负载均衡和七层负载均衡的区别是什么..................................... 31
98. lvs、haproxy、nginx三款负载调度器的区别是什么?........................... 31
99. Haproxy常用的调度算法有哪些?............................................ 32
100. HAProxy的工作模式有哪些?.............................................. 32
第四部分:缓存与加速技术实践..................................................... 33
106. Redis缓存服务的优点.................................................... 33
107. Redis两种持久化方式分别是什么,各自的特点是什么........................... 33
108. Redis是什么?它主要用于哪些场景?........................................ 33
109. Redis为什么被称为单线程模型,但又不是严格意义上的单线程?................... 34
110. Redis的五种数据结构分别是什么?......................................... 34
111. Redis常用的数据库操作指令?............................................. 34
112. Redis集群的模式有哪些.................................................. 35
113. 如何优化Redis的性能?.................................................. 35
114. 简述redis的哨兵模式................................................... 35
115. Redis Cluster集群模式数据分片的原理是什么?.............................. 35
116. Zookeeper在Kafka集群中的作用是什么?................................... 36
117. Kafka判断一个节点是否还活着的两个条件是什么?............................. 36
118. Kafka与传统消息系统之间的三个关键区别是什么?............................. 36
119. Zookeeper中的Watcher机制是什么?....................................... 36
120. Zookeeper集群最少需要多少个节点?为什么?................................ 36
121. RabbitMQ是什么?它基于什么协议?........................................ 37
122. RabbitMQ中的Exchange和Queue有什么区别?............................... 37
123. RabbitMQ支持几种Exchange类型?请至少列举三种。.......................... 37
124. 如何保证消息的顺序性?.................................................. 37
125. 如何监控和管理RabbitMQ集群?........................................... 37
第五部分:分布式文件系统与企业级应用.............................................. 38
126. GlusterFS是什么?它主要解决了什么问题?.................................. 38
127. GlusterFS的工作原理是什么?............................................ 38
128. GlusterFS有哪些特点?.................................................. 38
129. GlusterFS中的“Brick”是什么?........................................... 38
130. GlusterFS如何实现数据的高可用性?....................................... 38
131. GlusterFS支持哪些卷类型?.............................................. 38
132. GlusterFS分布式卷具有哪些特点........................................... 39
133. GlusterFS复制卷具有如下特点............................................ 39
134. GFS分布式文件系统中分布式卷的特点有哪些?................................. 39
135. GFS分布式文件系统中分布式复制卷的特点有哪些?............................. 40
136. 在物联网环境中,Hadoop如何帮助处理海量设备生成的数据?..................... 40
137. Hadoop生态系统中的哪些组件对处理物联网数据特别重要?....................... 40
138. 在物联网场景下,Hadoop与传统关系型数据库相比有哪些优势?................... 40
139. 简述Hadoop的核心组件及其作用。.......................................... 40
140. 解释Hadoop的运行模式有哪几种,并简述它们之间的区别。...................... 41
141. 简述ELK栈是什么?..................................................... 41
142. Elasticsearch是如何实现高可用性的?..................................... 41
143. Logstash的三个主要组件是什么?.......................................... 41
144. 简述elasticsearch特性................................................. 42
145. elasticsearch的默认监听端口是什么....................................... 42
第一部分:企业网站架构部署与优化
- 列举几种常见的HTTP状态码?及各种代表的含义?
消息 | 描述 |
200 OK | 请求成功(其后是对GET和POST请求的应答文档) |
301 Moved Permanently | 请求的永久页面跳转 |
302 | 临时重定向 |
304 Not Modified | 未修改,比如本地缓存的资源文件和服务器上比较时,发现并没有修改,服务器返回一个304状态码,告诉浏览器,你不用请求该资源,直接使用本地的资源即可。 |
403 Forbidden | 禁止访问该页面,服务器拒绝请求 |
404 Not Found | 服务器无法找到被请求的页面 |
500 Internal Server Error | 内部服务器错误 |
502 Bad Gateway | 无效网关 |
503 Service Unavailable | 当前服务不可用 |
504 Gateway Timeout | 网关请求超时 |
- HTTP请求方法有哪些?请至少列举三种,并简述它们的用途。
包括GET、POST、PUT、DELETE等。GET用于请求读取资源,POST用于提交数据给服务器处理,PUT用于替换服务器上的现有资源,DELETE用于请求删除指定的资源
- HTTP协议的全称是什么?它主要负责什么功能?
HTTP协议全称为HyperText Transfer Protocol,是一种用于分布式、协作式和超媒体信息系统的应用层协议,主要用于从Web服务器传输网页等超文本文件到本地浏览器。
- HTTP与HTTPS的主要区别是什么?为什么现在更推荐使用HTTPS?
HTTP是未加密的明文传输协议,而HTTPS则通过SSL/TLS协议对通信进行加密,提供了数据的安全性与完整性保障。还提供了服务器身份验证,防止中间人攻击。推荐使用HTTPS是因为它能保护用户数据安全,符合现代网络安全标准。
- HTTP报文结构包括哪几部分?请简要说明。
HTTP报文分为;;;请求报文和响应报文。请求报文由请求行、请求头部、空行和请求正文组成;响应报文由状态行、响应头部、空行和响应正文组成。
- 解释一下HTTP的无状态性,并说明如何在Web应用中维持用户会话状态。
意味着服务器不保留之前请求的任何信息,每次请求都是独立的。为了维持用户会话状态,可以使用Cookie和Session机制。Cookie存储在客户端,携带会话标识;Session存储在服务器端,通过Cookie中的会话ID关联用户。
- HTTP请求的方法中get与post区别?
(1)数据传输位置:
GET:请求参数附加在URL之后,通过查询字符串的方式传递,因此会在浏览器地址栏中可见。
POST:请求参数放置在请求正文中(Request Body),不会在URL中显示,对用户不可见。
(2)数据长度限制:
GET:由于浏览器和服务器对URL长度有限制(通常不超过2048个字符),因此GET请求的数据量受限。
POST:理论上没有数据长度限制,适合传输大量数据。
(3)安全性:
GET:因为参数直接暴露在URL中,容易被截取,不适合传输敏感信息。
POST:相对安全,数据不在URL中显示,但并不意味着绝对安全,因为HTTP本身是明文传输,除非使用HTTPS。
(4)缓存与历史记录:
GET:请求可被浏览器缓存,会保存在浏览器的历史记录中。
POST:默认情况下不被浏览器缓存,也不会保存在浏览器历史记录中。
(5)使用场景:
GET:通常用于获取资源,如查询操作,因为它更安全且可缓存。
POST:用于提交数据,如表单提交、创建或更新资源,因为它可以承载大量数据且对安全性有一定保障。
(1)内容生成方式:
静态网页:内容在服务器上预先生成好,每个页面都是一个独立的文件,访问时直接读取并发送给浏览器,不涉及后台数据处理。
动态网页:内容在用户请求时由服务器动态生成,通过运行脚本并与数据库交互,根据用户请求或特定条件来组装页面内容。
(2)交互性:
静态网页:交互性较差,用户不能直接与网页进行数据交换,网页内容相对固定,更新需要手动编辑HTML文件。
动态网页:交互性强,可以实现用户注册、登录、提交表单、在线调查等功能,内容随用户操作或数据变化而更新。
(3)URL结构:
静态网页:URL通常以.htm、.html、.shtml等为后缀,不包含“?”字符。
动态网页:URL可能包含“?”字符及参数,用于传递请求信息给服务器。
(4)数据处理与数据库:
静态网页:不直接与数据库交互,所有内容直接写入HTML代码中。
动态网页:基于数据库技术,可以实时从数据库中读取或写入数据,便于管理和更新大量内容。
(5)更新与维护:
静态网页:更新内容需逐一修改HTML文件,适合内容更新不频繁的小型网站。
动态网页:通过后台管理系统即可快速更新内容,适合大型网站或内容频繁变动的场景。
(6)搜索引擎友好性:
静态网页:因为内容固定,对搜索引擎友好,更容易被索引。
动态网页:复杂的URL结构可能影响搜索引擎抓取,但通过URL重写等技术可以改善。
(7)性能与资源消耗:
静态网页:加载速度快,服务器资源消耗较低。
动态网页:初次加载可能较慢,服务器需要执行脚本处理逻辑,消耗更多资源,但通过缓存策略可以优化性能。
- 简述HTTP缓存机制及其作用。
HTTP缓存机制是 利用客户端缓存已下载的资源,减少网络请求和服务器负载,提高页面加载速度。通过响应头中的Cache-Control、Expires等字段控制缓存策略。
- 解释HTTP请求报文和响应报文的基本结构。
请求报文包括请求行,方法、URL、协议版本、请求头、空行和请求体;响应报文包括状态行,协议版本、状态码、状态消息)、响应头、空行和响应体。
- Apache HTTP Server的主要功能是什么?
答:Apache HTTP Server是一款开放源代码的Web服务器软件,主要用于提供网页内容至互联网上的客户端。它支持多种功能,包括静态内容服务、动态页面解析(通过CGI、FastCGI、PHP等)、虚拟主机、SSL/TLS加密传输、访问控制、日志记录等。
- Apache服务器都有哪些特点
1)开放源代码、跨平台应用
2)支持多种网页编程语言(Perl、Python、PHP)
3)模块化设计,支持多种模块
4)运行稳定、良好的安全性
5)支持虚拟主机
- 虚拟web主机有哪几种类型?
Apache中的虚拟主机允许您在单个实例上托管多个网站。
虚拟主机的类型有:基于ip 基于域名,基于端口
- Apache的三种工作模式是什么?各自的特点和适用场景是什么?
答:Apache的三种主要工作模式是Prefork、Worker和Event。Prefork模式使用非线程的进程模型,每个连接都由一个独立的进程处理,适合没有线程安全问题的模块。Worker模式采用多进程和多线程混合模型,提高了并发处理能力,适用于需要高性能和兼容性良好的模块。Event模式是Worker模式的改进版,引入了事件驱动机制,更高效地处理长连接,适合高并发、长连接的场景。
- 如何排查Apache服务器无法启动的问题?
先查看Apache的错误日志(通常位于/var/log/httpd/error_log或/var/log/apache2/error.log),它会记录导致服务无法启动的具体错误信息。常见的解决步骤包括:检查配置文件语法(使用apachectl configtest命令),确认端口未被占用(使用netstat命令),确认依赖服务(如SELinux、防火墙)配置正确,检查文件权限和所有权,以及确认必要的模块已加载。
- Apache的三种工作模式是什么?各自的特点和适用场景是什么?
答:Apache的三种主要工作模式是Prefork、Worker和Event。Prefork模式使用非线程的进程模型,每个连接都由一个独立的进程处理,适合没有线程安全问题的模块。Worker模式采用多进程和多线程混合模型,提高了并发处理能力,适用于需要高性能和兼容性良好的模块。Event模式是Worker模式的改进版,引入了事件驱动机制,更高效地处理长连接,适合高并发、长连接的场景。
- 简述LAMP的工作流程
首先,用户发送http请求到Web服务器。然后Apache服务器会根据用户请求的url地址进行判断,如果请求的url地址是静态网页资源,则服务器将请求的内容返回给用户。如果请求的url地址是动态网页资源,Apache服务器将通过CGI接口访问php,PHP把动态网页内容转为静态资源,让Apache服务器处理,然后返回给用户。如果请求的内容涉及到数据库,则利用php-mysql驱动,获取mysql数据库数据,转为静态资源返回给Apache服务器,然后由Apache服务器返回给客户端。
- 如何对Apache进行访问控制?
通过ip控制
通过用户授权文件控制
- Apache日志分割的原因:
磁盘空间管理:随着网站访问量的增长,单一的日志文件会变得非常庞大,分割日志可以有效管理磁盘空间。
便于查阅与分析:小的日志文件更容易阅读和分析,特别是当需要快速定位特定时间段的访问记录时。
归档与备份:定期分割日志有利于归档旧日志,便于历史数据的备份和长期保存。
性能考虑:大型日志文件可能会影响服务器的I/O性能,尤其是在频繁写入日志的场景下。
- Apache日志分割的工具与方法:
rotatelogs:这是Apache自带的一个日志分割工具,通过管道的方式与Apache的日志记录配置相结合,可以按时间、文件大小或两者结合来自动分割日志。
logrotate、cronolog等第三方工具:虽然不是Apache自带,但它们是Linux系统中广泛使用的日志管理工具,同样可以用来分割Apache日志,通过定时任务实现自动化。
自定义脚本:根据需要,开发自定义的shell脚本或程序,按特定条件(如文件大小、时间间隔)来分割日志。
- 如何提高Apache的性能?
不限于:优化配置(如调整KeepAlive设置、增加工作进程/线程数量)、使用更高效的MPM(多路处理模块),启用缓存模块(如mod_cache)、开启Gzip压缩、优化静态内容服务(使用Sendfile)、禁用不必要的模块、使用更快的硬件等。
答:防盗链就是防止别人的网站代码里面盗用服务器的图片、文件、视频等相关资源,如果别人盗用网站的这些静态资源,明显的是会增大服务器的带宽压力。所以作为网站的维护人员,要杜绝我们服务器的静态资源被其他网站盗用。
- 如何在Apache中启用并配置HTTP压缩(Gzip压缩)以减少页面加载时间?
答:在Apache的配置文件(如httpd.conf)中,启用并配置mod_deflate模块,通过启用mod_deflate模块并设置相应的过滤规则,可以对文本、CSS、JavaScript等类型的内容进行Gzip压缩,从而减小网络传输的数据量。
- Apache Web 服务器有些什么不同的日志文件?
答案:Apache Web 服务器的默认日志文件是访问日志 “/var/log/httpd/access_log” 和错误日志:/var/log/httpd/error_log”。
- Apache 侦听 http 和 https的 端口是什么?
答案:Apache 默认在80端口侦听http,在443端口侦听https(需要SSL整数);
你也可以使用 netstat 命令 来检查端口,netstat -antp | grep http。
- 什么是Nginx?简述其主要用途。
Nginx是一个高性能的Web服务器和反向代理服务器,也可用作邮件代理服务器。它以其高并发处理能力、低内存消耗和高可靠性而闻名,常用于负载均衡、静态内容服务和作为动态内容的反向代理。
- Nginx服务有哪些特点
Nginx是一款高性能、轻量级Web服务软件,具有以下特点:
1)开源免费,跨平台使用
2)模块化设计,较好的扩展性
3)稳定性高
4)支持热部署,不停机更新配置文件
5)系统资源消耗低(占用内存少)
6)处理静态网页能力强
- Nginx的四大功能是什么
正向代理 在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问。 反向代理 我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端 此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。 负载均衡 单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器 上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。 动静分离 为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力
- Nginx相比于其他Web服务器(如Apache)的主要优势是什么?
Nginx使用更少的资源处理更多并发连接, 非阻塞、事件驱动的架构使其在处理高并发请求时表现更优,同时启动速度快,适合静态内容的高速传输和反向代理。
- 解释Nginx的Master和Worker进程模型。
Master进程主要负责管理配置、维护工作进程、加载和升级配置等。Worker进程则负责处理实际的请求,包括网络通信、数据读写等操作。
- Nginx如何处理静态文件与动态内容?
静态文件直接由Nginx服务器响应,通过配置文件指定静态文件目录。动态内容则通常通过反向代理传递给后端应用服务器处理,如PHP-FPM或Node.js服务器。
- Nginx的location指令是如何工作的
location定义了如何处理特定URL的请求,根据请求的URI来匹配并执行相应的配置块内的指令,支持正则表达式匹配,用于路由控制、反向代理、静态内容服务等。
- 如何进行Nginx的性能调优?
调整worker_processes和worker_connections以匹配服务器硬件资源。
启用gzip压缩减少网络传输的数据量。
优化缓存设置。
优化超时时间的。
- 解释Nginx的rewrite指令及其应用场景。
rewrite指令用于在Nginx中实现URL重写和重定向功能,适用于SEO友好URL、站点迁移时的链接兼容性维护等场景。
- 解释Nginx的upstream模块中ip_hash指令的作用。
ip_hash指令用于基于客户端IP地址的会话持久化,确保来自同一IP的请求尽可能被转发到同一后端服务器,有助于维持用户会话状态。
- 如何通过Nginx与Tomcat结合实现动静分离和负载均衡?
配置Nginx作为前端服务器,通过location规则区分静态资源和动态请求。静态资源直接由Nginx处理,动态请求通过反向代理转发到Tomcat。负载均衡则通过Nginx的upstream模块配置多个Tomcat实例地址,实现请求分发。
- 请描述如何调优Tomcat性能,并提供一些建议。
,包括调整线程池大小、启用压缩、优化JVM参数等。首先,可以根据实际需求调整线程池的大小,避免线程过多或过少导致的性能问题;其次,可以启用HTTP内容的压缩,减少网络传输的数据量,提高传输效率;最后,可以优化JVM参数,例如调整堆大小、开启垃圾回收日志等,以提高Tomcat的性能和稳定性。此外,还可以通过定期清理Tomcat的临时目录、禁用不必要的日志记录等方式来优化性能。
- Tomcat服务中8005、8009、8080三个端口的含义
8005端口:关闭tomcat需要用到的端口号;
8009端口:是tomcat负责和其他的HTTP服务器建立连接的端口,如tomcat和nginx互通时使用;
8080端口:http访问时使用的端口,用于监听浏览器发送的请求;
- Tomcat核心组件有哪些?
Tomcat由一系列组件构成,其中核心的组件有三个:
(1) web容器:用于处理HTTP请求和响应。
(2) servlet容器:名字为catalina,它负责加载和运行Servlet和JSP文件。当请求到达Web容器时,Servlet引擎会将请求转发给相应的Servlet或JSP进行处理。
(3) JSP容器:用于将JSP动态网页翻译成Servlet代码。
- Tomcat如何处理HTTP请求?请简述其处理流程。
当用户发送一个HTTP请求到Tomcat时,Tomcat会接收到请求并开始处理。首先,Tomcat会根据请求的URL找到对应的Servlet类;然后,将请求转发给该Servlet类进行处理;最后,Servlet类将处理结果返回给Tomcat,Tomcat将结果返回给用户。整个过程由Tomcat的Servlet容器和过滤器等组件共同完成。
第二部分:数据库管理与高可用
Mysql sun公司,现已被oracle收购
oracle 甲骨文公司
DB2 IBM公司的产品
Sqlserver 微软公司
数据:各个表中存放的内容,描述事物的符号记录
表:用于具体存放数据的 (由字段+记录组成的)
数据库:由不同的表组合成的数据仓库,数据库是表的集合
实体:实体是一个表中的一行数据,所以一行数据就是一个实体
属性:数据库里属性指的是实体的描述性性质或特征,它具备一定的描述规则
联系:实体之间的对应关系称为联系,也称为关系
- 简述mysql数据库的特点?
开源免费,可以自由使用,成本低
性能高,服务稳定
多线程、多用户
基于C/S架构(Client/Server)
运行安全可靠
支持多种操作系统,跨平台
- 非关系型数据库的优点有哪些?列举常见的非关系型数据库有哪些产品?
高并发读写,高效率存储,高扩展性和高可用性
常见的非关系型数据库有:Redis mongodb Memcached
查看数据库信息用show databases;
查看数据表信息用show tables;
查看数据表结构用describe 表名;
- SQL(结构化查询语句)分为哪几种类型?
1)数据定义语言(DDL):DROP(删除)、CREATE(创建)、ALTER(修改)等语句。
2)数据操作语言(DML):INSERT(插入)、UPDATE(更新)、DELETE(删除)语句。
3)数据查询语言(DQL):SELECTE(选择),SHOW语句。
4)数据控制语言(DCL):GRANT(授权)、REVOKE(撤销授权)、COMMIT(提交)、ROLLBACK(回退)等语句。
语法:delete from 表名 [where 条件]
查看数据库信息用show databases;
查看数据表信息用show tables;
查看数据表结构用describe 表名;
- insert语句的语法是什么?
语法:insert into 表名 (字段名,字段名,...) values (值1,值2,...)
语法: update 表名 set 字段=值 [where 条件]
- 如何使用select进行数据查询?
SELECT * FROM 表名 WHERE 字段名;
- 修改mysql数据库root用户的登陆密码有几种方法?
3种
方法一:登陆mysql设置,第一次登陆不用密码,登陆后用这个命令设置初始密码
mysql> set password=password ('123456');
方法二:用update语句,如下所示
mysql> update user set authentication_string=password('123456') where user='root';
mysql> flush privileges;0
方法三:也可以通过命令行模式去设置密码
[root@www mysql]# mysqladmin -u root -p password 'pwd123'
- 如何实现MySQL的用户账户安全加固?
强制使用复杂且独特的密码。
定期更改密码。
限制root用户远程登录。
使用SSL加密客户端与服务器之间的通信。
审核和最小化用户权限,遵循最小权限原则。
删除不再使用的账户。
- 如何理解并设置MySQL的全局权限与数据库特定权限?
全局权限影响服务器上的所有数据库,如GRANT ALL PRIVILEGES ON *.* TO ...给予用户对所有数据库的所有权限。
数据库特定权限仅作用于指定的数据库,如GRANT SELECT, INSERT ON db_name.* TO ...仅给予用户在特定数据库上的读写权限。
- mysql数据库的索引都有哪些类型
1、普通索引
2、唯一索引
3、主键索引
4、全文索引
5、组合索引(单列索引、多列索引)
- mysql数据库使用索引的作用是什么?
索引是一种特殊的数据结构,用于快速定位数据库表中的记录。
设置了合适的索引之后,数据库利用各种快速的定位技术,能够大大加快查询速率
特别是当表很大时,或者查询涉及到多个表时,使用索引可以使查询加快成千倍
可以降低数据库的IO成本(不用查询整个表),还可以降低数据库的排序成本
通过创建唯一性索引保证数据表数据的唯一性
可以加快表与表之间的连接(多表联合查询),结合关联外键去查询
在使用分组和排序时,可大大减少分组和排序时间
表的主键和外键必须有索引
数据量超过300行
经常与其他表进行连接的表,在连接字段上应该建立索引
经常出出现在where子句中的字段,特别是大表的字段,应该建立索引
索引应该建立在选择性高的字段上
索引应该建立在小字段上,对于大的文本字段甚至超长字段,不要建索引
唯一性太差的字段不适合建立索引
更新太频繁地字段不适合创建索引
最左前缀原则是指在复合索引中,查询条件必须从索引的最左边字段开始,才能利用到索引。否则,索引可能无法有效发挥作用,导致查询性能下降。
1、show index from <table_name>;
2、show keys from <table_name>;
3、describe <table_name>;
优点包括提高查询速度、减少磁盘I/O、支持唯一性约束等。缺点包括增加存储空间、降低写入速度(尤其是插入、更新、删除操作)、维护成本等。
当表数据量较小、经常进行全表扫描、数据更新频繁、索引字段选择性较低(即索引区分度不高)时,创建索引可能不是最优选择。
事务(database transaction)是指作为单个逻辑工作单元执行的一系列操作,要么完整地执行,要么完全地不执行,
1、原子性(Atomicity):事务中的所有操作要么全部成功,要么全部失败。(都是真实存在的,彼此之间有联系)
2、一致性(consistency):事务开始前和事务结束后,数据库的完整性约束没有被破坏。如果事务中某个操作失败了,系统可以撤销事务,回滚到事务前的状态。
3、隔离性(Isolation):每个读写事务的对象对其他事务的操作对象能相互分离,即该事务提交前对其他事务不可见。
4、持久性(durability):事务一旦提交,结果就是永久性的。即使发生宕机,数据库也能将数据恢复。
- mysql事务操作过程中,如何使用set命令进行控制?(如何禁止/开启自动提交功能)
Set autocommit=0;禁止自动提交
Set autocommit=1;开启自动提交
设置为手动提交的时候,输入完操作语句之后,直接用commit命令提交即可,不用重新输入begin
- mysql数据库常用的两种存储引擎是什么?
Innodb myisam
- mysql数据库MyISAM存储引擎的特点有哪些?
不支持事务,需要事务支持的系统不能使用MyISAM作为存储引擎
表级锁定形式,数据在更新时锁定整个表
数据库在读写过程中相互阻塞
在数据写入的过程中阻塞用户对数据的读取
在数据读取的过程中阻塞用户写入数据
可以通过key_buffer_size来设置缓存索引,提高访问的性能,减少磁盘IO的压力
采用MyISAM存储引擎进行数据单独写入或读取,速度较快且占用资源相对要少
MyISAM存储引擎不支持外键约束,只支持全文索引
- mysql数据库MyISAM存储引擎的应用场景是?
公司业务不需要事务的支持
一般单方面读取数据比较多的业务,或者单方面写入数据比较多的业务
myisam存储引擎数据读写都比较频繁场景不适合
使用读写并发访问相对较低的业务
数据修改相对较少的业务(图片网,商品库)
- mysql数据库InnoDB存储引擎的特点有哪些?
支持事务,支持四个事务隔离级别
行级锁定,但是全表扫描仍然会是表级锁定
读写阻塞与事务隔离级别相关
具有非常高效的缓存特性,能缓存索引,也能缓存数据
表与主键以簇的方式存储
支持分区、表空间,类似Oracle数据库
支持外键约束
适合对硬件资源要求比较高得场合
- mysql数据库InnoDB存储引擎的应用场景是?
业务需要事务的支持
行级锁定对高并发有很好的适应能力,但需要确保查询是通过索引来完成
业务数据更新较为频繁的场景,如论坛、微博等
业务数据一致性要求较高,例如银行业务
硬件设备内存较大,利用InnoDB较好的缓存能力来提高内存利用率,减少磁盘IO的压力
存储文件的类型,表名.frm 存放的一般是表结构 表名.ibd 一般存储的数据和索引
- mysql主从复制的原理?
主(master)数据库启动bin二进制日志,这样会有一个Dump线程,这个线程是把主(master)数据库的写入操作都会记录到这个bin的二进制文件中。
然后从(slave)数据库会启动一个I/O线程,这个线程主要是把主(master)数据库的bin二进制文件读取到本地,并写入到中继日志(Relay log)文件中。
最后从(slave)数据库其他SQL线程,把中继日志(Relay log)文件中的事件再执行一遍,更新从(slave)数据库的数据,保持主从数据一致,重新写入数据库。
- mysql主从复制的类型有哪些?
(1)基于语句的复制,在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。
(2)基于行的复制,把改变的内容复制过去,而不是把命令在从服务器上执行一遍,多表格的插入,容易出错。
(3)混合类型的复制,默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制
复制的顺序是先基于语句的复制,然后是基于行的复制,最后是混合类型的复制。
- 搭建mysql主从复制环境的应用场景?
1)从服务器作为主服务器的实时数据备份
2)主从服务器实现读写分离,从服务器实现负载均衡
3)把多个从服务器根据业务重要性进行拆分访问
- 什么是mysql主备延迟
主库和备库在执行同一个事务的时候出现时间差的问题,主要原因有:
1)备库服务器的性能比主库性能差
2)一个主库上执行大事务语句,花费时间长,可能会导致从库数据延迟
3)网络延迟
- mysql读写分离的原理?
读写分离就是只在主服务器上写,只在从服务器上读,基本原理是让主数据库处理事务性查询(select,update,insert),而从数据库处理select查询。数据库复制被用来把事务性查询导致的变更同步到群集中的从数据库。
- mysql读写分离实现的方式有哪些?
第一种方式即我们在代码层实现逻辑,对到达的读/写请求进行解析,针对性地分发到不同的数据库中,从而实现读写分离;
第二种方式是基于类似MyCat或amoeba等中间件来帮助我们实现读写分离的效果;
- 搭建mysql读写分离环境的应用场景?
在实际的生产环境中,如果对MySQL数据库的读与写都在一台服务器上进行操作,无论是在安全性,高可用性、还是高并发性等诸多方面都是无法满足的;而这就需要对MySQL数据库进行主从复制与读写分离。
- MHA是什么?MHA由那两部分组成?MHA的优势是什么?
MHA是Master High Availability,即MySQL高可用,是一个MySQL主从架构下实现故障切换和主从复制的解决方案
MHA由 manager(管理节点)和node(数据节点)组成
优点:可以实现故障切换,高可用
0-30s快速使用master故障转移
自动切换、手动切换
切换通过二进制日志,最大程度保存数据不丢失
使用半同步复制,不会存在主从数据不一致的情况
- MHA的实施步骤是什么
(1)安装 MySQL 数据库;
(2)搭建时间同步服务器;
(3)配置MySQL一主两从;
(4)安装MHA软件;
(5)配置无密码认证;
(6)配置MySQL-MHA高可用;
(7)模拟master故障切换。
- 简述常见的MySQL常见的故障有哪些?
1)启动类故障
2)远程连接类故障
3)主从复制故障
4)从库连接主库故障
第三部分:高性能群集部署技术
- 简述LVS(Linux Virt/ual Server)的工作原理及其主要组成部分。
LVS是一种基于IP层和内容请求分发的开源软件负载均衡解决方案,它通过在Linux内核中集成IPVS模块实现。主要组成部分包括:Director(前端负载均衡器),负责接收客户端请求并根据调度算法分配至后端服务器;Real Server(真实服务器),提供实际的服务处理;IPVS内核模块,实现请求的转发和会话保持;以及管理工具(如ipvsadm),用于配置和管理LVS规则。
NAT模式
原理:客户端发送请求报文给LVS服务器,LVS服务器将请求报文的目的IP地址修改为后端真实服务器的IP地址,然后把请求发送给后端的真实服务器;后端服务器在处理完之后将响应的报文返回调度器,然后再返回给客户端。
DR模式
原理:客户端发送请求报文给LVS服务器,LVS服务器将请求报文的源mac地址改为后端真实服务器的mac地址,然后把请求发送给后端的真实服务器;后端真实服务器在处理完数据请求后,直接把数据返回给客户端。
TUN模式
原理:客户端发送请求报文给LVS服务器,LVS服务器将请求报文重新封装,发送给后端真实服务器,后端真实服务器在处理完数据请求之后直接返回给客户端。
LVS即Linux虚拟服务器,它工作在网络层,可以实现高性能,高可用的服务器集群技术。
- 如何使用ipvsadm创建一个虚拟服务器?
ipvsadm -A -t 172.16.16.172:80 -s rr
- 如何将一个Web服务器节点添加到一个虚拟服务器中,并解释常用的选项?
ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.21:80 -m -w 1
-a:添加real server
-e:修改real server
-g:指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)
-i:指定LVS 的工作模式为隧道模式
-m:指定LVS 的工作模式为NAT 模式
-w:真实服务器的权值 -r 是指后端服务器连接负载均衡服务器的IP地址
- LVS中常用的几种调度算法有哪些?请简要说明每种算法的工作机制。
答案:
RR(Round Robin):轮询,依次将请求分配给每个服务器。
LC(Least Connections):最少连接,将请求发送到当前连接数最少的服务器。
WRR(Weighted Round Robin):加权轮询,根据服务器权重分配请求。
SH(Source Hashing):基于来源哈希,同一客户端请求始终分配给同一台服务器。
DH(Destination Hashing):基于目的哈希,根据请求的目标地址进行哈希分布。
- 如何使用ipvsadm命令添加、删除和查看LVS的虚拟服务器和服务规则?
答案:
添加规则:ipvsadm -A -t VIP:port -s scheduler -r RIP:port -g
删除规则:ipvsadm -D -t VIP:port -r RIP:port
查看规则:ipvsadm -Ln
- 遇到LVS调度不均的情况,可能的原因有哪些?如何进行故障排查?
可能包括权重设置不当、健康检查失败、连接跟踪问题等。应检查各服务器的权重配置、健康检查配置是否正确,使用ipvsadm和系统日志检查连接状态和错误日志,以及确认网络配置无误。
- LVS与Nginx相比,在负载均衡方面的主要区别是什么?各适用于哪些场景?
答案:LVS工作在网络层,更适合大规模、高性能的四层负载均衡场景;Nginx工作在应用层,除了负载均衡还支持反向代理、静态资源服务等,更适合七层负载均衡及需要更多应用层控制的场景。
- LVS中如何实现健康检查?能否自定义健康检查脚本?
LVS本身不直接提供健康检查功能,但可通过搭配keepalived等外部工具实现。keepalived可以定期发送探测包到Real Server的指定端口,根据响应判断服务器状态。同时,可以自定义脚本作为健康检查的一部分,通过脚本返回码决定服务器的健康状态。
- keepalived的健康检查方式有哪些
TCP_CHECK:工作在第4层
HTTP_GET:工作在第5层
SSL_GET:工作在第5层
MISC_CHECK:用脚本来检测
- 简述Keepalived的作用及其基本工作原理。
Keepalived主要用于实现高可用性(HA)解决方案,通过VRRP协议来确保服务的不间断运行。它包括两部分:VRRP部分负责主备切换,确保只有一个“虚拟路由器”(即Master)对外提供服务;健康检查部分监测服务器状态,及时发现故障并进行主备切换。
- Keepalived如何与LVS结合使用以提升服务的可用性?
Keepalived作为LVS集群的管理工具,通过VRRP协议实现LVS (前端负载均衡器)Director节点的高可用。当主Director发生故障时,备份Director会立即接管VIP,继续转发请求至后端Real Server,确保LVS集群的整体服务不中断。
- 解释VRRP协议中的Master和Backup状态,以及它们是如何工作的。
Master状态的Keepalived实例负责向外发送VRRP通告报文,以表明自己的活动状态,并处理所有通过虚拟IP(VIP)的流量。Backup状态的实例则监听这些通告报文,一旦检测到Master失效,Backup将自动提升为新的Master并开始处理流量。
- 什么是脑裂现象,Keepalived如何避免脑裂?
答案:脑裂是指在分布式系统中,由于网络分区等原因,原本应该协同工作的多个节点认为其他节点已离线,各自成为独立的Master,导致资源竞争和服务混乱。Keepalived通过设置VRRP的认证、监视网络连通性、严格定义优先级和最小切换时间等方法,减少脑裂发生的可能性。
- Haproxy常用的调度算法中,RR、LC、SH三种调度算法的区别是什么?
SH有会话保持,有缓存,
RR是挨个分配,
LC最小连接按照算法,匹配当前连接最少的服务节点,
四层就是基于IP+端口的负载均衡;比如lvs、HaProxy
七层就是基于URL等应用层信息的负载均衡;比如HaProxy、nginx
- lvs、haproxy、nginx三款负载调度器的区别是什么?
lvs基于四层的转发,消耗服务器内存资源低,抗负载能力较强,配置简单,工作稳定,应用较广,但lvs 软件本身不支持正则表达式处理,不能做动静分离,不支持健康检查。
Haproxy基于四层和七层的转发,是专业的代理服务器,支持虚拟主机,支持Session和Cookie会话保持功能,支持TCP协议的负载均衡转发,支持健康检查等。
nginx基于七层的转发,可以实现动静分离的请求;支持多种调度算法,可以做反向代理;安装与配置简单,但监控检查方式只支持通过端口,无法使用url地址检查。
- Haproxy常用的调度算法有哪些?
源地址散列,最小连接,sh算法,轮询算法等
- HAProxy的工作模式有哪些?
答案: HAProxy主要工作模式有两种:TCP模式(四层负载均衡)和HTTP模式(七层负载均衡)。此外,还有一种称为“TCP健康检查”模式,专门用于TCP服务的健康检查。
- 解释Nginx如何实现负载均衡?
答案: Nginx通过反向代理功能实现负载均衡,它可以接收客户端请求,并根据预定义的策略(如轮询、最少连接、哈希等)将请求转发给后端不同的服务器(如Tomcat实例),从而达到负载分担的目的。
答案: 动静分离是指在Web服务器架构中,将动态内容(如JSP、PHP等由程序生成的内容)与静态内容(如HTML、CSS、JavaScript、图片等)分开处理。这样做可以优化资源利用,提高网站响应速度,因为静态资源可以直接由Nginx这类高性能服务器处理,减轻应用服务器(如Tomcat)的压力。
- 列举几种Nginx常用的负载均衡算法。
答案: 轮询(默认)、权重(weight)、最少连接(least_conn)、IP哈希(ip_hash)。
- Nginx如何实现健康检查,以确保后端服务器的可用性?
答案: 使用upstream模块中的health_check指令可以配置健康检查。例如,定期发送HTTP请求检测后端服务器状态,如果服务器未响应,则将其标记为不可用,不再转发请求到该服务器。
- 遇到Nginx 502 Bad Gateway错误,可能的原因有哪些?
答案: 可能原因包括:后端服务器未启动或无法访问、Nginx配置错误(如代理地址错误)、网络问题、后端服务器过载或超时、防火墙阻止了Nginx到后端的连接等。
第四部分:缓存与加速技术实践
- Redis缓存服务的优点
Redis 具有以下几个优点:
具有极高的数据读写速度
支持丰富的数据类型
支持数据的持久化
原子性
支持数据备份
- Redis两种持久化方式分别是什么,各自的特点是什么
RDB方式:通过创建快照的方式保存某一时刻Redis中所有数据,保存在二进制文件中。默认开启;
AOF方式:以日志的方式来记录每个数据写操作,将执行的写命令追加写到文件的末尾,需要手动开启;
当两种方式同时开启时,redis数据恢复会优先选择AOF方式。通常情况下AOF文件保存的数据要比RDB文件保存的数据更完整。
- Redis是什么?它主要用于哪些场景?
答案: Redis是一个开源的、基于键值对的数据结构存储系统,支持网络、可内存存储也可持久化的数据库。它主要用于缓存、消息队列、实时分析、计数器、会话存储等场景。
- Redis为什么被称为单线程模型,但又不是严格意义上的单线程?
答案: Redis的核心操作确实是单线程执行的,主要在内存中进行读写,避免了多线程上下文切换的开销,从而提高了处理速度。然而,Redis在执行一些特定操作如RDB快照、AOF重写、异步复制等时会使用额外的后台线程,因此并非完全单线程。
- Redis的五种数据结构分别是什么?
答案: Redis支持五种主要数据结构:字符串(String)、列表(List)、集合(Set)、有序集合(Sorted Set)和哈希(Hash)。
- Redis常用的数据库操作指令?
参数 | 含义 |
keys | 可以取符合规则的键值列表,通常情况可以结合*、?等选项来使用(* 匹配0个 以上字符,?匹配一个字符) keys k* 查看当前数据库中以 k开头的数据 |
exists kcc | 查看kcc是否存在 |
del kcc | 可以删除当前数据库的指定键 kcc |
type kgc | 可以获取 key 对应的 value 值类型 |
rename k1 k2 | 对已有 key 进行重命名,其命令格式为:rename 源 key 目标 key。使用 rename 命令进行重命名时,无论目标 key 是否存在都进行重命名,且源 key 的值会覆盖目标 key 的值, |
renamenx k1 k2 | 把k1重命名为k2,如果k2 已存在,就停止命名 |
dbsize | 查看当前数据库中 key 的数目 |
- Redis集群的模式有哪些
Redis有三种集群模式:分别是主从复制模式、哨兵模式、Cluster集群模式
- 如何优化Redis的性能?
答案: 性能优化措施包括:合理配置内存大小,避免交换;使用高效的数据结构和命令;开启持久化但注意对性能的影响;限制客户端连接数;合理配置Linux内核参数等。
- 简述redis的哨兵模式
哨兵机制(sentinel)是Redis解决高可用的一种解决方案:它是由一个或者多个sentinel 实例组成的一个sentinel 系统。sentinel其实就是一个运行在特殊模式下的Redis服务器。
哨兵(sentinel)在Redis主从架构中是一个非常重要的组件,是在Redis2.8版本引入的。它的主要作用就是监控所有的Redis实例,并实现master节点的故障转移。哨兵是一个特殊的redis服务,它不负责数据的读写,只用来监控Redis实例。
- Redis Cluster集群模式数据分片的原理是什么?
Redis Cluster采用哈希槽(slot)方式分片,将数据分布在多个节点上。Cluster中总共有16384个槽,每个key通过CRC16校验后对16384取模决定归属的槽位,进而决定存储在哪个节点上。
- Zookeeper在Kafka集群中的作用是什么?
答案: Zookeeper在Kafka集群中起到协调管理的作用,包括但不限于:选举Kafka控制器(controller)、管理broker注册、维护topic配置、参与partition副本的领导选举以及监控broker状态等。
- Kafka判断一个节点是否还活着的两个条件是什么?
答案: Kafka通过Zookeeper判断一个节点是否还活着,主要依据两点:①节点必须能够和Zookeeper保持心跳连接;②节点能够及时响应Zookeeper的请求和监听事件。
- Kafka与传统消息系统之间的三个关键区别是什么?
答案: ①Kafka是分布式的,易于水平扩展;②Kafka支持高吞吐量,适合处理海量数据流;③Kafka消息持久化存储,支持消息回溯和容错。
- Zookeeper中的Watcher机制是什么?
答案: Watcher是Zookeeper提供的一种分布式事件通知机制,客户端可以在节点上设置Watcher,当节点数据发生变更、子节点增删或会话事件触发时,Zookeeper会向客户端发送一个事件通知。
- Zookeeper集群最少需要多少个节点?为什么?
答案: Zookeeper集群最少需要3个节点,这是因为Zookeeper采用了多数投票的策略来进行决策,如选举Leader,3个节点可以保证在有一个节点故障的情况下,剩余的两个节点依然能形成多数,保持集群的正常运行。
- RabbitMQ是什么?它基于什么协议?
答案: RabbitMQ是一个开源的消息队列系统,它实现了AMQP(Advanced Message Queuing Protocol,高级消息队列协议),用于在分布式系统中实现异步消息传递。
- RabbitMQ中的Exchange和Queue有什么区别?
答案: Exchange是消息的路由中心,它接收来自生产者的消息,并根据路由规则(如Routing Key)将消息投递到一个或多个Queue(队列)中。Queue则是消息的实际存储地,消费者从Queue中获取消息进行处理。
- RabbitMQ支持几种Exchange类型?请至少列举三种。
答案: RabbitMQ支持多种Exchange类型,包括Direct(直接匹配)、Fanout(广播)、Topic(主题匹配)、Headers(头部匹配)等。
答案: 为了保证消息的顺序性,应确保所有消息被发送到同一个Queue,并且该Queue只有一个消费者或者消费者在处理消息时是串行的。同时,使用单个Connection和Channel进行消息的发布和消费也有助于保持消息的顺序。
答案: RabbitMQ提供了Web管理界面,通过浏览器访问管理端口(默认15672)即可查看队列、交换机、绑定、消息等信息,并进行管理操作。
第五部分:分布式文件系统与企业级应用
- GlusterFS是什么?它主要解决了什么问题?
答案: GlusterFS是一个开源的分布式文件系统,它设计用于解决大数据存储的可扩展性、高性能和高可用性问题,通过在多个服务器之间分布数据来提供统一的存储池。
- GlusterFS的工作原理是什么?
答案: GlusterFS基于砖块(Brick)架构,每个存储服务器上的存储单元称为一个Brick。多个Brick可以组合成一个逻辑卷(Volume),通过不同的卷类型(如分布式卷、条带卷、复制卷等)实现数据的分布、冗余和性能优化。
- GlusterFS有哪些特点?
答案: GlusterFS的特点包括:无元数据服务器设计,简化了架构并提升了可扩展性;全局统一命名空间,方便管理和访问;支持多种卷类型以适应不同需求;高度可扩展,可横跨数百台服务器;高可用性设计,支持数据自动修复。
- GlusterFS中的“Brick”是什么?
答案: Brick是GlusterFS中的基本存储单元,通常对应于服务器上的一个目录。数据被分割成块并分布存储在各个Brick上,Bricks可以单独存在,也可以组合成更大的逻辑卷。
- GlusterFS如何实现数据的高可用性?
答案: GlusterFS通过复制卷(Replicated Volume)实现高可用性,数据会被复制到多个Brick上。即使某个Brick或服务器发生故障,系统仍然可以从其他副本中访问数据,保证服务连续性。
- GlusterFS支持哪些卷类型?
答案: GlusterFS支持包括分布式卷(Distribute Volume)、条带卷(Stripe Volume)、复制卷(Replicate Volume)、分布式条带卷(Distributed Stripe Volume)以及分布式复制卷(Distributed Replicate Volume)等多种卷类型。
- GlusterFS分布式卷具有哪些特点
文件分布在不同的服务器,不具备冗余性。
更容易且廉价地扩展卷的大小。
存在单点故障会造成数据丢失。
依赖底层的数据保护。
- GlusterFS复制卷具有如下特点
卷中所有的服务器均保存一个完整的副本。
卷的副本数量可由客户创建的时候决定。
至少有两个块服务器或更多服务器。
具备冗余性。
- GFS分布式文件系统中分布式卷的特点有哪些?
优点:
1)读写性能高
2)方便扩展卷的容量大小
3)brick数量没有限制
4)适合存放小文件
缺点:
数据无冗余,安全性能低,容易造成数据丢失。
- GFS分布式文件系统中分布式复制卷的特点有哪些?
优点:
1)读性能高
2)数据有冗余,安全性能高
缺点:
写性能低
- 在物联网环境中,Hadoop如何帮助处理海量设备生成的数据?
答案: Hadoop通过其分布式存储(HDFS)和并行处理(MapReduce或Spark)框架,能够高效存储和处理物联网设备产生的大量结构化和非结构化数据。它能够扩展到数千台服务器,处理PB级别的数据,支持实时和批处理分析,从而帮助提取有价值的信息和洞察。
- Hadoop生态系统中的哪些组件对处理物联网数据特别重要?
答案: Hadoop生态系统中,HBase是一个分布式、列存储的NoSQL数据库,非常适合存储传感器数据这类半结构化数据;Hive提供SQL接口,便于数据分析人员查询和处理数据;Kafka作为消息队列,可以处理高吞吐量的实时数据流;而Spark和Storm则支持实时数据处理和分析。
- 在物联网场景下,Hadoop与传统关系型数据库相比有哪些优势?
答案: Hadoop能处理极大规模数据,成本效益更高,支持水平扩展,且能处理半结构化和非结构化数据,适合物联网数据的多样性。而传统关系型数据库在处理高度结构化数据和事务处理方面更为擅长,但在处理海量数据和实时分析时可能面临扩展性和成本挑战。
- 简述Hadoop的核心组件及其作用。
答案:Hadoop的核心组件主要包括HDFS(Hadoop Distributed File System)和MapReduce。HDFS是一个高度容错性的分布式文件系统,设计用来在低成本硬件上运行,能够提供高吞吐量的数据访问,适合大规模数据集的存储。MapReduce是一种编程模型,用于大规模数据集的并行处理。它将计算任务分为两个阶段:Map阶段负责将输入数据切分成小块并应用映射函数;Reduce阶段则对Map输出进行排序、聚合等处理。
- 解释Hadoop的运行模式有哪几种,并简述它们之间的区别。
答案:Hadoop有三种运行模式:单机(本地)模式、伪分布式模式、完全分布式模式。单机模式不涉及网络,所有进程都运行在同一台机器上,主要用于调试。伪分布式模式下,Hadoop的各个守护进程运行在同一台机器上,但模拟了一个分布式环境,每个守护进程都在单独的Java进程中运行。完全分布式模式是最接近生产环境的部署方式,所有组件分布在多台机器上,提供了真正的故障隔离和数据冗余。
- 简述ELK栈是什么?
答案:ELK栈是由Elasticsearch、Logstash、Kibana三个开源工具组成的日志分析系统。Elasticsearch是一个分布式的搜索引擎和分析引擎,用于存储和检索数据;Logstash负责数据收集、解析和转换,将各种日志数据统一格式后发送至Elasticsearch;Kibana则是可视化界面,用于搜索、分析和展示Elasticsearch中的数据。
- Elasticsearch是如何实现高可用性的?
答案:Elasticsearch通过主-副分片机制和副本机制实现高可用性。每个索引被分为多个分片,每个分片可以有多个副本。主分片负责写入和更新操作,副分片作为数据的备份。当主分片所在节点故障时,副分片会被提升为主分片,确保数据不丢失且服务不间断。
- Logstash的三个主要组件是什么?
答案:Logstash由输入(input)、过滤(filter)和输出(output)三个主要组件构成。输入插件负责收集数据,过滤插件对数据进行解析和处理,输出插件则将处理后的数据发送到目的地,如Elasticsearch或文件系统。
分布式架构:可以通过水平扩展来提高性能和容量。
全文检索:支持match、term等多种查询方式,可以快速准确地匹配文档。
近实时搜索:es会定期刷新数据,保证查询结果的及时性。
可扩展性:支持各种插件和第三方扩展,可以根据需求进行扩展。
大数据量处理:可以轻松处理海量的数据和文档。
- elasticsearch的默认监听端口是什么
9200端口号,暴露elasticsearch RESTful接口端口号,ES节点和外部通讯使用,比如接收来自logstash发送过来的日志信息,是TCP协议端口号
9300端口: ES集群之间通讯端口号,是TCP协议端口号
标签:面试题,缓存,请求,数据库,Nginx,Linux,Apache,服务器,数据 From: https://blog.csdn.net/w2304948626/article/details/140226949