Skip to content

Commit 887c105

Browse files
author
jesper
committed
update network and dubbo
1 parent 7520fb4 commit 887c105

File tree

6 files changed

+206
-126
lines changed

6 files changed

+206
-126
lines changed

image/network-5.png

39.6 KB
Loading

image/network-6.jpg

49 KB
Loading

image/network-7.jpg

49 KB
Loading

notes/framework/Dubbo.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ SPI (Service Provider Interface)
220220
3. 接口位于独立的包中
221221

222222

223-
### 1接口位于【调用方】所在的包中
223+
### 1. 接口位于【调用方】所在的包中
224224
对于类似这种情况下接口,我们将其称为 SPI, SPI的规则如下:
225225

226226
- 概念上更依赖调用方。
@@ -234,13 +234,13 @@ SPI (Service Provider Interface)
234234
- 日志 Log
235235
- dubbo扩展点开发
236236

237-
### 2接口位于【实现方】所在的包中
237+
### 2. 接口位于【实现方】所在的包中
238238
对于类似这种情况下的接口,我们将其称作为API,API的规则如下:
239239

240240
- 概念上更接近实现方。
241241
- 组织上位于实现方所在的包中。
242242

243-
### 3接口位于独立的包中
243+
### 3. 接口位于独立的包中
244244
如果一个“接口”在一个上下文是API,在另一个上下文是SPI,那么你就可以这么组织
245245

246246
![](https://github.com/zaiyunduan123/Java-Interview/blob/master/image/dubbo-3.png)
@@ -1292,13 +1292,13 @@ dubbo 是基于netty NIO的非阻塞 并行调用通信。 (阻塞 非阻塞
12921292
dubbo从头到脚都是异步的
12931293
dubbo 的通信方式 有3类类型:
12941294

1295-
### 1、异步,无返回值
1295+
### 1. 异步,无返回值
12961296
这种请求最简单,consumer 把请求信息发送给 provider 就行了。只是需要在 consumer 端把请求方式配置成异步请求就好了。如下:
12971297
```
12981298
<dubbo:method name="sayHello" return="false"></dubbo:method>
12991299
```
13001300

1301-
### 2 异步,有返回值
1301+
### 2. 异步,有返回值
13021302

13031303
这种情况下consumer首先把请求信息发送给provider,这个时候在consumer端不仅把请求方式配置成异步,并且需要RpcContext这个ThreadLocal对象获取到Future对象,然后通过Future#get( )阻塞式获取provider的相应,那么这个Future是如何添加到RpcContext中呢?
13041304

@@ -1335,7 +1335,7 @@ hello=temp.get();
13351335

13361336

13371337

1338-
### 3异步,变同步(默认的通信方式)
1338+
### 3. 异步,变同步(默认的通信方式)
13391339

13401340
异步变同步其实原理和异步请求的通过 Future#get 等待 provider 响应返回一样,只不过异步有返回值是显示调用而默认是 dubbo 内部把这步完成了。
13411341

@@ -1492,7 +1492,7 @@ dubbo 使用长度为 16 的 byte 数组作为协议头。1 个 byte 对应 8
14921492
- 96 ~ 127: data length,请求或响应数据体的数据长度也就是消息头+请求数据的长度。用于处理 dubbo 通信的粘包与拆包问题。
14931493

14941494

1495-
### 1consumer请求编码
1495+
### 1. consumer请求编码
14961496
consumer 在请求 provider 的时候需要把 Request 对象转化成 byte 数组,所以它是一个需要编码的过程。
14971497
```
14981498
----------1------consumer请求编码----------------------
@@ -1502,7 +1502,7 @@ consumer 在请求 provider 的时候需要把 Request 对象转化成 byte 数
15021502
-->ExchangeCodec.encodeRequest
15031503
-->DubboCodec.encodeRequestData
15041504
```
1505-
### 2、provider 请求解码
1505+
### 2. provider 请求解码
15061506
provider 在接收 consumer 请求的时候需要把 byte 数组转化成 Request 对象,所以它是一个需要解码的过程。
15071507
```
15081508
----------2------provider 请求解码----------------------
@@ -1512,7 +1512,7 @@ provider 在接收 consumer 请求的时候需要把 byte 数组转化成 Reques
15121512
-->ExchangeCodec.decodeBody
15131513
```
15141514

1515-
### 3provider响应结果编码
1515+
### 3. provider响应结果编码
15161516
provider 在处理完成 consumer 请求需要响应结果的时候需要把 Response 对象转化成 byte 数组,所以它是一个需要编码的过程。
15171517
```
15181518
----------3------provider响应结果编码----------------------
@@ -1523,7 +1523,7 @@ provider 在处理完成 consumer 请求需要响应结果的时候需要把 Res
15231523
-->DubboCodec.encodeResponseData//先写入一个字节 这个字节可能是RESPONSE_NULL_VALUE RESPONSE_VALUE RESPONSE_WITH_EXCEPTION
15241524
```
15251525

1526-
### 4、consumer响应结果解码
1526+
### 4. consumer响应结果解码
15271527
consumer 在接收 provider 响应的时候需要把 byte 数组转化成 Response 对象,所以它是一个需要解码的过程。
15281528
```
15291529
----------4------consumer响应结果解码----------------------

notes/framework/Solr.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
### 索引
1616
Solr/Lucene采用的是一种反向索引(倒排索引),所谓反向索引:就是从关键字到文档的映射过程,保存这种映射这种信息的索引称为反向索引
17+
1718
![](https://github.com/zaiyunduan123/Java-Interview/blob/master/image/solr-1.jpg)
1819
- 左边保存的是字符串序列
1920
- 右边是字符串的文档(Document)编号链表,称为倒排表(Posting List)

0 commit comments

Comments
 (0)