From e2761e098b7f8921afaf314fa84404be84a98afc Mon Sep 17 00:00:00 2001 From: guide Date: Sun, 28 Mar 2021 09:37:53 +0800 Subject: [PATCH 1/3] =?UTF-8?q?[feat]Dubbo=20=E5=B8=B8=E8=A7=81=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...01\347\237\245\350\257\206\347\202\271.md" | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git "a/docs/system-design/distributed-system/rpc/\345\205\263\344\272\216Dubbo\347\232\204\351\207\215\350\246\201\347\237\245\350\257\206\347\202\271.md" "b/docs/system-design/distributed-system/rpc/\345\205\263\344\272\216Dubbo\347\232\204\351\207\215\350\246\201\347\237\245\350\257\206\347\202\271.md" index f75aa536315..27f10f525b0 100644 --- "a/docs/system-design/distributed-system/rpc/\345\205\263\344\272\216Dubbo\347\232\204\351\207\215\350\246\201\347\237\245\350\257\206\347\202\271.md" +++ "b/docs/system-design/distributed-system/rpc/\345\205\263\344\272\216Dubbo\347\232\204\351\207\215\350\246\201\347\237\245\350\257\206\347\202\271.md" @@ -207,6 +207,10 @@ src xxx=com.xxx.XxxLoadBalance ``` +其他还有很多可供扩展的选择,你可以在[官方文档@SPI扩展实现](https://dubbo.apache.org/zh/docs/v2.7/dev/impls/)这里找到。 + +![](https://img-blog.csdnimg.cn/20210328091015555.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MzM3Mjcy,size_16,color_FFFFFF,t_70) + ### Dubbo 的微内核架构了解吗? Dubbo 采用 微内核(Microkernel) + 插件(Plugin) 模式,简单来说就是微内核架构。微内核只负责组装插件。 @@ -464,5 +468,34 @@ public class RpcStatus { Dubbo 中的 `RoundRobinLoadBalance` 的代码实现被修改重建了好几次,Dubbo-2.6.5 版本的 `RoundRobinLoadBalance` 为平滑加权轮询算法。 -## Dubbo 序列化协议(代办) +## Dubbo序列化协议 + +### Dubbo 支持哪些序列化方式呢? + +![](https://img-blog.csdnimg.cn/20210328092219640.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MzM3Mjcy,size_16,color_FFFFFF,t_70) + +Dubbo 支持多种序列化方式:JDK自带的序列化、hessian2、JSON、Kryo、FST、Protostuff,ProtoBuf等等。 + +Dubbo 默认使用的序列化方式是 hession2。 + +### 谈谈你对这些序列化协议了解? + +一般我们不会直接使用 JDK 自带的序列化方式。主要原因有两个: + +1. **不支持跨语言调用** : 如果调用的是其他语言开发的服务的时候就不支持了。 +2. **性能差** :相比于其他序列化框架性能更低,主要原因是序列化之后的字节数组体积较大,导致传输成本加大。 + +JSON 序列化由于性能问题,我们一般也不会考虑使用。 + +像 Protostuff,ProtoBuf、hessian2这些都是跨语言的序列化方式,如果有跨语言需求的话可以考虑使用。 + +Kryo和FST这两种序列化方式是 Dubbo 后来才引入的,性能非常好。不过,这两者都是专门针对 Java 语言的。Dubbo 官网的一篇文章中提到说推荐使用 Kryo 作为生产环境的序列化方式。(文章地址:[https://dubbo.apache.org/zh/docs/v2.7/user/references/protocol/rest/](https://dubbo.apache.org/zh/docs/v2.7/user/references/protocol/rest/)) + +![](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2020-8/569e541a-22b2-4846-aa07-0ad479f07440.png) + +Dubbo 官方文档中还有一个关于这些[序列化协议的性能对比图](https://dubbo.apache.org/zh/docs/v2.7/user/serialization/#m-zhdocsv27userserialization)可供参考。 + +![](https://img-blog.csdnimg.cn/20210328093219609.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MzM3Mjcy,size_16,color_FFFFFF,t_70) + +## From 6c94fb855e02685796270345c2068578880f4c3b Mon Sep 17 00:00:00 2001 From: guide Date: Sun, 28 Mar 2021 10:24:13 +0800 Subject: [PATCH 2/3] =?UTF-8?q?Update=20=E5=85=B3=E4=BA=8EDubbo=E7=9A=84?= =?UTF-8?q?=E9=87=8D=E8=A6=81=E7=9F=A5=E8=AF=86=E7=82=B9.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\207\215\350\246\201\347\237\245\350\257\206\347\202\271.md" | 2 -- 1 file changed, 2 deletions(-) diff --git "a/docs/system-design/distributed-system/rpc/\345\205\263\344\272\216Dubbo\347\232\204\351\207\215\350\246\201\347\237\245\350\257\206\347\202\271.md" "b/docs/system-design/distributed-system/rpc/\345\205\263\344\272\216Dubbo\347\232\204\351\207\215\350\246\201\347\237\245\350\257\206\347\202\271.md" index 27f10f525b0..73a2774f587 100644 --- "a/docs/system-design/distributed-system/rpc/\345\205\263\344\272\216Dubbo\347\232\204\351\207\215\350\246\201\347\237\245\350\257\206\347\202\271.md" +++ "b/docs/system-design/distributed-system/rpc/\345\205\263\344\272\216Dubbo\347\232\204\351\207\215\350\246\201\347\237\245\350\257\206\347\202\271.md" @@ -497,5 +497,3 @@ Dubbo 官方文档中还有一个关于这些[序列化协议的性能对比图] ![](https://img-blog.csdnimg.cn/20210328093219609.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MzM3Mjcy,size_16,color_FFFFFF,t_70) -## - From 8a4ca0e5f3437a0604a98e1e81f116f95b1a7a2b Mon Sep 17 00:00:00 2001 From: guide Date: Sun, 28 Mar 2021 10:24:36 +0800 Subject: [PATCH 3/3] =?UTF-8?q?[refractor]=E7=A7=BB=E9=99=A4=E4=BA=86?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=EF=BC=8C=E5=9B=A0=E4=B8=BAREADME=E5=B7=B2?= =?UTF-8?q?=E7=BB=8F=E8=87=AA=E5=B8=A6=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 57 +------------------------------------------------------ 1 file changed, 1 insertion(+), 56 deletions(-) diff --git a/README.md b/README.md index 1d5bb0b6971..94f89a2ead0 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ > 1. **介绍**:关于 JavaGuide 的相关介绍请看:[关于 JavaGuide 的一些说明](https://www.yuque.com/snailclimb/dr6cvl/mr44yt) 。 > 2. **PDF版本** : [《JavaGuide 面试突击版》PDF 版本](#公众号) 。[图解计算机基础 PDF 版](#优质原创PDF资源)。 > 3. **知识星球** : 简历指导/Java学习/面试指导/面试小册。欢迎加入[我的知识星球](https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=100015911&idx=1&sn=2e8a0f5acb749ecbcbb417aa8a4e18cc&chksm=4ea1b0ec79d639fae37df1b86f196e8ce397accfd1dd2004bcadb66b4df5f582d90ae0d62448#rd) 。星球内部更新的[《Java面试进阶指北 打造个人的技术竞争力》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7)这个小册的质量很高,专为面试打造。 -> 4. **面试专版** :准备面试的小伙伴可以考虑面试专版:[《Java 面试进阶指南》](https://xiaozhuanlan.com/javainterview?rel=javaguide) , +> 4. **面试专版** :准备面试的小伙伴可以考虑面试专版:[《Java 面试进阶指南》](https://xiaozhuanlan.com/javainterview?rel=javaguide) > 6. **转载须知** :以下所有文章如非文首说明皆为我(Guide哥)的原创,转载在文首注明出处,如发现恶意抄袭/搬运,会动用法律武器维护自己的权益。让我们一起维护一个良好的技术创作环境!⛽️

@@ -36,61 +36,6 @@ -- [Java](#java) - - [基础 (必看 :+1:)](#基础) - - [容器](#容器) - - [并发](#并发) - - [JVM (必看 :+1:)](#jvm-必看-1) - - [新特性](#新特性) -- [网络](#网络) -- [操作系统](#操作系统) -- [数据结构与算法](#数据结构与算法) - - [数据结构](#数据结构) - - [算法](#算法) -- [数据库](#数据库) - - [MySQL](#mysql) - - [Redis](#redis) -- [系统设计](#系统设计) - - [编码之道(必看 :+1:)](#编码之道必看-1) - - [常用框架](#常用框架) - - [Spring/SpringBoot](#springspringboot) - - [MyBatis](#mybatis) - - [Netty (必看 :+1:)](#netty-必看-1) - - [ZooKeeper](#zookeeper) - - [认证授权](#认证授权) - - [JWT](#jwt) - - [SSO(单点登录)](#sso单点登录) - - [分布式](#分布式) - - [CAP 理论](#cap-理论) - - [BASE 理论](#base-理论) - - [Paxos 算法和 Raft 算法](#paxos-算法和-raft-算法) - - [搜索引擎](#搜索引擎) - - [RPC](#rpc) - - [API 网关](#api-网关) - - [分布式 id](#分布式-id) - - [微服务](#微服务) - - [高并发](#高并发) - - [消息队列](#消息队列) - - [读写分离](#读写分离) - - [分库分表](#分库分表) - - [负载均衡](#负载均衡) - - [高可用](#高可用) - - [限流](#限流) - - [降级](#降级) - - [熔断](#熔断) - - [排队](#排队) - - [大型网站架构](#大型网站架构) -- [工具](#工具) -- [Java 学习常见问题汇总](#java-学习常见问题汇总) -- [书单](#书单) -- [其他](#其他) - - [待办](#待办) - - [联系我](#联系我) - - [捐赠支持](#捐赠支持) - - [Contributor](#贡献者) - - [公众号](#公众号) - - ## Java ### 基础