learn.lianglianglee.com/专栏/Dubbo源码解读与实战-完/index.html
2022-08-14 03:40:33 +08:00

219 lines
17 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<!-- saved from url=(0046)https://kaiiiz.github.io/hexo-theme-book-demo/ -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
<link rel="icon" href="/static/favicon.png">
<title>note-submit</title>
<!-- Spectre.css framework -->
<link rel="stylesheet" href="/static/index.css">
<!-- theme css & js -->
<meta name="generator" content="Hexo 4.2.0">
</head>
<body>
<div class="book-container">
<div class="book-sidebar">
<div class="book-brand">
<a href="/">
<img src="/static/favicon.png">
<span>技术文章摘抄</span>
</a>
</div>
<div class="book-menu uncollapsible">
<ul class="uncollapsible">
<li><a href="/" class="current-tab">首页</a></li>
</ul>
<ul class="uncollapsible">
<li><a href="../">上一级</a></li>
</ul>
<ul class="uncollapsible">
<li>
<a href="/PDF">PDF</a>
</li>
<li>
<a href="/专栏">专栏</a>
</li>
<li>
<a href="/恋爱必修课">恋爱必修课</a>
</li>
<li>
<a href="/文章">文章</a>
</li>
<li>
<a href="/极客时间">极客时间</a>
</li>
</ul>
</div>
</div>
<div class="sidebar-toggle" onclick="sidebar_toggle()" onmouseover="add_inner()" onmouseleave="remove_inner()">
<div class="sidebar-toggle-inner"></div>
</div>
<script>
function add_inner() {
let inner = document.querySelector('.sidebar-toggle-inner')
inner.classList.add('show')
}
function remove_inner() {
let inner = document.querySelector('.sidebar-toggle-inner')
inner.classList.remove('show')
}
function sidebar_toggle() {
let sidebar_toggle = document.querySelector('.sidebar-toggle')
let sidebar = document.querySelector('.book-sidebar')
let content = document.querySelector('.off-canvas-content')
if (sidebar_toggle.classList.contains('extend')) { // show
sidebar_toggle.classList.remove('extend')
sidebar.classList.remove('hide')
content.classList.remove('extend')
} else { // hide
sidebar_toggle.classList.add('extend')
sidebar.classList.add('hide')
content.classList.add('extend')
}
}
function open_sidebar() {
let sidebar = document.querySelector('.book-sidebar')
let overlay = document.querySelector('.off-canvas-overlay')
sidebar.classList.add('show')
overlay.classList.add('show')
}
function hide_canvas() {
let sidebar = document.querySelector('.book-sidebar')
let overlay = document.querySelector('.off-canvas-overlay')
sidebar.classList.remove('show')
overlay.classList.remove('show')
}
</script>
<div class="off-canvas-content">
<div class="columns">
<div class="column col-12 col-lg-12">
<div class="book-navbar">
<!-- For Responsive Layout -->
<header class="navbar">
<section class="navbar-section">
<a onclick="open_sidebar()">
<i class="icon icon-menu"></i>
</a>
</section>
</header>
</div>
<div class="book-content"
style="max-width: 960px; margin: 0 auto; overflow-x: auto; overflow-y: hidden;">
<div class="book-post">
<p id="tip" align="center"></p>
<div><!--add content-->
<h1>Dubbo源码解读与实战-完</h1>
<ul>
<li><a href = '\专栏\Dubbo源码解读与实战-完\00 开篇词 深入掌握 Dubbo 原理与实现,提升你的职场竞争力.md.html'>00 开篇词 深入掌握 Dubbo 原理与实现,提升你的职场竞争力</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\01 Dubbo 源码环境搭建:千里之行,始于足下.md.html'>01 Dubbo 源码环境搭建:千里之行,始于足下</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\02 Dubbo 的配置总线:抓住 URL就理解了半个 Dubbo.md.html'>02 Dubbo 的配置总线:抓住 URL就理解了半个 Dubbo</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\03 Dubbo SPI 精析,接口实现两极反转(上).md.html'>03 Dubbo SPI 精析,接口实现两极反转(上)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\04 Dubbo SPI 精析,接口实现两极反转(下).md.html'>04 Dubbo SPI 精析,接口实现两极反转(下)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\05 海量定时任务,一个时间轮搞定.md.html'>05 海量定时任务,一个时间轮搞定</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\06 ZooKeeper 与 Curator求你别用 ZkClient 了(上).md.html'>06 ZooKeeper 与 Curator求你别用 ZkClient 了(上)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\07 ZooKeeper 与 Curator求你别用 ZkClient 了(下).md.html'>07 ZooKeeper 与 Curator求你别用 ZkClient 了(下)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\08 代理模式与常见实现.md.html'>08 代理模式与常见实现</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\09 Netty 入门,用它做网络编程都说好(上).md.html'>09 Netty 入门,用它做网络编程都说好(上)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\10 Netty 入门,用它做网络编程都说好(下).md.html'>10 Netty 入门,用它做网络编程都说好(下)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\11 简易版 RPC 框架实现(上).md.html'>11 简易版 RPC 框架实现(上)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\12 简易版 RPC 框架实现(下).md.html'>12 简易版 RPC 框架实现(下)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\13 本地缓存:降低 ZooKeeper 压力的一个常用手段.md.html'>13 本地缓存:降低 ZooKeeper 压力的一个常用手段</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\14 重试机制是网络操作的基本保证.md.html'>14 重试机制是网络操作的基本保证</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\15 ZooKeeper 注册中心实现,官方推荐注册中心实践.md.html'>15 ZooKeeper 注册中心实现,官方推荐注册中心实践</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\16 Dubbo Serialize 层:多种序列化算法,总有一款适合你.md.html'>16 Dubbo Serialize 层:多种序列化算法,总有一款适合你</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\17 Dubbo Remoting 层核心接口分析:这居然是一套兼容所有 NIO 框架的设计?.md.html'>17 Dubbo Remoting 层核心接口分析:这居然是一套兼容所有 NIO 框架的设计?</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\18 Buffer 缓冲区:我们不生产数据,我们只是数据的搬运工.md.html'>18 Buffer 缓冲区:我们不生产数据,我们只是数据的搬运工</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\19 Transporter 层核心实现:编解码与线程模型一文打尽(上).md.html'>19 Transporter 层核心实现:编解码与线程模型一文打尽(上)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\20 Transporter 层核心实现:编解码与线程模型一文打尽(下).md.html'>20 Transporter 层核心实现:编解码与线程模型一文打尽(下)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\21 Exchange 层剖析:彻底搞懂 Request-Response 模型(上).md.html'>21 Exchange 层剖析:彻底搞懂 Request-Response 模型(上)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\22 Exchange 层剖析:彻底搞懂 Request-Response 模型(下).md.html'>22 Exchange 层剖析:彻底搞懂 Request-Response 模型(下)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\23 核心接口介绍RPC 层骨架梳理.md.html'>23 核心接口介绍RPC 层骨架梳理</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\24 从 Protocol 起手,看服务暴露和服务引用的全流程(上).md.html'>24 从 Protocol 起手,看服务暴露和服务引用的全流程(上)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\25 从 Protocol 起手,看服务暴露和服务引用的全流程(下).md.html'>25 从 Protocol 起手,看服务暴露和服务引用的全流程(下)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\26 加餐:直击 Dubbo “心脏”,带你一起探秘 Invoker.md.html'>26 加餐:直击 Dubbo “心脏”,带你一起探秘 Invoker</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\27 加餐:直击 Dubbo “心脏”,带你一起探秘 Invoker.md.html'>27 加餐:直击 Dubbo “心脏”,带你一起探秘 Invoker</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\28 复杂问题简单化,代理帮你隐藏了多少底层细节?.md.html'>28 复杂问题简单化,代理帮你隐藏了多少底层细节?</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\30 Filter 接口,扩展 Dubbo 框架的常用手段指北.md.html'>30 Filter 接口,扩展 Dubbo 框架的常用手段指北</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\31 加餐:深潜 Directory 实现,探秘服务目录玄机.md.html'>31 加餐:深潜 Directory 实现,探秘服务目录玄机</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\32 路由机制:请求到底怎么走,它说了算(上).md.html'>32 路由机制:请求到底怎么走,它说了算(上)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\33 路由机制:请求到底怎么走,它说了算(下).md.html'>33 路由机制:请求到底怎么走,它说了算(下)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\34 加餐:初探 Dubbo 动态配置的那些事儿.md.html'>34 加餐:初探 Dubbo 动态配置的那些事儿</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\35 负载均衡:公平公正物尽其用的负载均衡策略,这里都有(上).md.html'>35 负载均衡:公平公正物尽其用的负载均衡策略,这里都有(上)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\36 负载均衡:公平公正物尽其用的负载均衡策略,这里都有(下).md.html'>36 负载均衡:公平公正物尽其用的负载均衡策略,这里都有(下)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\37 集群容错:一个好汉三个帮(上).md.html'>37 集群容错:一个好汉三个帮(上)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\38 集群容错:一个好汉三个帮(下).md.html'>38 集群容错:一个好汉三个帮(下)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\39 加餐多个返回值不用怕Merger 合并器来帮忙.md.html'>39 加餐多个返回值不用怕Merger 合并器来帮忙</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\40 加餐模拟远程调用Mock 机制帮你搞定.md.html'>40 加餐模拟远程调用Mock 机制帮你搞定</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\41 加餐:一键通关服务发布全流程.md.html'>41 加餐:一键通关服务发布全流程</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\42 加餐:服务引用流程全解析.md.html'>42 加餐:服务引用流程全解析</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\43 服务自省设计方案:新版本新方案.md.html'>43 服务自省设计方案:新版本新方案</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\44 元数据方案深度剖析,如何避免注册中心数据量膨胀?.md.html'>44 元数据方案深度剖析,如何避免注册中心数据量膨胀?</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\45 加餐:深入服务自省方案中的服务发布订阅(上).md.html'>45 加餐:深入服务自省方案中的服务发布订阅(上)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\46 加餐:深入服务自省方案中的服务发布订阅(下).md.html'>46 加餐:深入服务自省方案中的服务发布订阅(下)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\47 配置中心设计与实现:集中化配置 and 本地化配置,我都要(上).md.html'>47 配置中心设计与实现:集中化配置 and 本地化配置,我都要(上)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\48 配置中心设计与实现:集中化配置 and 本地化配置,我都要(下).md.html'>48 配置中心设计与实现:集中化配置 and 本地化配置,我都要(下)</a></li>
<li><a href = '\专栏\Dubbo源码解读与实战-完\49 结束语 认真学习,缩小差距.md.html'>49 结束语 认真学习,缩小差距</a></li>
</ul>
</div>
</div>
<div>
</div>
</div>
</div>
</div>
</div>
<a class="off-canvas-overlay" onclick="hide_canvas()"></a>
</div>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v652eace1692a40cfa3763df669d7439c1639079717194"
integrity="sha512-Gi7xpJR8tSkrpF7aordPZQlW2DLtzUlZcumS8dMQjwDHEnw9I7ZLyiOj/6tZStRBGtGgN6ceN6cMH8z7etPGlw=="
data-cf-beacon='{"rayId":"70996b2f083d3d60","version":"2021.12.0","r":1,"token":"1f5d475227ce4f0089a7cff1ab17c0f5","si":100}'
crossorigin="anonymous"></script>
</body>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-NPSEEVD756"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-NPSEEVD756');
var path = window.location.pathname
var cookie = getCookie("lastPath");
console.log(path)
if (path.replace("/", "") === "") {
if (cookie.replace("/", "") !== "") {
console.log(cookie)
document.getElementById("tip").innerHTML = "<a href='" + cookie + "'>跳转到上次进度</a>"
}
} else {
setCookie("lastPath", path)
}
function setCookie(cname, cvalue) {
var d = new Date();
d.setTime(d.getTime() + (180 * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toGMTString();
document.cookie = cname + "=" + cvalue + "; " + expires + ";path = /";
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i].trim();
if (c.indexOf(name) === 0) return c.substring(name.length, c.length);
}
return "";
}
</script>
</html>