Skip to content

Commit 17bda53

Browse files
authored
Merge pull request #1 from shishan100/master
e'e'e
2 parents 1e01035 + 7113a56 commit 17bda53

26 files changed

+536
-9
lines changed

README.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@
151151

152152
### 分布式事务
153153
- [分布式事务了解吗?你们如何解决分布式事务问题的?TCC 如果出现网络连不通怎么办?XA 的一致性如何保证?](/docs/distributed-system/distributed-transaction.md)
154+
- [关于如何实现一个TCC分布式事务框架的一点思考](http://www.bytesoft.org)
154155

155156
### 分布式会话
156157
- [集群部署时的分布式 Session 如何实现?](/docs/distributed-system/distributed-session.md)
@@ -177,6 +178,22 @@
177178
- [02、Java工程师面试突击第一季总结:你离一次成功的面试还差多少?](/docs/distributed-system/java-interview-season-1-summary.md)
178179
- [03、《21天互联网Java进阶面试训练营》的课程说明](/docs/distributed-system/21-day-course-instructions.md)
179180
- [04、作业:系统分析一下,自己距离大厂offer差在哪里?](/docs/distributed-system/homework.md)
181+
- [05、感受一下BAT面试官对分布式技术的十几个面试连环炮!](/docs/distributed-system/BAT-interview-fire.md)
182+
- [06、你们公司用的Dubbo?那你再额外说说Spring Cloud的核心架构原理?](/docs/distributed-system/core-architecture-principle%20.md)
183+
- [07、基于Dubbo和Spring Cloud分别搭建一个电商系统来快速体验一下!](/docs/distributed-system/Dubbo-SpringCloud-experience.md)[代码下载点击这里哦!](https://github.com/shishan100/Java-Interview-Advanced/raw/master/docs/distributed-system/code/code.zip)
184+
- [08、作业:你们的系统使用了哪种服务框架?为什么要这样技术选型?](/docs/distributed-system/distributed-framework-selection.md)
185+
- [09、看过Dubbo源码吗?说说Dubbo的底层架构原理?](/docs/distributed-system/dubbo-framework-principle.md)
186+
- [10、咱们来聊点深入的,说说Dubbo底层的网络通信机制原理!](/docs/distributed-system/dubbo-rock-bottom.md)
187+
- [11、Dubbo框架从架构设计角度,是怎么保证极高的可扩展性的?](/docs/distributed-system/dubbo-augmentability.md)
188+
- [12、作业:自己独立画出Dubbo的底层架构原理图](/docs/distributed-system/dubbo-independent-framework.md)
189+
- [13、如果让你设计一个RPC框架,网络通信、代理机制、负载均衡等该如何设](/docs/distributed-system/rpc-design.md)
190+
- [14、平时除了使用外,有研究过Spring Cloud的底层架构原理么?](/docs/distributed-system/springCloud-study-theory.md)
191+
- [15、从底层实现原理的角度,对比一下Dubbo和Spring Cloud的优劣!](/docs/distributed-system/dubbo-vs-springCloud.md)
192+
- [16、作业:自己独立画出Spring Cloud的架构原理图,RPC框架架构设计图!](/docs/distributed-system/springCloud-and-rpc-framework.md)
193+
- [17、面试官:你们的服务注册中心进行过选型调研吗?对比一下各种服务注册中心!](/docs/distributed-system/registration-center-%20guide.md)
194+
- [18、画图阐述一下你们的服务注册中心部署架构,生产环境下怎么保证高可用?](/docs/distributed-system/register-high-availability.md)
195+
- [19、你们系统遇到过服务发现过慢的问题吗?怎么优化和解决的?](/docs/distributed-system/service-register-discovery.md)
196+
- [20、作业:说一下自己公司的服务注册中心怎么技术选型的?生产环境中应该怎么优化?](/docs/distributed-system/register-production-optimize.md)
180197

181198

182199
### 第二季-高并发
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
针对面试突击第一季关于分布式这块的内容,相对应的做一个回顾和总结
2+
3+
面试突击第一季总共四五十讲,每个技术专题大概也是有十来讲
4+
5+
#### (1)为什么要把系统拆分成分布式的?为啥要用dubbo?
6+
#### (2)dubbo的工作原理是啥?注册中心挂了可以继续通信吗?
7+
#### (3)dubbo都支持哪些通信协议以及序列化协议?
8+
#### (4)dubbo支持哪些负载均衡、高可用以及动态代理的策略?
9+
#### (5)SPI是啥思想?dubbo的SPI机制是怎么玩儿的?
10+
#### (6)基于dubbo如何做服务治理、服务降级以及重试?
11+
12+
这些问题在面试突击第一季里,我们都讲解过了,都是非常高简单的一些问题,作为一个合格的工程师,如果你是用了分布式系统架构,也就是把大的系统拆分为了多个子系统,或者是 多个服务
13+
14+
你肯定会用到一种服务框架,Dubbo、Spring Cloud、gRPC、Thrift
15+
16+
你必须 对这些服务框架的核心的架构原理,有一个认识和了解,服务注册和发现,通信和序列化,负载均衡,扩展机制,请求重试,请求超时
17+
18+
#### (7)分布式系统中接口的幂等性该如何保证?比如不能重复扣款?
19+
#### (8)分布式系统中的接口调用如何保证顺序性?
20+
21+
接口幂等性,分布式系统,如果不保证,是否会发生类似重复下单,重复扣款之类的问题
22+
23+
#### (9)如何设计一个类似dubbo的rpc框架?架构上该如何考虑?
24+
25+
自己看过一些dubbo、spring cloud的源码,对一款服务框架底层的实现原理,有一定的了解和认识,此时如果说他希望能够深入的考察你一下,看看你的水平,这个时候就有可能会问你这个问题
26+
27+
#### (10)说说zookeeper一般都有哪些使用场景?
28+
#### (11)分布式锁是啥?对比下redis和zk两种分布式锁的优劣?
29+
30+
拆分成了分布式系统,就说明有很多子系统在同时的运作,如果说两个子系统都需要对某个数据资源进行一系列复杂的操作,在复杂操作期间,不能让数据被其他任何人来改变。分布式锁,技术实现原理
31+
32+
#### (13)说说你们的分布式session方案是啥?怎么做的?
33+
34+
前后端分离之后,一般是前端那边来care session之类的问题,对于后端来说,玩儿分布式session玩儿的很少了
35+
36+
#### (14)了解分布式事务方案吗?你们都咋做的?有啥坑?
37+
38+
39+
**我们的课程每天都会有一个作业,引导大家把学习到的项目经验、技术方案和生产优化落地到自己负责的项目中去,让大家出去面试的时候,可以把各种技术结合自己的项目来回答面试官的各种深度拷问**
40+
41+
**大家不要小看这个,根据我多年的面试经验来看,拥有这个技能的人凤毛麟角,这种人出去绝对是各大公司争抢的对象。**
42+
43+
**所以希望大家好好完成每天的作业,我布置的大量作业,就是为了帮你锻造出这种能力**
44+
45+
**学习课程以及完成作业的过程中,大家一定会有很多的问题,可以到专栏的评论区去提问**
46+
47+
**每天我都会和之前带出来的一批阿里、蚂蚁金服、滴滴的优秀同学给大家进行答疑,并且我们还有专门的付费用户的微信群,大家可以在微信群里跟我们一起进行技术交流**
48+
49+
**如果你能坚持下来,学满6季,还可以获取私人定制的面试一条龙VIP服务**
50+
51+
**如果是连续6季面试训练营都购买的同学,还可以获取面试一条龙VIP服务**
52+
53+
**具体信息大家看“狸猫技术窝”公众号的知识店铺内的训练营详情即可**
54+
55+
**具体可参见训练营目录下的《训练营专属服务》文档。简单来说,这个私人定制的面试VIP服务,会为你的跳槽面试全程保驾护航**
56+
57+
**“狸猫技术窝”**,找到我们的训练营的详情页面
58+
59+
60+
61+
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
Spring Cloud来搭建了一套
2+
3+
http://localhost:9000/order/order/create?productId=1&userId=1&count=3&totalPrice=300
4+
5+
刚开始几次请求会出现请求超时的问题,这个问题大家别纠结,后续要给大家讲spring cloud生产系统的优化
6+
7+
小小的小作业,参考一下dubbo的官方文档,搭建一个电商系统的dubbo版本的案例出来,我后面会搭建好的
8+
9+
[代码下载点击这里哦!](https://github.com/shishan100/Java-Interview-Advanced/raw/master/docs/distributed-system/code/code.zip)
79.4 KB
Binary file not shown.
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
如果聊分布式这块的技术,围绕**Dubbo来拷问**的,但是呢,现在其实非常流行的是**Spring Cloud,Dubbo和Spring Cloud以及阿里系的一些技术**,现在正在融合,**Spring Cloud Alibaba,只不过现在用的公司暂时还没那么多而已**
2+
3+
作为合格的工程师,行业里主流的**分布式服务技术栈****Dubbo****Spring Cloud**两种,有的公司他是用**Dubbo**的,不用**Spring Cloud**的,有的公司是用**Spring Cloud**的,不用**Dubbo**的,他们是代表了两种主流技术栈
4+
5+
Java工程师,Dubbo和Spring Cloud起码是基本原理,都有一定的了解
6+
7+
**大白话 + 现场画图**
8+
9+
上网看一些博客资料,或者是买一些Spring Cloud的书,可能没考虑过一个事儿,第一篇必须是用非常通俗的语言,把一个系统如果用Spring Cloud来做分布式架构的话,那么他需要用到Spring Cloud哪些组件,为什么
10+
11+
跟着书或者博客,直接上手开始搭建demo,开始做起来了
12+
13+
**分别用Dubbo和Spring Cloud做两个最基本的Demo工程**,用电商背景来搭建几个服务
14+
15+
比如说,现在我们有一个电商系统
16+
17+
用户现在需要下单购买一些东西这样子,订单系统、库存系统、仓储系统、积分系统
18+
19+
不太可能说用单块的架构,电商系统你想支撑多少用户量?10万注册用户,日活1000用户来你这里来购买?
20+
21+
百万级用户,十万级日活,单块系统就不太合适了,背后有几十个人的团队在协作开发,此时单块系统是绝对不合适的
22+
23+
梳理和明确一个概念:电商系统,拆分为了多个子系统,一次下订单的请求需要多个子系统协作完成,每个子系统都完成一部分的功能,多个子系统分别完成自己负责的事情,最终这个请求就处理完毕
24+
25+
我们不会让每个视频太长,按照我们大纲来讲,说是60讲,粗略的大纲,其实最终会拆分成可能上百讲,Spring Cloud架构原理,我们就要分为上下两讲来说
26+
![Spring Cloud核心架构原理](/docs/distributed-system/images/SpringCloud-core-architecture.png)
27+
28+
### Spring Cloud
29+
30+
#### Eureka:服务注册中心
31+
#### Feign:服务调用
32+
#### Ribbon:负载均衡
33+
#### Zuul/Spring Cloud Gatway:网关
34+
35+
这么多的系统,电商系统包含了20个子系统,每个子系统有20个核心接口,一共电商系统有400个接口,这么多的接口,直接对外暴露,前后端分离的架构,难道你让前端的同学必须记住你的20个系统的部署的机器,他们去做负载均衡,记住400个接口
36+
37+
38+
微服务那块,**网关**
39+
40+
**灰度发布****统一熔断****统一降级****统一缓存****统一限流****统一授权认证**
41+
42+
43+
44+
**Hystrix****链路追踪****stream**、很多组件,Hystrix这块东西,其实是会放在高可用的环节去说的,并不是说一个普通系统刚开始就必须得用的,没有用好的话,反而会出问题,**Hystrix线路熔断的框架**,必须得设计对应的一整套的限流方案、熔断方案、资源隔离、降级机制,配合降级机制来做

docs/distributed-system/distributed-design.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
最最起码的,你应该去从哪个角度来考察这个获选人呢?职位JD要求是工作经验在3年~5年,有一定的社会工作经验的
1010

11-
###(1)技术广度来考察
11+
### (1)技术广度来考察
1212

1313
招聘过来一个有几年经验的人,就不要再去培养他了,候选人的整个技术栈是比较匹配我们团队的技术栈的
1414

@@ -34,7 +34,7 @@ JVM,数据库和并发,都是必考的
3434

3535
薪资在20k左右,差不多
3636

37-
###(2)项目经验
37+
### (2)项目经验
3838

3939
你平时用的各种技术在你的项目中如何结合业务来进行落地,然后你在项目的生产环境中落地一个技术之后,对他进行的生产优化、架构优化、生产实践是怎么来做的
4040

@@ -50,7 +50,7 @@ JVM,数据库和并发,都是必考的
5050

5151
出去面试的时候,往往被 面试官一通追问项目的各种细节,然后就直接死了
5252

53-
###(3)生产经验
53+
### (3)生产经验
5454

5555
分布式、微服务这块,你说用过网关,网关调研了哪几种技术?对比一下他们的优缺点?最后你们是怎么进行技术选型的?你们这个系统每天的访问量多高?高峰期QPS多高?你们网关要抗多高的QPS?网关是如何部署的?部署了几台机器?每台机器的配置如何,几个核CPU,几个GB内存?
5656

@@ -74,7 +74,7 @@ JVM,数据库和并发,都是必考的
7474

7575
如果是很多的大厂,哪怕是三五年经验,或者二三年经验,也会来考察这块项目经验和生产经验,越是大厂,对你的能力里要求就越高,希望你进来以后越能独当一面,所以就希望你不光只是有技术广度
7676

77-
###(4)技术深度
77+
### (4)技术深度
7878

7979
你有没有读过哪些开源项目的源码,RocketMQ,RocketMQ的源码,Dubbo的源码,如果你精通一些技术的源码的话,为什么会特别的有价值,有竞争力,让面试官更加的倾向于用你呢?
8080

@@ -86,7 +86,7 @@ Dubbo、RocketMQ、Kafka、ES,随时可能有问题,比如说Dubbo随时可
8686

8787
大厂,很可能会考察你的技术深度,如果发现你没有什么技术深度,那么可能你就没有太大的竞争优势
8888

89-
###(5)系统设计
89+
### (5)系统设计
9090

9191
往简单了说,就是会考察一些问题,比如说让你来设计秒杀系统,设计一个12306火车票购票系统,支撑几亿用户买火车票,你会如何来设计,让你设计一个微信红包系统,你会如何来考虑
9292

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
**Spring Cloud**入门和使用级别的资料,建议大家自行百度,面试训练营,不是说针对每个技术详细给大家讲解的一个课程,我们会针对每个技术推出重磅的项目实战课程
2+
3+
**自己公司如果是分布式的架构,你们当前选用的是Spring Cloud?Dubbo?自己研发的服务框架?对比一下各种服务框架的优点和缺点,技术选型,为什么?**
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
两点,第一点,是核心的组件全部接口化,组件和组件之间的调用,必须全部是依托于接口,去动态找配置的实现类,如果没有配置就用他自己默认的
2+
3+
第二点,提供一种自己实现的组件的配置的方式,比如说你要是自己实现了某个组件,配置一下,人家到时候运行的时候直接找你配置的那个组件即可,作为实现类,不用自己默认的组件了
4+
5+
6+
7+
8+
**我们的课程每天都会有一个作业,引导大家把学习到的项目经验、技术方案和生产优化落地到自己负责的项目中去,让大家出去面试的时候,可以把各种技术结合自己的项目来回答面试官的各种深度拷问**
9+
10+
**大家不要小看这个,根据我多年的面试经验来看,拥有这个技能的人凤毛麟角,这种人出去绝对是各大公司争抢的对象。**
11+
12+
**所以希望大家好好完成每天的作业,我布置的大量作业,就是为了帮你锻造出这种能力**
13+
14+
**学习课程以及完成作业的过程中,大家一定会有很多的问题,可以到专栏的评论区去提问**
15+
16+
**每天我都会和之前带出来的一批阿里、蚂蚁金服、滴滴的优秀同学给大家进行答疑,并且我们还有专门的付费用户的微信群,大家可以在微信群里跟我们一起进行技术交流**
17+
18+
**如果你能坚持下来,学满6季,还可以获取私人定制的面试一条龙VIP服务**
19+
20+
**如果是连续6季面试训练营都购买的同学,还可以获取面试一条龙VIP服务**
21+
22+
**具体信息大家看“狸猫技术窝”公众号的知识店铺内的训练营详情即可**
23+
24+
**具体可参见训练营目录下的《训练营专属服务》文档。简单来说,这个私人定制的面试VIP服务,会为你的跳槽面试全程保驾护航**
25+
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
**分布式**这块,**Dubbo相关的原理****Spring Cloud相关的原理**,有的面试官可能会这样问,你有没有看过**Dubbo或者Spring Cloud的源码呢****技术广度****技术深度****项目经验****系统设计****基本功**
2+
3+
平时看你简历主要是用一些技术来开发一些系统,就会问问你了,对于一些你平时常用的技术,有没有关注过底层的原理,或者是看过源码,你要是说,90%的人,一般都会在这个时候支支吾吾的说
4+
5+
源码看过一点点,但是没怎么看过
6+
7+
在我们面试训练营里,能给你来分析源码吗?不太现实的,任何一个开源项目,**源码**少则几万行,多则几十万行,**Hadoop、Spark****面试训练营**,几讲的时间来讲透任何一个**开源项目****源码**,不现实
8+
9+
看源码技巧是有,但是,需要**技术功底**
10+
11+
就是说提炼一些**Dubbo、Spring Cloud**相关的一些底层的运行的原理,给大家来用大白话+现场画图的方式,说清楚,你就可以结合我们视频讲解的内容,去现场画图给面试官画一画一些技术底层的运行的一些原理
12+
13+
14+
我们的课程每天都会有一个作业,引导大家把学习到的项目经验、技术方案和生产优化落地到自己负责的项目中去,让大家出去面试的时候,可以把各种技术结合自己的项目来回答面试官的各种深度拷问
15+
16+
大家不要小看这个,根据我多年的面试经验来看,拥有这个技能的人凤毛麟角,这种人出去绝对是各大公司争抢的对象。
17+
18+
所以希望大家好好完成每天的作业,我布置的大量作业,就是为了帮你锻造出这种能力
19+
20+
学习课程以及完成作业的过程中,大家一定会有很多的问题,可以到专栏的评论区去提问
21+
22+
每天我都会和之前带出来的一批阿里、蚂蚁金服、滴滴的优秀同学给大家进行答疑,并且我们还有专门的付费用户的微信群,大家可以在微信群里跟我们一起进行技术交流
23+
24+
如果你能坚持下来,学满6季,还可以获取私人定制的面试一条龙VIP服务
25+
26+
如果是连续6季面试训练营都购买的同学,还可以获取面试一条龙VIP服务
27+
28+
具体信息大家看“狸猫技术窝”公众号的知识店铺内的训练营详情即可,
29+
30+
具体可参见训练营目录下的《训练营专属服务》文档。简单来说,这个私人定制的面试VIP服务,会为你的跳槽面试全程保驾护航
31+
32+
33+
34+
35+
分布式系统
36+
37+
拆分为了多个子系统之后,各个系统之间如何通过Spring Cloud服务框架来进行调用,Dubbo框架来进行调用
38+
39+
![Dubbo核心架构原理](/docs/distributed-system/images/dubbo-framework-principle.png)
40+
提供接口
41+
42+
服务注册中心:
43+
44+
###消费者
45+
46+
#### 动态代理:Proxy
47+
#### 负载均衡:Cluster,负载均衡,故障转移
48+
#### 注册中心:Registry
49+
#### 通信协议:Protocol,filter机制,http、rmi、dubbo等协议
50+
51+
#### http、rmi、dubbo
52+
53+
比如说,我现在其实想要调用的是,DemoService里的sayHello接口
54+
55+
你的请求用什么样的方式来组织发送过去呢?以一个什么样的格式来发送你的请求?
56+
57+
http,/demoService/sayHello?name=leo
58+
rmi,另外一种样子
59+
dubbo,另外一种样子,interface=demoService|method=sayHello|params=name:leo
60+
61+
信息交换:Exchange,Request和Response
62+
63+
对于你的协议的格式组织好的请求数据,需要进行一个封装,Request
64+
65+
##### 网络通信:Transport,netty、mina
66+
##### 序列化:封装好的请求如何序列化成二进制数组,通过netty/mina发送出去
67+
68+
提供者
69+
70+
#### 网络通信:Transport,基于netty/mina实现的Server
71+
#### 信息交换:Exchange,Response
72+
#### 通信协议:Protocol,filter机制
73+
#### 动态代理:Proxy

0 commit comments

Comments
 (0)