Skip to content

Commit 09cf631

Browse files
author
1020325258
committed
docs:拆分面试图及文档
1 parent 7192081 commit 09cf631

20 files changed

Lines changed: 3688 additions & 78 deletions

docs/.vuepress/config.js

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -168,14 +168,7 @@ module.exports = {
168168
},
169169
{
170170
text: '面试题',
171-
items: [
172-
{text: '面试突击', link: '/md/zqy/面试题/面试突击.md'},
173-
{text: '面试题-Java基础', link: '/md/zqy/面试题/面试题-Java基础.md'},
174-
{text: '面试题-MySQL', link: '/md/zqy/面试题/面试题-MySQL.md'},
175-
{text: '面试题-Netty', link: '/md/zqy/面试题/面试题-Netty.md'},
176-
{text: '面试题-Redis', link: '/md/zqy/面试题/面试题-Redis.md'},
177-
{text: '面试题-场景题', link: '/md/zqy/面试题/面试题-场景题.md'},
178-
]
171+
link: '/md/zqy/面试题/01-分布式技术面试实战.md'
179172
}
180173
],
181174
// 配置文章的侧边导航栏 新增文章提交前都需要在此处操作!!!
@@ -198,11 +191,30 @@ module.exports = {
198191
],
199192
"/md/zqy/面试题/": [
200193
{
194+
title: "面试突击",
195+
collapsable: false,
196+
sidebarDepth: 0,
197+
children: [
198+
"01-分布式技术面试实战.md",
199+
"02-注册中心和网关面试实战.md",
200+
"03-生产部署面试实战.md",
201+
"04-分布式锁、幂等性问题实战.md",
202+
"05-Java基础面试实战.md",
203+
"06-Spring面试实战.md",
204+
"07-计算机网络面试实战.md",
205+
"08-数据库面试实战.md",
206+
"09-网络通信及可见性面试实战.md",
207+
"10-Java 系统架构安全面试实战.md",
208+
"11-深挖网络 IO 面试实战.md",
209+
"12-分布式架构、性能优化、场景设计面试实战.md",
210+
]
211+
},
212+
{
213+
201214
title: "面试大全",
202215
collapsable: false,
203216
sidebarDepth: 0,
204217
children: [
205-
"面试突击.md",
206218
"面试题-Java基础.md",
207219
"面试题-MySQL.md",
208220
"面试题-Netty.md",

docs/md/Dubbo/01-互联网架构的发展历程.md

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,4 @@
1-
# 01、互联网架构的发展历程
2-
3-
# 作者
4-
5-
- 【11来了】:目前在读研究生,现处于研二,现在计划更新常用中间件系统性学习内容,2024年初会进行暑期实习面试,到时候会在公众号分享面试分析!
6-
- 关注微信公众号及时收到通知,[资料领取点击](https://mp.weixin.qq.com/s?__biz=MzkyMTM4MjI0OQ==&mid=2247483939&idx=1&sn=1bf016f07d1448a65b36afaa8507a188&chksm=c1853e25f6f2b7339d9931e1b2f8ad1d47e31983a3d7a95bb135e7d4aed309fe41acd9b2bd06#rd)
7-
8-
![1705922099587](https://11laile-note-img.oss-cn-beijing.aliyuncs.com/1705922099587.png)
9-
10-
- [CSDN](https://blog.csdn.net/qq_45260619)
11-
- [编程严选网](http://javaedge.cn)
12-
- **声明:编程严选版权所有,侵权必究!**
13-
14-
1+
# 01-互联网架构的发展历程
152

163
# 最新 Dubbo3 深入理解原理系列
174

docs/md/Dubbo/02-Dubbo特性及工作原理.md

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,5 @@
1-
# 02、Dubbo特性及工作原理
2-
# 作者
1+
# 02-Dubbo特性及工作原理
32

4-
- 【11来了】:目前在读研究生,现处于研二,现在计划更新常用中间件系统性学习内容,2024年初会进行暑期实习面试,到时候会在公众号分享面试分析!
5-
- 关注微信公众号及时收到通知,[资料领取点击](https://mp.weixin.qq.com/s?__biz=MzkyMTM4MjI0OQ==&mid=2247483939&idx=1&sn=1bf016f07d1448a65b36afaa8507a188&chksm=c1853e25f6f2b7339d9931e1b2f8ad1d47e31983a3d7a95bb135e7d4aed309fe41acd9b2bd06#rd)
6-
7-
![1705922099587](https://11laile-note-img.oss-cn-beijing.aliyuncs.com/1705922099587.png)
8-
9-
- [CSDN](https://blog.csdn.net/qq_45260619)
10-
- [编程严选网](http://javaedge.cn)
11-
- **声明:编程严选版权所有,侵权必究!**
123

134
## Dubbo 的特性
145

docs/md/Dubbo/03-Dubbo的负载均衡及高性能RPC调用.md

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,5 @@
11
# 03-Dubbo的负载均衡及高性能RPC调用
2-
# 作者
32

4-
- 【11来了】:目前在读研究生,现处于研二,现在计划更新常用中间件系统性学习内容,2024年初会进行暑期实习面试,到时候会在公众号分享面试分析!
5-
- 关注微信公众号及时收到通知,[资料领取点击](https://mp.weixin.qq.com/s?__biz=MzkyMTM4MjI0OQ==&mid=2247483939&idx=1&sn=1bf016f07d1448a65b36afaa8507a188&chksm=c1853e25f6f2b7339d9931e1b2f8ad1d47e31983a3d7a95bb135e7d4aed309fe41acd9b2bd06#rd)
6-
7-
![1705922099587](https://11laile-note-img.oss-cn-beijing.aliyuncs.com/1705922099587.png)
8-
9-
- [CSDN](https://blog.csdn.net/qq_45260619)
10-
- [编程严选网](http://javaedge.cn)
11-
- **声明:编程严选版权所有,侵权必究!**
123

134
## Dubbo 的负载均衡策略
145

docs/md/Dubbo/04-Dubbo的通信协议.md

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,4 @@
11
# 04-Dubbo的通信协议
2-
# 作者
3-
4-
- 【11来了】:目前在读研究生,现处于研二,现在计划更新常用中间件系统性学习内容,2024年初会进行暑期实习面试,到时候会在公众号分享面试分析!
5-
- 关注微信公众号及时收到通知,[资料领取点击](https://mp.weixin.qq.com/s?__biz=MzkyMTM4MjI0OQ==&mid=2247483939&idx=1&sn=1bf016f07d1448a65b36afaa8507a188&chksm=c1853e25f6f2b7339d9931e1b2f8ad1d47e31983a3d7a95bb135e7d4aed309fe41acd9b2bd06#rd)
6-
7-
![1705922099587](https://11laile-note-img.oss-cn-beijing.aliyuncs.com/1705922099587.png)
8-
9-
- [CSDN](https://blog.csdn.net/qq_45260619)
10-
- [编程严选网](http://javaedge.cn)
11-
- **声明:编程严选版权所有,侵权必究!**
122

133
## Dubbo 支持的通信协议
144

docs/md/Dubbo/05-Dubbo的应用及注册和SPI机制.md

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,5 @@
11
# 05-Dubbo的应用及注册和SPI机制
2-
# 作者
32

4-
- 【11来了】:目前在读研究生,现处于研二,现在计划更新常用中间件系统性学习内容,2024年初会进行暑期实习面试,到时候会在公众号分享面试分析!
5-
- 关注微信公众号及时收到通知,[资料领取点击](https://mp.weixin.qq.com/s?__biz=MzkyMTM4MjI0OQ==&mid=2247483939&idx=1&sn=1bf016f07d1448a65b36afaa8507a188&chksm=c1853e25f6f2b7339d9931e1b2f8ad1d47e31983a3d7a95bb135e7d4aed309fe41acd9b2bd06#rd)
6-
7-
![1705922099587](https://11laile-note-img.oss-cn-beijing.aliyuncs.com/1705922099587.png)
8-
9-
- [CSDN](https://blog.csdn.net/qq_45260619)
10-
- [编程严选网](http://javaedge.cn)
11-
- **声明:编程严选版权所有,侵权必究!**
123

134
## Dubbo 的服务注册中应用级注册优化
145

docs/md/Dubbo/06-Dubbo相关面试题和源码使用技巧.md

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,6 @@
11
# 06-Dubbo相关面试题和源码使用技巧
2-
# 作者
32

4-
- 【11来了】:目前在读研究生,现处于研二,现在计划更新常用中间件系统性学习内容,2024年初会进行暑期实习面试,到时候会在公众号分享面试分析!
5-
- 关注微信公众号及时收到通知,[资料领取点击](https://mp.weixin.qq.com/s?__biz=MzkyMTM4MjI0OQ==&mid=2247483939&idx=1&sn=1bf016f07d1448a65b36afaa8507a188&chksm=c1853e25f6f2b7339d9931e1b2f8ad1d47e31983a3d7a95bb135e7d4aed309fe41acd9b2bd06#rd)
63

7-
![1705922099587](https://11laile-note-img.oss-cn-beijing.aliyuncs.com/1705922099587.png)
8-
9-
- [CSDN](https://blog.csdn.net/qq_45260619)
10-
- [编程严选网](http://javaedge.cn)
11-
- **声明:编程严选版权所有,侵权必究!**
124

135
## Dubbo 相关面试题
146

docs/md/Dubbo/07-Dubbo真实生产环境思考.md

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,5 @@
11
# 07-Dubbo真实生产环境思考
2-
# 作者
32

4-
- 【11来了】:目前在读研究生,现处于研二,现在计划更新常用中间件系统性学习内容,2024年初会进行暑期实习面试,到时候会在公众号分享面试分析!
5-
- 关注微信公众号及时收到通知,[资料领取点击](https://mp.weixin.qq.com/s?__biz=MzkyMTM4MjI0OQ==&mid=2247483939&idx=1&sn=1bf016f07d1448a65b36afaa8507a188&chksm=c1853e25f6f2b7339d9931e1b2f8ad1d47e31983a3d7a95bb135e7d4aed309fe41acd9b2bd06#rd)
6-
7-
![1705922099587](https://11laile-note-img.oss-cn-beijing.aliyuncs.com/1705922099587.png)
8-
9-
- [CSDN](https://blog.csdn.net/qq_45260619)
10-
- [编程严选网](http://javaedge.cn)
11-
- **声明:编程严选版权所有,侵权必究!**
123

134
## 在互联网环境下,理想的注册中心
145

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
# 01-分布式技术面试实战
2+
3+
## 分布式技术面试实战
4+
5+
如果跟面试官聊到了 `分布式` 这方面的内容,该怎么去聊呢,或者说是面试官会去问哪些内容呢,下面对分布式面试内容进行分析
6+
7+
目前主流的微服务框架主要就是两个 `Dubbo``Spring Cloud`,可能有些项目使用 Dubbo,有些使用 Spring Cloud
8+
9+
其实两者最主要的区别就在于 `生态`,Spring Cloud 的生态很丰富,提供了注册中心、网关、服务熔断、服务限流等等很完善的一系列组件,功能比 Dubbo 丰富很多,而 Dubbo 设计的目的主要是作为一个 `RPC 服务框架` 使用,专注于服务注册、服务发现、负载均衡等服务治理的功能
10+
11+
简单来说,就是 Dubbo 主要是为了高性能的服务调用,而 Spring Cloud 是为了提供一套完整的微服务解决方案,而 Spring Cloud Alibaba 则整合了 Spring Cloud 和阿里巴巴的一些开源组件,如 Nacos、Dubbo、Sentinel 等等,通过 Spring Cloud Alibaba 可以迅速的将 Spring Cloud 接入阿里中间件,搭建分布式系统
12+
13+
14+
15+
### 技术选型
16+
17+
那么先来思考第一个问题:你们公司微服务框架选用了哪一种,为什么这样选择呢?
18+
19+
简单来说,可以从 `公司的需求``对哪一种微服务框架更加熟悉` 这两方面来说,就比如说,我对 Dubbo 更加熟悉,那么肯定使用 Dubbo,这样对于前期生产成本以及后期维护成本都是大大降低了,其实选用哪一种技术,也不用说的很天花乱坠,只要说明需求即可
20+
21+
其次,可以去 Dubbo 官网,Dubbo 在官网也有与 Spring Cloud 的比较
22+
23+
如 Spring Cloud 存在了一些问题如下,而这些问题也就是 Dubbo 的优势:
24+
25+
- 落地成本以及后期维护成本大
26+
- 欠缺服务治理功能,尤其负载均衡、流量路由方面较弱
27+
- 基于 HTTP 进行通信,性能不如 RPC 框架
28+
29+
30+
31+
32+
33+
### 技术原理
34+
35+
那么假如说,微服务框架选择了 Dubbo,那面试官肯定是要问问你有没有看过 Dubbo 的源码呢?原理了解吗?
36+
37+
这里我就以 Dubbo 来举例,如果你使用 Spring Cloud 或 Spring Cloud Alibaba,问题都是类似的,你一定要对这个问题,画一个原理的流程图,可以和面试官清晰的讲解出来,Dubbo 整理的流程图我也画出来了,如下图,流程我也写成文字:
38+
39+
1. 每个服务提供者都会去注册中心注册自己,包括自己的地址(ip+port)
40+
2. 服务消费者去消费时,从注册中心(Dubbo 使用 ZooKeeper 作为注册中心)中拉取服务列表
41+
3. 消费者会去为远程代理对象创建一个动态代理对象,通过动态代理来拦截方法的执行
42+
4. 在代理对象的拦截中,会去执行一系列的操作
43+
1. 负载均衡,选择一台机器进行通信
44+
2. 选择一种通信协议:Dubbo 提供了自定义的高性能 rpc 通信协议
45+
3. 将请求进行封装,并且序列化
46+
4. 通过网络通信框架,将远程调用请求传给 Dubbo 服务提供者
47+
5. Dubbo 服务提供者收到后,也会进行一系列操作解析请求,最后调用本地服务,将执行结果返回给服务消费者
48+
49+
![1704897771000](https://11laile-note-img.oss-cn-beijing.aliyuncs.com/1704897771000.png)
50+
51+
52+
53+
### 由面到点
54+
55+
整体的一个 Dubbo 原理说完之后,肯定会从 Dubbo 某一个具体的功能切入,比如说一下 Dubbo 底层的网络通信机制原理,这其实考察的就是 Dubbo 底层网络通信框架 Netty 的原理,只要讲一下 Netty 如何进行网络通信,以及 Netty 的线程模型是怎样的就可以了
56+
57+
具体的技术细节就不说了,这里主要说一下面试的逻辑,只有熟悉面试官的逻辑之后,才可以更好的去准备面试
58+
59+
60+
61+
### 系统设计层面
62+
63+
并且对于一个技术,可以多去看一下它的官网,看一下官网怎么说这个技术的优点,以及它的架构设计!
64+
65+
Dubbo 在系统设计层面,如何实现了它的高度可扩展能力呢?使用了 SPI 来实现
66+
67+
Dubbo 中将核心的组件全部接口化,组件和组件之间的调用全部依托于接口,之后再动态去寻找配置的实现类,如果没有配置,就去使用默认的实现类
68+
69+
并且 Dubbo 提供了配置自己实现的组件的功能,如果你自己实现了一个组件,通过配置,可以在 Dubbo 运行的时候,直接使用你的组件而不是默认的组件
70+
71+
Dubbo 提供了很多的 SPI 扩展实现,如:
72+
73+
- 协议扩展
74+
- 调用拦截扩展
75+
- 集群扩展
76+
- ...
77+
78+
更多细节可以查看 Dubbo 官方文档
79+
80+
![1704899629343](https://11laile-note-img.oss-cn-beijing.aliyuncs.com/1704899629343.png)
81+
82+
83+
84+
85+
86+
### 自己设计
87+
88+
如果面试官让你自己设计一个 RPC 框架,你该从哪些方面来设计呢?
89+
90+
这个东西,其实也没法简简单单说清楚,其实也就是问你 Dubbo 底层的原理,只不过,让你自己设计,可能并不需要太复杂的功能,你需要可以从整体流程来说一下 RPC 框架需要哪些功能部分,那么接下来我就简单从各个功能来说一下:
91+
92+
- `注册中心`:RPC 框架是需要服务之间进行调用,那么一定要有一个地方去存储服务的地址,可以进行 `服务注册``服务发现` 的功能的,注册中心使用 ZooKeeper 实现
93+
- `动态代理`:RPC 框架中,服务消费者肯定是没有服务提供者的一个实例对象的,因为他们分布在不同机器上,所以需要去创建动态代理对象
94+
- `负载均衡`:这个是在消费方实现的,消费者从注册中心拉取到服务提供者的地址,可以根据多个地址进行负载均衡
95+
- `序列化、网络通信`:消费者最终会将调用请求发送到服务提供者去,最终服务提供者执行完本地方法,再将执行结果给返回,这其中通信框架可以使用 Netty(高性能网络通信),并且需要将调用请求序列化为二进制的字节数组,才可以通过网络发送出去
96+
97+
我自己也写过一个 RPC 框架,这里将流程图给出来,可以看一下整体的 rpc 调用流程是怎样的:
98+
99+
![1704900498031](https://11laile-note-img.oss-cn-beijing.aliyuncs.com/1704900498031.png)
100+
101+
102+
103+
104+

0 commit comments

Comments
 (0)