learn.lianglianglee.com/专栏/分布式技术原理与实战45讲-完/index.html
2022-08-14 03:40:33 +08:00

218 lines
16 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>分布式技术原理与实战45讲-完</h1>
<ul>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\00 开篇词:搭建分布式知识体系,挑战高薪 Offer.md.html'>00 开篇词:搭建分布式知识体系,挑战高薪 Offer</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\01 如何证明分布式系统的 CAP 理论?.md.html'>01 如何证明分布式系统的 CAP 理论?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\02 不同数据一致性模型有哪些应用?.md.html'>02 不同数据一致性模型有哪些应用?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\03 如何透彻理解 Paxos 算法?.md.html'>03 如何透彻理解 Paxos 算法?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\04 ZooKeeper 如何保证数据一致性?.md.html'>04 ZooKeeper 如何保证数据一致性?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\05 共识问题:区块链如何确认记账权?.md.html'>05 共识问题:区块链如何确认记账权?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\06 如何准备一线互联网公司面试?.md.html'>06 如何准备一线互联网公司面试?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\07 分布式事务有哪些解决方案?.md.html'>07 分布式事务有哪些解决方案?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\08 对比两阶段提交,三阶段协议有哪些改进?.md.html'>08 对比两阶段提交,三阶段协议有哪些改进?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\09 MySQL 数据库如何实现 XA 规范?.md.html'>09 MySQL 数据库如何实现 XA 规范?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\10 如何在业务中体现 TCC 事务模型?.md.html'>10 如何在业务中体现 TCC 事务模型?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\11 分布式锁有哪些应用场景和实现?.md.html'>11 分布式锁有哪些应用场景和实现?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\12 如何使用 Redis 快速实现分布式锁?.md.html'>12 如何使用 Redis 快速实现分布式锁?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\14 如何理解 RPC 远程服务调用?.md.html'>14 如何理解 RPC 远程服务调用?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\15 为什么微服务需要 API 网关?.md.html'>15 为什么微服务需要 API 网关?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\16 如何实现服务注册与发现?.md.html'>16 如何实现服务注册与发现?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\17 如何实现分布式调用跟踪?.md.html'>17 如何实现分布式调用跟踪?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\18 分布式下如何实现配置管理?.md.html'>18 分布式下如何实现配置管理?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\19 容器化升级对服务有哪些影响?.md.html'>19 容器化升级对服务有哪些影响?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\20 ServiceMesh服务网格有哪些应用.md.html'>20 ServiceMesh服务网格有哪些应用</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\21 Dubbo vs Spring Cloud两大技术栈如何选型.md.html'>21 Dubbo vs Spring Cloud两大技术栈如何选型</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\23 读写分离如何在业务中落地?.md.html'>23 读写分离如何在业务中落地?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\24 为什么需要分库分表,如何实现?.md.html'>24 为什么需要分库分表,如何实现?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\25 存储拆分后,如何解决唯一主键问题?.md.html'>25 存储拆分后,如何解决唯一主键问题?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\26 分库分表以后,如何实现扩容?.md.html'>26 分库分表以后,如何实现扩容?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\27 NoSQL 数据库有哪些典型应用?.md.html'>27 NoSQL 数据库有哪些典型应用?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\28 ElasticSearch 是如何建立索引的?.md.html'>28 ElasticSearch 是如何建立索引的?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\30 消息队列有哪些应用场景?.md.html'>30 消息队列有哪些应用场景?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\31 集群消费和广播消费有什么区别?.md.html'>31 集群消费和广播消费有什么区别?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\32 业务上需要顺序消费,怎么保证时序性?.md.html'>32 业务上需要顺序消费,怎么保证时序性?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\33 消息幂等:如何保证消息不被重复消费?.md.html'>33 消息幂等:如何保证消息不被重复消费?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\34 高可用:如何实现消息队列的 HA.md.html'>34 高可用:如何实现消息队列的 HA</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\35 消息队列选型Kafka 如何实现高性能?.md.html'>35 消息队列选型Kafka 如何实现高性能?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\36 消息队列选型RocketMQ 适用哪些场景?.md.html'>36 消息队列选型RocketMQ 适用哪些场景?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\38 不止业务缓存,分布式系统中还有哪些缓存?.md.html'>38 不止业务缓存,分布式系统中还有哪些缓存?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\39 如何避免缓存穿透、缓存击穿、缓存雪崩?.md.html'>39 如何避免缓存穿透、缓存击穿、缓存雪崩?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\40 经典问题:先更新数据库,还是先更新缓存?.md.html'>40 经典问题:先更新数据库,还是先更新缓存?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\41 失效策略:缓存过期都有哪些策略?.md.html'>41 失效策略:缓存过期都有哪些策略?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\42 负载均衡:一致性哈希解决了哪些问题?.md.html'>42 负载均衡:一致性哈希解决了哪些问题?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\43 缓存高可用:缓存如何保证高可用?.md.html'>43 缓存高可用:缓存如何保证高可用?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\45 从双十一看高可用的保障方式.md.html'>45 从双十一看高可用的保障方式</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\46 高并发场景下如何实现系统限流?.md.html'>46 高并发场景下如何实现系统限流?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\47 降级和熔断:如何增强服务稳定性?.md.html'>47 降级和熔断:如何增强服务稳定性?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\48 如何选择适合业务的负载均衡策略?.md.html'>48 如何选择适合业务的负载均衡策略?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\49 线上服务有哪些稳定性指标?.md.html'>49 线上服务有哪些稳定性指标?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\50 分布式下有哪些好用的监控组件?.md.html'>50 分布式下有哪些好用的监控组件?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\51 分布式下如何实现统一日志系统?.md.html'>51 分布式下如何实现统一日志系统?</a></li>
<li><a href = '\专栏\分布式技术原理与实战45讲-完\52 分布式路漫漫,厚积薄发才是王道.md.html'>52 分布式路漫漫,厚积薄发才是王道</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>