mirror of
https://github.com/linkedin/school-of-sre
synced 2026-01-17 14:08:02 +00:00
6262 lines
118 KiB
HTML
6262 lines
118 KiB
HTML
|
|
<!doctype html>
|
|
<html lang="en" class="no-js">
|
|
<head>
|
|
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
|
|
|
|
|
|
<link rel="canonical" href="https://linkedin.github.io/school-of-sre/level101/messagequeue/key_concepts/">
|
|
|
|
|
|
<link rel="prev" href="../intro/">
|
|
|
|
|
|
<link rel="next" href="../further_reading/">
|
|
|
|
|
|
<link rel="icon" href="../../../img/favicon.ico">
|
|
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.12">
|
|
|
|
|
|
|
|
<title>Key Concepts - School Of SRE</title>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../../../assets/stylesheets/main.7e359304.min.css">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
|
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../../../stylesheets/custom.css">
|
|
|
|
<script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
|
|
<body dir="ltr">
|
|
|
|
|
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
|
<label class="md-overlay" for="__drawer"></label>
|
|
<div data-md-component="skip">
|
|
|
|
|
|
<a href="#key-concepts" class="md-skip">
|
|
Skip to content
|
|
</a>
|
|
|
|
</div>
|
|
<div data-md-component="announce">
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<script async defer data-domain="linkedin.github.io" src="https://tracking.eskratch.com/js/plausible.js"></script>
|
|
<script>document.addEventListener("DOMContentLoaded", function() {
|
|
if (document.getElementById("nav-2").checked!=true && document.getElementById("nav-3").checked!=true && window.innerWidth>1220){
|
|
document.getElementById("nav-2").checked=true;
|
|
document.getElementById("nav-3").checked=true;
|
|
|
|
}
|
|
});</script>
|
|
|
|
|
|
|
|
<header class="md-header" data-md-component="header">
|
|
<nav class="md-header__inner md-grid" aria-label="header.title">
|
|
<a href="https://linkedin.github.io/school-of-sre/" title="School Of SRE" class="md-header__button md-logo" aria-label="School Of SRE">
|
|
|
|
<img src="../../../img/sos.png" alt="logo">
|
|
|
|
</a>
|
|
<!-- Button to open drawer -->
|
|
<label class="md-header__button md-icon" for="__drawer">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
|
|
</label>
|
|
<div class="md-header__title" data-md-component="header-title">
|
|
|
|
<div class="md-header__ellipsis">
|
|
<span class="md-header__topic md-ellipsis">
|
|
<a href="https://linkedin.github.io/school-of-sre/" title="School Of SRE" >
|
|
School Of SRE
|
|
</a>
|
|
</span>
|
|
<span class="md-header__topic md-ellipsis">
|
|
|
|
Key Concepts
|
|
|
|
</span>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<label class="md-header__button md-icon" for="__search">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
|
</label>
|
|
<div class="md-search" data-md-component="search" role="dialog">
|
|
<label class="md-search__overlay" for="__search"></label>
|
|
<div class="md-search__inner" role="search">
|
|
<form class="md-search__form" name="search">
|
|
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
|
<label class="md-search__icon md-icon" for="__search">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
|
</label>
|
|
<nav class="md-search__options" aria-label="Search">
|
|
|
|
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
|
|
</button>
|
|
</nav>
|
|
|
|
</form>
|
|
<div class="md-search__output">
|
|
<div class="md-search__scrollwrap" data-md-scrollfix>
|
|
<div class="md-search-result" data-md-component="search-result">
|
|
<div class="md-search-result__meta">
|
|
Initializing search
|
|
</div>
|
|
<ol class="md-search-result__list" role="presentation"></ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</nav>
|
|
</header>
|
|
|
|
<div class="md-container" data-md-component="container">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<main class="md-main" data-md-component="main">
|
|
<div class="md-main__inner md-grid">
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
|
|
<!-- Navigation -->
|
|
<nav
|
|
class="md-nav md-nav--primary"
|
|
aria-label="Navigation"
|
|
data-md-level="0"
|
|
>
|
|
|
|
<!-- Repository information -->
|
|
|
|
|
|
<!-- Navigation list -->
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../.." class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Home
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2"
|
|
checked
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2"
|
|
id="__nav_2_label"
|
|
tabindex=""
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Level 101
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="1"
|
|
aria-labelledby="__nav_2_label"
|
|
aria-expanded="true"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Level 101
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_1"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_1"
|
|
id="__nav_2_1_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Fundamentals Series
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_2_1_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_1">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Fundamentals Series
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_1_1"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_1_1"
|
|
id="__nav_2_1_1_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Linux Basics
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_2_1_1_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_1_1">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Linux Basics
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_basics/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_basics/command_line_basics/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Command Line Basics
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_basics/linux_server_administration/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Server Administration
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_basics/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_1_2"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_1_2"
|
|
id="__nav_2_1_2_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Git
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_2_1_2_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_1_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Git
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../git/git-basics/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Git Basics
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../git/branches/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Working With Branches
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../git/github-hooks/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Github and Hooks
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../git/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_1_3"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_1_3"
|
|
id="__nav_2_1_3_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Linux Networking
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_2_1_3_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_1_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Linux Networking
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_networking/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_networking/dns/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
DNS
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_networking/udp/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
UDP
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_networking/http/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
HTTP
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_networking/tcp/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
TCP
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_networking/ipr/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Routing
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../linux_networking/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_2"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_2"
|
|
id="__nav_2_2_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Python and Web
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_2_2_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Python and Web
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../python_web/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../python_web/python-concepts/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Some Python Concepts
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../python_web/python-web-flask/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Python, Web and Flask
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../python_web/url-shorten-app/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
The URL Shortening App
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../python_web/sre-conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_3"
|
|
checked
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_3"
|
|
id="__nav_2_3_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Data
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_2_3_label"
|
|
aria-expanded="true"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Data
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_3_1"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_3_1"
|
|
id="__nav_2_3_1_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Relational Databases
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_2_3_1_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_3_1">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Relational Databases
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/concepts/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Key Concepts
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/mysql/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
MySQL
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/innodb/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
InnoDB
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/backup_recovery/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Backup and Recovery
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/replication/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
MySQL Replication
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/operations/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Operational Concepts
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/select_query/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Select Query
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/query_performance/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Query Performance
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/lab/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Lab
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_sql/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_3_2"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_3_2"
|
|
id="__nav_2_3_2_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
NoSQL
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_2_3_2_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_3_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
NoSQL
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_nosql/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_nosql/key_concepts/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Key Concepts
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../databases_nosql/further_reading/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_3_3"
|
|
checked
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_3_3"
|
|
id="__nav_2_3_3_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Message Queue
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_2_3_3_label"
|
|
aria-expanded="true"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_3_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Message Queue
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item md-nav__item--active">
|
|
|
|
|
|
<!-- State toggle -->
|
|
<input
|
|
class="md-nav__toggle md-toggle"
|
|
type="checkbox"
|
|
id="__toc"
|
|
/>
|
|
|
|
<!-- Hack: see partials/toc.html for more information -->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Navigation link to table of contents -->
|
|
|
|
<label class="md-nav__link md-nav__link--active" for="__toc">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Key Concepts
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<a
|
|
href="./"
|
|
class="md-nav__link md-nav__link--active"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Key Concepts
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
|
|
<!-- Table of contents -->
|
|
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#delivery-guarantees" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Delivery guarantees
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#messages-ordering-and-parallelism" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Messages ordering and parallelism
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#fan-out-in" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Fan Out / In
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Fan Out / In">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#fan-out" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Fan Out
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#fan-in" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Fan In
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#poison-pills-and-dead-letters" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Poison Pills and Dead Letters
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#messaging-patterns" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Messaging Patterns
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Messaging Patterns">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#point-to-point-queue-based" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Point-to-Point (Queue-based)
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#publish-subscribe-pattern" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Publish-subscribe pattern
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<!-- Navigation item -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../further_reading/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_3_4"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_3_4"
|
|
id="__nav_2_3_4_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Big Data
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_2_3_4_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_3_4">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Big Data
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../big_data/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../big_data/evolution/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Evolution and Architecture of Hadoop
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../big_data/tasks/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_4"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_4"
|
|
id="__nav_2_4_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Systems Design
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_2_4_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_4">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Systems Design
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../systems_design/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../systems_design/scalability/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Scalability
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../systems_design/availability/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Availability
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../systems_design/fault-tolerance/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Fault Tolerance
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../systems_design/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_5"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_5"
|
|
id="__nav_2_5_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Metrics and Monitoring
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_2_5_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_5">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Metrics and Monitoring
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../metrics_and_monitoring/introduction/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../metrics_and_monitoring/command-line_tools/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Command-line Tools
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../metrics_and_monitoring/third-party_monitoring/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Third-party Monitoring
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../metrics_and_monitoring/alerts/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Proactive Monitoring with Alerts
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../metrics_and_monitoring/best_practices/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Best Practices for Monitoring
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../metrics_and_monitoring/observability/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Observability
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../metrics_and_monitoring/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_2_6"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_2_6"
|
|
id="__nav_2_6_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Security
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_2_6_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_2_6">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Security
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../security/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../security/fundamentals/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Fundamentals of Security
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../security/network_security/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Network Security
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../security/threats_attacks_defences/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Threat, Attacks & Defences
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../security/writing_secure_code/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Writing Secure code
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../security/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3"
|
|
id="__nav_3_label"
|
|
tabindex=""
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Level 102
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="1"
|
|
aria-labelledby="__nav_3_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Level 102
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_1"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_1"
|
|
id="__nav_3_1_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Linux Intermediate
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_3_1_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_1">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Linux Intermediate
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/linux_intermediate/introduction/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/linux_intermediate/package_management/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Package Management
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/linux_intermediate/storage_media/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Storage Media
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/linux_intermediate/archiving_backup/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Archiving and Backup
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/linux_intermediate/introvim/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction to Vim
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/linux_intermediate/bashscripting/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Bash Scripting
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/linux_intermediate/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_2"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_2"
|
|
id="__nav_3_2_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Linux Advanced
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_3_2_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Linux Advanced
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_2_1"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_2_1"
|
|
id="__nav_3_2_1_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Containerization And Orchestration
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_3_2_1_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_2_1">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Containerization And Orchestration
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/containerization_and_orchestration/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/containerization_and_orchestration/intro_to_containers/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction To Containers
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/containerization_and_orchestration/containerization_with_docker/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Containerization With Docker
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/containerization_and_orchestration/orchestration_with_kubernetes/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Orchestration With Kubernetes
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/containerization_and_orchestration/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_2_2"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_2_2"
|
|
id="__nav_3_2_2_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
System Calls and Signals
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="3"
|
|
aria-labelledby="__nav_3_2_2_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_2_2">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
System Calls and Signals
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_calls_and_signals/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_calls_and_signals/signals/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Signals
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_calls_and_signals/system_calls/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
System Calls
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_calls_and_signals/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_3"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_3"
|
|
id="__nav_3_3_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Networking
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_3_3_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Networking
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/networking/introduction/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/networking/security/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Security
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/networking/scale/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Scale
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/networking/rtt/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
RTT
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/networking/infrastructure-features/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Infrastructure Services
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/networking/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_4"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_4"
|
|
id="__nav_3_4_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
System Design
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_3_4_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_4">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
System Design
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_design/intro/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_design/large-system-design/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Large System Design
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_design/scaling/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Scaling
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_design/scaling-beyond-the-datacenter/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Scaling Beyond the Data Center
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_design/resiliency/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Resiliency
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_design/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_5"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_5"
|
|
id="__nav_3_5_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
System Troubleshooting and Performance Improvements
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_3_5_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_5">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
System Troubleshooting and Performance Improvements
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_troubleshooting_and_performance/introduction/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_troubleshooting_and_performance/troubleshooting/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Troubleshooting
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_troubleshooting_and_performance/important-tools/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Important Tools
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_troubleshooting_and_performance/performance-improvements/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Performance Improvements
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_troubleshooting_and_performance/troubleshooting-example/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Troubleshooting Example
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/system_troubleshooting_and_performance/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
|
|
<!-- Determine all nested items that are index pages -->
|
|
|
|
|
|
|
|
<!-- Navigation tabs -->
|
|
|
|
|
|
<!-- Render 1st level items with nested items as sections -->
|
|
|
|
|
|
|
|
<!-- Navigation pruning -->
|
|
|
|
|
|
<!-- Nested navigation item -->
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<!-- Determine checked and indeterminate state -->
|
|
|
|
|
|
<!-- Active checkbox expands items contained within nested section -->
|
|
<input
|
|
class="md-nav__toggle md-toggle "
|
|
type="checkbox"
|
|
id="__nav_3_6"
|
|
|
|
/>
|
|
|
|
<!-- Toggle to expand nested items -->
|
|
|
|
|
|
<label
|
|
class="md-nav__link"
|
|
for="__nav_3_6"
|
|
id="__nav_3_6_label"
|
|
tabindex="0"
|
|
>
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Continuous Integration and Continuous Delivery
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<!-- Toggle to expand nested items with link to index page -->
|
|
|
|
|
|
<!-- Nested navigation -->
|
|
<nav
|
|
class="md-nav"
|
|
data-md-level="2"
|
|
aria-labelledby="__nav_3_6_label"
|
|
aria-expanded="false"
|
|
>
|
|
<label class="md-nav__title" for="__nav_3_6">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Continuous Integration and Continuous Delivery
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
<!-- Nested navigation item -->
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/continuous_integration_and_continuous_delivery/introduction/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Introduction
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/continuous_integration_and_continuous_delivery/introduction_to_cicd/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
What is CI/CD?
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/continuous_integration_and_continuous_delivery/cicd_brief_history/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Brief History
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/continuous_integration_and_continuous_delivery/continuous_integration_build_pipeline/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Continuous Integration
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/continuous_integration_and_continuous_delivery/continuous_delivery_release_pipeline/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Continuous Delivery and Deployment
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/continuous_integration_and_continuous_delivery/jenkins_cicd_pipeline_hands_on_lab/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
CI/CD Pipeline - Hands-on
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../level102/continuous_integration_and_continuous_delivery/conclusion/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Conclusion
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<!-- Pruned navigation item -->
|
|
|
|
</li>
|
|
|
|
<!-- Currently active page -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../CONTRIBUTING/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Contribute
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../CODE_OF_CONDUCT/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
Code of Conduct
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Determine classes -->
|
|
|
|
|
|
|
|
<!-- Determine active page for paginated views -->
|
|
|
|
|
|
<!-- Navigation item with nested items -->
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../../sre_community/" class="md-nav__link">
|
|
|
|
|
|
<!-- Navigation link icon -->
|
|
|
|
|
|
<!-- Navigation link title -->
|
|
<span class="md-ellipsis">
|
|
SRE Community
|
|
</span>
|
|
|
|
<!-- Navigation link status -->
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#delivery-guarantees" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Delivery guarantees
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#messages-ordering-and-parallelism" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Messages ordering and parallelism
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#fan-out-in" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Fan Out / In
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Fan Out / In">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#fan-out" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Fan Out
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#fan-in" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Fan In
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#poison-pills-and-dead-letters" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Poison Pills and Dead Letters
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#messaging-patterns" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Messaging Patterns
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Messaging Patterns">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#point-to-point-queue-based" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Point-to-Point (Queue-based)
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#publish-subscribe-pattern" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Publish-subscribe pattern
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-content" data-md-component="content">
|
|
<article class="md-content__inner md-typeset">
|
|
|
|
|
|
|
|
|
|
<h1 id="key-concepts">Key Concepts</h1>
|
|
<p>Let's looks at some of the key concepts when we talk about messaging system</p>
|
|
<h3 id="delivery-guarantees">Delivery guarantees</h3>
|
|
<p>One of the essential aspects of messaging services is ensuring that messages are delivered to their intended recipients. Different systems offer varying levels of delivery guarantees, and it is crucial to understand these guarantees to choose the right messaging service for your needs.</p>
|
|
<ul>
|
|
<li>
|
|
<p><strong>at-most-once-delivery</strong> This guarantee ensures that a message is delivered at most once to its intended recipient. In other words, messages may be lost, but they will never be delivered more than once. This approach is suitable for scenarios where message loss is tolerable and duplication is not desired.</p>
|
|
</li>
|
|
<li>
|
|
<p><strong>at-lesat-once-delivery</strong> Under this guarantee, a message will be delivered to its intended recipient at least once, but it may be delivered multiple times in case of failures. This approach is appropriate for situations where message loss is unacceptable, but duplication can be managed by the recipient.</p>
|
|
</li>
|
|
<li>
|
|
<p><strong>exactly-once-delivery</strong> This guarantee ensures that a message is delivered exactly once to its intended recipient, with no loss or duplication. This is the most stringent level of delivery guarantee and is suitable for applications where both message loss and duplication are unacceptable. However, it's important to note that it is challenging, if not impossible, for any messaging system to guarantee exactly-once delivery due to the inherent complexities and potential failures in distributed systems.</p>
|
|
</li>
|
|
</ul>
|
|
<p>Selecting the right delivery guarantee depends on the specific requirements of your application. For example, in financial transactions, an exactly-once delivery guarantee is essential to avoid double-processing of payments or missed transactions. In contrast, a log monitoring system may only require at-most-once delivery to reduce system overhead.</p>
|
|
<h3 id="messages-ordering-and-parallelism">Messages ordering and parallelism</h3>
|
|
<p>Ensuring the correct order of messages and processing them in parallel can be a challenge in distributed messaging systems. The following strategies help maintain order and ensure parallelism:</p>
|
|
<ul>
|
|
<li>
|
|
<p><strong>Strict ordering</strong>: In some cases, maintaining strict order is essential, such as when processing financial transactions. This may require additional overhead, such as sequencing numbers, buffering, and reordering messages.</p>
|
|
</li>
|
|
<li>
|
|
<p><strong>Partial ordering</strong>: Partial ordering can be used when only a subset of messages must be ordered. For example, messages within a specific group or partition must be processed in order, but messages between groups or partitions can be processed independently.</p>
|
|
</li>
|
|
<li>
|
|
<p><strong>Unordered processing</strong>: In some scenarios, processing messages in any order is acceptable. This approach reduces complexity and enables higher parallelism, improving overall system performance.</p>
|
|
</li>
|
|
</ul>
|
|
<p>Strategies to maintain order and ensure parallelism:
|
|
Partitioning messages by a key, using sequencing numbers, and buffering can help maintain order while still allowing parallel processing. It is crucial to strike the right balance between ordering requirements and parallelism to optimize system performance.</p>
|
|
<h3 id="fan-out-in">Fan Out / In</h3>
|
|
<p>Fan out and fan in are two crucial concepts in messaging systems that deal with the distribution of messages among multiple consumers and the aggregation of messages from multiple producers, respectively.</p>
|
|
<h4 id="fan-out">Fan Out</h4>
|
|
<p>Fan out is a pattern where a single message is sent to multiple consumers, ensuring that each consumer receives a copy of the message. This can be achieved using the Publish-Subscribe (Pub/Sub) messaging pattern or by creating multiple bindings with unique routing keys in a message broker like RabbitMQ. Fan out is useful in scenarios where multiple services or applications need to process the same messages independently, such as sending notifications to multiple subscribers or replicating data across multiple databases.</p>
|
|
<h4 id="fan-in">Fan In</h4>
|
|
<p>Fan in is a pattern where messages from multiple producers are aggregated and processed by a single consumer or a group of consumers. This can be achieved by using a message broker with multiple producers sending messages to a shared queue, which is then consumed by one or more consumers. Fan in is beneficial when you need to centralize processing or consolidate data from multiple sources, such as aggregating logs from various services or combining sensor data from multiple IoT devices.</p>
|
|
<h3 id="poison-pills-and-dead-letters">Poison Pills and Dead Letters</h3>
|
|
<p>In messaging systems, poison pills are problematic messages that can cause failures or crashes in the message processing pipeline. To handle these messages, messaging services often employ Dead Letter Queues (DLQs).</p>
|
|
<p>A poison pill is a message that cannot be processed due to various reasons, such as invalid format, missing information, or incorrect data. When a consumer encounters a poison pill, it must handle it gracefully to avoid crashing or getting stuck in an infinite processing loop.</p>
|
|
<p>A Dead Letter Queues (DLQ) is a separate queue used to store poison pills or messages that could not be processed successfully. Instead of discarding problematic messages, they are redirected to a DLQ, allowing engineers to analyze and resolve the issues.</p>
|
|
<p>To handle poison pills effectively, you can implement error handling and monitoring, set up retries with backoff policies, and use DLQs for further analysis and resolution. Regularly monitor the DLQ, identify patterns causing poison pills, and implement fixes in the message processing pipeline to prevent future issues.</p>
|
|
<h3 id="messaging-patterns">Messaging Patterns</h3>
|
|
<h4 id="point-to-point-queue-based">Point-to-Point (Queue-based)</h4>
|
|
<p>In this pattern, messages are sent from a single producer to a single consumer via a message queue. The message is consumed by only one consumer, even if there are multiple consumers listening to the queue. This pattern ensures that the message is processed by a single consumer, making it suitable for scenarios where messages must be processed in sequence or by specific consumers.</p>
|
|
<h4 id="publish-subscribe-pattern">Publish-subscribe pattern</h4>
|
|
<p>The publish-subscribe pattern involves a producer sending messages to a topic, and multiple consumers subscribing to that topic to receive the messages. This pattern allows for one-to-many communication, where a single message can be delivered to multiple consumers simultaneously. It is ideal for event-driven architectures and applications that require real-time updates or notifications.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</article>
|
|
</div>
|
|
|
|
|
|
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
|
</div>
|
|
|
|
</main>
|
|
|
|
<footer class="md-footer">
|
|
|
|
<div class="md-footer-meta md-typeset">
|
|
<div class="md-footer-meta__inner md-grid">
|
|
<div class="md-copyright">
|
|
|
|
<div class="md-copyright__highlight">
|
|
Copyright 2020 LinkedIn Corporation. All Rights Reserved. Licensed under the Creative Commons Attribution 4.0 International Public License
|
|
</div>
|
|
|
|
|
|
Made with
|
|
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
|
Material for MkDocs
|
|
</a>
|
|
|
|
</div>
|
|
|
|
<div class="md-social">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a href="https://github.com/linkedin/school-of-sre" target="_blank" rel="noopener" title="github.com" class="md-social__link">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
|
|
</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
</div>
|
|
<div class="md-dialog" data-md-component="dialog">
|
|
<div class="md-dialog__inner md-typeset"></div>
|
|
</div>
|
|
|
|
|
|
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.sections"], "search": "../../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
|
|
|
|
|
|
<script src="../../../assets/javascripts/bundle.c8d2eff1.min.js"></script>
|
|
|
|
|
|
</body>
|
|
</html> |