From 5709f0f469bae5f8911d9d8787d0a6c2df153622 Mon Sep 17 00:00:00 2001 From: yanglbme Date: Mon, 24 Dec 2018 16:55:21 +0800 Subject: [PATCH] docs: update dubbo-serialization, fix #3 - Update dubbo-serialization-protocol.md - Fix #3 --- README.md | 6 +- .../dubbo-serialization-protocol.md | 57 +++++++++++++++--- .../img/dubbo-keep-connection.png | Bin 0 -> 16738 bytes .../img/dubbo-not-keep-connection.png | Bin 0 -> 11183 bytes .../img/serialize-deserialize.png | Bin 0 -> 10502 bytes img/dubbo-keep-connection.png | Bin 0 -> 16738 bytes img/dubbo-not-keep-connection.png | Bin 0 -> 11183 bytes img/serialize-deserialize.png | Bin 0 -> 10502 bytes 8 files changed, 52 insertions(+), 11 deletions(-) create mode 100644 docs/distributed-system/img/dubbo-keep-connection.png create mode 100644 docs/distributed-system/img/dubbo-not-keep-connection.png create mode 100644 docs/distributed-system/img/serialize-deserialize.png create mode 100644 img/dubbo-keep-connection.png create mode 100644 img/dubbo-not-keep-connection.png create mode 100644 img/serialize-deserialize.png diff --git a/README.md b/README.md index aa5240f..275bbba 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,14 @@ # 互联网 Java 工程师进阶知识完全扫盲 [![license](https://img.shields.io/badge/license-Attribution--NonCommercial%204.0%20-brightgreen.svg)](https://github.com/doocs/advanced-java/blob/master/LICENSE) -[![original](https://img.shields.io/badge/original-%E4%B8%AD%E5%8D%8E%E7%9F%B3%E6%9D%89-blue.svg)](https://github.com/doocs/advanced-java) +[![original](https://img.shields.io/badge/original-%E4%B8%AD%E5%8D%8E%E7%9F%B3%E6%9D%89-orange.svg)](https://github.com/doocs/advanced-java) +[![stars](https://img.shields.io/github/stars/doocs/advanced-java.svg)](https://github.com/doocs/advanced-java/stargazers) +[![forks](https://img.shields.io/github/forks/doocs/advanced-java.svg)](https://github.com/doocs/advanced-java/network/members) [![PRs Welcome](https://img.shields.io/badge/PRs-Welcome-brightgreen.svg)](http://makeapullrequest.com) 本系列知识出自中华石杉,我对这部分知识做了一个系统的整理,方便学习查阅。By the way,微信公众号**石杉的架构笔记**(id:shishan100)有其它很多架构知识,墙裂推荐~ -一点小建议:学习本系列知识之前,如果你完全没接触过 `MQ`、`ES`、`Redis`、`Dubbo`、`Hystrix` 等,那么我建议你可以先在网上搜一下每一块知识的快速入门,玩一下入门 Demo,然后再开始每一块知识的学习。这样效果更好噢~ +一点小建议:学习本系列知识之前,如果你完全没接触过 `MQ`、`ES`、`Redis`、`Dubbo`、`Hystrix` 等,那么我建议你可以先在网上搜一下每一块知识的快速入门,跟着入门 Demo 玩一下,然后再开始每一块知识的学习,这样效果更好噢~ ## 高并发架构 diff --git a/docs/distributed-system/dubbo-serialization-protocol.md b/docs/distributed-system/dubbo-serialization-protocol.md index 4afca21..879d1a6 100644 --- a/docs/distributed-system/dubbo-serialization-protocol.md +++ b/docs/distributed-system/dubbo-serialization-protocol.md @@ -1,34 +1,73 @@ ## 面试题 -dubbo 支持哪些通信协议?支持哪些序列化协议? +dubbo 支持哪些通信协议?支持哪些序列化协议?说一下 Hessian 的数据结构?PB 知道吗?为什么 PB 的效率是最高的? ## 面试官心理分析 -上一个问题,说说 dubbo 的基本工作原理,那是你必须知道的,至少知道 dubbo 分成哪些层,然后平时怎么发起 rpc 请求的,注册、发现、调用,这些是基本的。 +上一个问题,说说 dubbo 的基本工作原理,那是你必须知道的,至少要知道 dubbo 分成哪些层,然后平时怎么发起 rpc 请求的,注册、发现、调用,这些是基本的。 -接着就可以针对底层进行深入的问问了,比如第一步就可以先问问序列化协议这块,就是平时rpc的时候怎么走的? +接着就可以针对底层进行深入的问问了,比如第一步就可以先问问序列化协议这块,就是平时 RPC 的时候怎么走的? ## 面试题剖析 +**序列化**,就是把数据结构或者是一些对象,转换为二进制串的过程,而**反序列化**是将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程。 + +![serialize-deserialize](/img/serialize-deserialize.png) + ### dubbo 支持不同的通信协议 - dubbo 协议 -**默认**就是走 dubbo 协议,单一长连接,NIO 异步通信,基于 hessian 作为序列化协议。使用的场景是:传输数据量小(每次请求在 100kb 以内),但是并发量很高。 +**默认**就是走 dubbo 协议,单一长连接,进行的是 NIO 异步通信,基于 hessian 作为序列化协议。使用的场景是:传输数据量小(每次请求在 100kb 以内),但是并发量很高。 为了要支持高并发场景,一般是服务提供者就几台机器,但是服务消费者有上百台,可能每天调用量达到上亿次!此时用长连接是最合适的,就是跟每个服务消费者维持一个长连接就可以,可能总共就 100 个连接。然后后面直接基于长连接 NIO 异步通信,可以支撑高并发请求。 +长连接,通俗点说,就是建立连接过后可以持续发送请求,无须再建立连接。 + +![dubbo-keep-connection](/img/dubbo-keep-connection.png) + +而短连接,每次要发送请求之前,需要先重新建立一次连接。 + +![dubbo-not-keep-connection](/img/dubbo-not-keep-connection.png) + - rmi 协议 -走 Java 二进制序列化,多个短连接,适合消费者和提供者数量差不多,适用于文件的传输,一般较少用。 +走 Java 二进制序列化,多个短连接,适合消费者和提供者数量差不多的情况,适用于文件的传输,一般较少用。 - hessian 协议 -走 hessian 序列化协议,多个短连接,适用于提供者数量比消费者数量还多,适用于文件的传输,一般较少用。 +走 hessian 序列化协议,多个短连接,适用于提供者数量比消费者数量还多的情况,适用于文件的传输,一般较少用。 - http 协议 -走 json 序列化 +走 json 序列化。 - webservice -走 SOAP 文本序列化 +走 SOAP 文本序列化。 ### dubbo 支持的序列化协议 -dubbo 支持 hession、Java 二进制序列化、json、SOAP 文本序列化多种序列化协议。但是 hessian 是其默认的序列化协议。 \ No newline at end of file +dubbo 支持 hession、Java 二进制序列化、json、SOAP 文本序列化多种序列化协议。但是 hessian 是其默认的序列化协议。 + +### 说一下 Hessian 的数据结构 +Hessian 的对象序列化机制有 8 种原始类型: + +- 原始二进制数据 +- boolean +- 64-bit date(64 位毫秒值的日期) +- 64-bit double +- 32-bit int +- 64-bit long +- null +- UTF-8 编码的 string + +另外还包括 3 种递归类型: + +- list for lists and arrays +- map for maps and dictionaries +- object for objects + +还有一种特殊的类型: + +- ref:用来表示对共享对象的引用。 + +### 为什么 PB 的效率是最高的? +可能有一些同学比较习惯于 `JSON` or `XML` 数据存储格式,对于 `Protocal Buffer` 还比较陌生。`Protocal Buffer` 其实是 Google 出品的一种轻量并且高效的结构化数据存储格式,性能比 `JSON`、`XML` 要高很多。 + +其实 PB 之所以性能如此好,主要得益于两个:**第一**,它使用 proto 编译器,自动进行序列化和反序列化,速度非常快,应该比 `XML` 和 `JSON` 快上了 `20~100` 倍;**第二**,它的数据压缩效果好,就是说它序列化后的数据量体积小。因为体积小,传输起来带宽和速度上会有优化。 \ No newline at end of file diff --git a/docs/distributed-system/img/dubbo-keep-connection.png b/docs/distributed-system/img/dubbo-keep-connection.png new file mode 100644 index 0000000000000000000000000000000000000000..737f377bc38d7c1b1ba97fd8f62a3f9feedf4e27 GIT binary patch literal 16738 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 GXa5cDjU<); literal 0 HcmV?d00001 diff --git a/docs/distributed-system/img/dubbo-not-keep-connection.png b/docs/distributed-system/img/dubbo-not-keep-connection.png new file mode 100644 index 0000000000000000000000000000000000000000..9325766cc713f3f62c18f11ebb2223201fa41e8b GIT binary patch literal 11183 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 literal 0 HcmV?d00001 diff --git a/docs/distributed-system/img/serialize-deserialize.png b/docs/distributed-system/img/serialize-deserialize.png new file mode 100644 index 0000000000000000000000000000000000000000..3b5f020288bdb56d6d9070dea8eb3bb177932f99 GIT binary patch literal 10502 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 B3_Jh; literal 0 HcmV?d00001 diff --git a/img/dubbo-keep-connection.png b/img/dubbo-keep-connection.png new file mode 100644 index 0000000000000000000000000000000000000000..737f377bc38d7c1b1ba97fd8f62a3f9feedf4e27 GIT binary patch literal 16738 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 GXa5cDjU<); literal 0 HcmV?d00001 diff --git a/img/dubbo-not-keep-connection.png b/img/dubbo-not-keep-connection.png new file mode 100644 index 0000000000000000000000000000000000000000..9325766cc713f3f62c18f11ebb2223201fa41e8b GIT binary patch literal 11183 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 literal 0 HcmV?d00001 diff --git a/img/serialize-deserialize.png b/img/serialize-deserialize.png new file mode 100644 index 0000000000000000000000000000000000000000..3b5f020288bdb56d6d9070dea8eb3bb177932f99 GIT binary patch literal 10502 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 B3_Jh; literal 0 HcmV?d00001