-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
124 lines (123 loc) · 35.4 KB
/
Copy pathindex.html
File metadata and controls
124 lines (123 loc) · 35.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<!doctype html>
<html lang="zh"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"><meta><title>面向问题编程</title><link rel="manifest" href="/manifest.json"><meta name="application-name" content="面向问题编程"><meta name="msapplication-TileImage" content="/img/favicon.svg"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-title" content="面向问题编程"><meta name="apple-mobile-web-app-status-bar-style" content="default"><meta name="description" content="真实业务场景下的技术问题, 技术架构"><meta property="og:type" content="blog"><meta property="og:title" content="面向问题编程"><meta property="og:url" content="https://www.heapoverflow.cn/"><meta property="og:site_name" content="面向问题编程"><meta property="og:description" content="真实业务场景下的技术问题, 技术架构"><meta property="og:locale" content="zh_CN"><meta property="og:image" content="https://www.heapoverflow.cn/img/og_image.png"><meta property="article:author" content="面向问题编程"><meta property="twitter:card" content="summary"><meta property="twitter:image" content="/img/og_image.png"><script type="application/ld+json">{"@context":"https://schema.org","@type":"BlogPosting","mainEntityOfPage":{"@type":"WebPage","@id":"https://www.heapoverflow.cn"},"headline":"面向问题编程","image":["https://www.heapoverflow.cn/img/og_image.png"],"author":{"@type":"Person","name":"面向问题编程"},"publisher":{"@type":"Organization","name":"面向问题编程","logo":{"@type":"ImageObject","url":"https://www.heapoverflow.cn/img/logo.svg"}},"description":"真实业务场景下的技术问题, 技术架构"}</script><link rel="icon" href="/img/favicon.svg"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.2/css/all.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/highlight.js@9.12.0/styles/atom-one-light.css"><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Ubuntu:wght@400;600&family=Source+Code+Pro"><link rel="stylesheet" href="/css/default.css"><style>body>.footer,body>.navbar,body>.section{opacity:0}</style><!--!--><!--!--><!--!--><!--!--><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/cookieconsent@3.1.1/build/cookieconsent.min.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/lightgallery@1.10.0/dist/css/lightgallery.min.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/justifiedGallery@3.8.1/dist/css/justifiedGallery.min.css"><script src="https://www.googletagmanager.com/gtag/js?id=G-ETGL163DQH" async></script><script>window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-ETGL163DQH');</script><!--!--><!--!--><style>.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pace-inactive{display:none}.pace .pace-progress{background:#3273dc;position:fixed;z-index:2000;top:0;right:100%;width:100%;height:2px}</style><script src="https://cdn.jsdelivr.net/npm/pace-js@1.2.4/pace.min.js"></script><!--!--><!--!--><script data-ad-client="ca-pub-6757924689439593" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js" async></script><!-- hexo injector head_end start --><script>
(function () {
function switchTab() {
if (!location.hash) {
return;
}
Array
.from(document.querySelectorAll('.tab-content'))
.forEach($tab => {
$tab.classList.add('is-hidden');
});
Array
.from(document.querySelectorAll('.tabs li'))
.forEach($tab => {
$tab.classList.remove('is-active');
});
const $activeTab = document.querySelector(location.hash);
if ($activeTab) {
$activeTab.classList.remove('is-hidden');
}
const $tabMenu = document.querySelector(`a[href="${location.hash}"]`);
if ($tabMenu) {
$tabMenu.parentElement.classList.add('is-active');
}
}
switchTab();
window.addEventListener('hashchange', switchTab, false);
})();
</script><!-- hexo injector head_end end --><meta name="generator" content="Hexo 6.0.0"></head><body class="is-3-column"><nav class="navbar navbar-main"><div class="container"><div class="navbar-brand justify-content-center"><a class="navbar-item navbar-logo" href="/"><img src="/img/logo.svg" alt="面向问题编程" height="28"></a></div><div class="navbar-menu"><div class="navbar-start"><a class="navbar-item is-active" href="/">首页</a><a class="navbar-item" href="/categories/%E9%97%AE%E9%A2%98/">问题</a><a class="navbar-item" href="/categories/%E6%8A%80%E6%9C%AF%E6%9E%B6%E6%9E%84/">技术架构</a><a class="navbar-item" href="/categories/%E4%B8%80%E6%96%87%E4%BA%86%E8%A7%A3/">一文了解</a></div><div class="navbar-end"><a class="navbar-item" rel="noopener" title="分类" href="/categories">分类</a><a class="navbar-item" rel="noopener" title="标签" href="/tags">标签</a><a class="navbar-item" rel="noopener" title="归档" href="/archives">归档</a><a class="navbar-item" rel="noopener" title="Knative中文网" href="https://www.heapoverflow.cn/knative/">Knative中文网</a><a class="navbar-item" rel="noopener" title="时间序列分析中文网" href="https://www.heapoverflow.cn/timeseries/">时间序列分析中文网</a><a class="navbar-item search" title="搜索" href="javascript:;"><i class="fas fa-search"></i></a></div></div></div></nav><section class="section"><div class="container"><div class="columns"><div class="column order-2 column-main is-8-tablet is-8-desktop is-6-widescreen"><div class="card"><div class="card-image"><a class="image is-7by3" href="/pages/youdao-k8s-1/"><img class="fill" src="/img/youdao-k8s-1/1.jpg" alt="有道Kubernetes容器API监控系统设计和实践"></a></div><article class="card-content article" role="article"><div class="article-meta is-size-7 is-uppercase level is-mobile"><div class="level-left"><span class="level-item"><time dateTime="2022-04-14T14:34:11.103Z" title="2022/4/14 下午10:34:11">2022-04-14</time>发表</span><span class="level-item"><time dateTime="2022-04-14T14:38:03.600Z" title="2022/4/14 下午10:38:03">2022-04-14</time>更新</span><span class="level-item"><a class="link-muted" href="/categories/%E6%8A%80%E6%9C%AF%E5%AE%9E%E8%B7%B5/">技术实践</a></span><span class="level-item">27 分钟读完 (大约4071个字)</span></div></div><h1 class="title is-3 is-size-4-mobile"><a class="link-muted" href="/pages/youdao-k8s-1/">有道Kubernetes容器API监控系统设计和实践</a></h1><div class="content"><p>本篇文章,将给大家分享有道容器服务API监控方案,这个方案同时具有轻量级和灵活性的特点,很好地体现了Kubernetes集群化管理的优势,解决了静态配置的监控不满足容器服务监控的需求。并做了易用性和误报消减、可视化面板等一系列优化,目前已经超过80%的容器服务已经接入了该监控系统。</p></div><a class="article-more button is-small is-size-7" href="/pages/youdao-k8s-1/#more">阅读更多</a></article></div><div class="card"><div class="card-image"><a class="image is-7by3" href="/pages/k8s-operator-2/"><img class="fill" src="/img/k8s-operator-2/0.jpg" alt="Kubernetes API 与 Operator:不为人知的开发者战争(二)"></a></div><article class="card-content article" role="article"><div class="article-meta is-size-7 is-uppercase level is-mobile"><div class="level-left"><span class="level-item"><time dateTime="2022-04-12T15:13:01.436Z" title="2022/4/12 下午11:13:01">2022-04-12</time>发表</span><span class="level-item"><time dateTime="2022-04-12T15:15:56.985Z" title="2022/4/12 下午11:15:56">2022-04-12</time>更新</span><span class="level-item">32 分钟读完 (大约4745个字)</span></div></div><h1 class="title is-3 is-size-4-mobile"><a class="link-muted" href="/pages/k8s-operator-2/">Kubernetes API 与 Operator:不为人知的开发者战争(二)</a></h1><div class="content"><p>前情回顾:《<a href="/pages/k8s-operator/">Kubernetes API 与 Operator:不为人知的开发者战争(上)</a></p>
<p>2016 年秋天,原 CoreOS 公司的工程师邓洪超像往常一样,来到了同事位于福斯特城(Foster City)的公寓进行结对编程。每周四相约在这里结对,是这两位工程师多年来约定俗成的惯例。</p></div><a class="article-more button is-small is-size-7" href="/pages/k8s-operator-2/#more">阅读更多</a></article></div><div class="card"><div class="card-image"><a class="image is-7by3" href="/pages/k8s-operator/"><img class="fill" src="/img/k8s-operator-2/0.jpg" alt="Kubernetes API 与 Operator:不为人知的开发者战争(一)"></a></div><article class="card-content article" role="article"><div class="article-meta is-size-7 is-uppercase level is-mobile"><div class="level-left"><span class="level-item"><time dateTime="2022-04-12T15:04:10.697Z" title="2022/4/12 下午11:04:10">2022-04-12</time>发表</span><span class="level-item"><time dateTime="2022-04-12T15:16:35.298Z" title="2022/4/12 下午11:16:35">2022-04-12</time>更新</span><span class="level-item">23 分钟读完 (大约3495个字)</span></div></div><h1 class="title is-3 is-size-4-mobile"><a class="link-muted" href="/pages/k8s-operator/">Kubernetes API 与 Operator:不为人知的开发者战争(一)</a></h1><div class="content"><p>如果我问你,如何把一个 etcd 集群部署在 Google Cloud 或者阿里云上,你一定会不假思索的给出答案:当然是用 etcd Operator!</p></div><a class="article-more button is-small is-size-7" href="/pages/k8s-operator/#more">阅读更多</a></article></div><div class="card"><div class="card-image"><a class="image is-7by3" href="/pages/wiki-nginx-network/"><img class="fill" src="/img/wiki-nginx-network/0.jpg" alt="一文了解 Nginx 高性能网络工作原理"></a></div><article class="card-content article" role="article"><div class="article-meta is-size-7 is-uppercase level is-mobile"><div class="level-left"><span class="level-item"><time dateTime="2022-04-11T01:59:39.204Z" title="2022/4/11 上午9:59:39">2022-04-11</time>发表</span><span class="level-item"><time dateTime="2022-04-11T02:02:47.189Z" title="2022/4/11 上午10:02:47">2022-04-11</time>更新</span><span class="level-item"><a class="link-muted" href="/categories/%E4%B8%80%E6%96%87%E4%BA%86%E8%A7%A3/">一文了解</a></span><span class="level-item">33 分钟读完 (大约4895个字)</span></div></div><h1 class="title is-3 is-size-4-mobile"><a class="link-muted" href="/pages/wiki-nginx-network/">一文了解 Nginx 高性能网络工作原理</a></h1><div class="content"><p>大家好,我是飞哥! </p>
<p>在单进程的网络编程模型中。所有的网络相关的动作都是在一个进程里完成的,如监听 socket 的创建, bind、listen。再比如 epoll 的创建、要监听事件的添加,以及 epoll_wait 等待时间发生。这些统统都是在一个进程里搞定。</p>
<p>一个客户端和使用了 epoll 的服务端的交互过程如下图所示。</p></div><a class="article-more button is-small is-size-7" href="/pages/wiki-nginx-network/#more">阅读更多</a></article></div><div class="card"><div class="card-image"><a class="image is-7by3" href="/pages/wiki-cache/"><img class="fill" src="/img/wiki-cache/0.jpg" alt="一文了解缓存"></a></div><article class="card-content article" role="article"><div class="article-meta is-size-7 is-uppercase level is-mobile"><div class="level-left"><span class="level-item"><time dateTime="2022-04-08T15:20:41.336Z" title="2022/4/8 下午11:20:41">2022-04-08</time>发表</span><span class="level-item"><time dateTime="2022-04-08T15:31:07.957Z" title="2022/4/8 下午11:31:07">2022-04-08</time>更新</span><span class="level-item"><a class="link-muted" href="/categories/%E4%B8%80%E6%96%87%E4%BA%86%E8%A7%A3/">一文了解</a></span><span class="level-item">1 小时读完 (大约10985个字)</span></div></div><h1 class="title is-3 is-size-4-mobile"><a class="link-muted" href="/pages/wiki-cache/">一文了解缓存</a></h1><div class="content"><blockquote>
<p>作者:vivo互联网服务器团队-Zhang Peng</p>
</blockquote>
<h2 id="一、缓存简介"><a href="#一、缓存简介" class="headerlink" title="一、缓存简介"></a>一、缓存简介</h2><p>1.1 什么是缓存</p>
<p>缓存就是数据交换的缓冲区。缓存的本质是一个内存 Hash。缓存是一种利用空间换时间的设计,其目标就是更快、更近:极大的提高。</p></div><a class="article-more button is-small is-size-7" href="/pages/wiki-cache/#more">阅读更多</a></article></div><div class="card"><div class="card-image"><a class="image is-7by3" href="/pages/wiki-cache-db-consistent/"><img class="fill" src="/img/wiki-cache-db-consistent/1.jpg" alt="一文了解如何保证缓存和数据库的最终一致性"></a></div><article class="card-content article" role="article"><div class="article-meta is-size-7 is-uppercase level is-mobile"><div class="level-left"><span class="level-item"><time dateTime="2022-04-07T14:28:39.934Z" title="2022/4/7 下午10:28:39">2022-04-07</time>发表</span><span class="level-item"><time dateTime="2022-04-07T14:59:41.614Z" title="2022/4/7 下午10:59:41">2022-04-07</time>更新</span><span class="level-item"><a class="link-muted" href="/categories/%E4%B8%80%E6%96%87%E4%BA%86%E8%A7%A3/">一文了解</a></span><span class="level-item">38 分钟读完 (大约5665个字)</span></div></div><h1 class="title is-3 is-size-4-mobile"><a class="link-muted" href="/pages/wiki-cache-db-consistent/">一文了解如何保证缓存和数据库的最终一致性</a></h1><div class="content"><blockquote>
<p>到底是更新缓存还是删除缓存? 到底是先更新数据库,再删除缓存,还是先删除缓存,再更新数据库?本文主要介绍了在不同场景下保证数据缓存一致性的相关策略。</p>
</blockquote></div><a class="article-more button is-small is-size-7" href="/pages/wiki-cache-db-consistent/#more">阅读更多</a></article></div><div class="card"><div class="card-image"><a class="image is-7by3" href="/pages/wiki-rpc-call/"><img class="fill" src="/img/wiki-rpc-call/0.jpg" alt="一文了解RPC同步调用和异步调用"></a></div><article class="card-content article" role="article"><div class="article-meta is-size-7 is-uppercase level is-mobile"><div class="level-left"><span class="level-item"><time dateTime="2022-04-07T12:09:57.730Z" title="2022/4/7 下午8:09:57">2022-04-07</time>发表</span><span class="level-item"><time dateTime="2022-04-07T15:31:12.234Z" title="2022/4/7 下午11:31:12">2022-04-07</time>更新</span><span class="level-item"><a class="link-muted" href="/categories/%E4%B8%80%E6%96%87%E4%BA%86%E8%A7%A3/">一文了解</a></span><span class="level-item">19 分钟读完 (大约2777个字)</span></div></div><h1 class="title is-3 is-size-4-mobile"><a class="link-muted" href="/pages/wiki-rpc-call/">一文了解RPC同步调用和异步调用</a></h1><div class="content"><p>要搞定RPC框架,RPC框架分为客户端部分与服务端部分。</p>
<p>RPC-client的部分又分为:</p>
<p>(1)序列化反序列化的部分(上图中的1、4)</p>
<p>(2)发送字节流与接收字节流的部分(上图中的2、3)</p></div><a class="article-more button is-small is-size-7" href="/pages/wiki-rpc-call/#more">阅读更多</a></article></div><div class="card"><div class="card-image"><a class="image is-7by3" href="/pages/practice-tx-k8s-2/"><img class="fill" src="/img/practice-tx-k8s-2/1.jpg" alt="性能提升40%: 腾讯 TKE 用 eBPF绕过 conntrack 优化K8s Service"></a></div><article class="card-content article" role="article"><div class="article-meta is-size-7 is-uppercase level is-mobile"><div class="level-left"><span class="level-item"><time dateTime="2022-04-06T15:02:02.635Z" title="2022/4/6 下午11:02:02">2022-04-06</time>发表</span><span class="level-item"><time dateTime="2022-04-06T15:06:03.323Z" title="2022/4/6 下午11:06:03">2022-04-06</time>更新</span><span class="level-item"><a class="link-muted" href="/categories/%E6%8A%80%E6%9C%AF%E5%AE%9E%E8%B7%B5/">技术实践</a></span><span class="level-item">20 分钟读完 (大约2976个字)</span></div></div><h1 class="title is-3 is-size-4-mobile"><a class="link-muted" href="/pages/practice-tx-k8s-2/">性能提升40%: 腾讯 TKE 用 eBPF绕过 conntrack 优化K8s Service</a></h1><div class="content"><p>作者范建明、洪志国、张浩,均为腾讯云容器产品中心高级工程师,负责容器网络和Service Mesh,容器Runtime,调度等相关研发工作。</p>
<p><strong>Kubernetes Service</strong>[1] 用于实现集群中业务之间的互相调用和负载均衡,目前社区的实现主要有userspace,iptables和IPVS三种模式。IPVS模式的性能最好,但依然有优化的空间。该模式利用IPVS内核模块实现DNAT,利用nf_conntrack/iptables实现SNAT。nf_conntrack是为通用目的设计的,其内部的状态和流程都比较复杂,带来很大的性能损耗。</p>
<p>腾讯TKE团队[2] 开发了新的IPVS-BPF模式,完全绕过nf_conntrack的处理逻辑,使用eBPF完成SNAT功能。对最常用的Pod访问ClusterIP场景,短连接性能提升**40%<strong>,p99时延降低</strong>31%**;NodePort场景提升,详情见下表和<code>性能测量</code>章节。</p></div><a class="article-more button is-small is-size-7" href="/pages/practice-tx-k8s-2/#more">阅读更多</a></article></div><div class="card"><div class="card-image"><a class="image is-7by3" href="/pages/how-create-pod-with-cri/"><img class="fill" src="/img/how-create-pod-with-cri/1.jpg" alt="一文了解CRI通过Containerd创建Pod的过程"></a></div><article class="card-content article" role="article"><div class="article-meta is-size-7 is-uppercase level is-mobile"><div class="level-left"><span class="level-item"><time dateTime="2022-04-06T14:48:48.410Z" title="2022/4/6 下午10:48:48">2022-04-06</time>发表</span><span class="level-item"><time dateTime="2022-04-06T14:57:28.191Z" title="2022/4/6 下午10:57:28">2022-04-06</time>更新</span><span class="level-item"><a class="link-muted" href="/categories/%E4%B8%80%E6%96%87%E4%BA%86%E8%A7%A3/">一文了解</a></span><span class="level-item">23 分钟读完 (大约3447个字)</span></div></div><h1 class="title is-3 is-size-4-mobile"><a class="link-muted" href="/pages/how-create-pod-with-cri/">一文了解CRI通过Containerd创建Pod的过程</a></h1><div class="content"><h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a><strong>前言</strong></h2><p>Containerd在某些场景下已经替代docker成为了kubernetes的首选容器运行时。比如边缘端场景k8s的衍生项目k3s则使用containerd代替docker作为默认运行时;比如安全容器场景kata、gVisor项目都直接使用containerd来与k8s对接(并非通过docker)。k8s将对容器的操作抽象成了CRI接口来支持多种容器运行时,针对containerd,k8s社区为其开发了cri-plugin内置在containerd中来支持k8s。本文将针对CRI接口通过containerd创建k8s Pod的详细过程进行介绍。</p></div><a class="article-more button is-small is-size-7" href="/pages/how-create-pod-with-cri/#more">阅读更多</a></article></div><div class="card"><div class="card-image"><a class="image is-7by3" href="/pages/arch-taobao/"><img class="fill" src="/img/arch-taobao/0.jpg" alt="大型网站架构演进"></a></div><article class="card-content article" role="article"><div class="article-meta is-size-7 is-uppercase level is-mobile"><div class="level-left"><span class="level-item"><time dateTime="2022-04-06T14:40:22.760Z" title="2022/4/6 下午10:40:22">2022-04-06</time>发表</span><span class="level-item"><time dateTime="2022-04-06T15:10:23.427Z" title="2022/4/6 下午11:10:23">2022-04-06</time>更新</span><span class="level-item"><a class="link-muted" href="/categories/%E6%8A%80%E6%9C%AF%E6%9E%B6%E6%9E%84/">技术架构</a></span><span class="level-item">44 分钟读完 (大约6608个字)</span></div></div><h1 class="title is-3 is-size-4-mobile"><a class="link-muted" href="/pages/arch-taobao/">大型网站架构演进</a></h1><div class="content"><ul>
<li>单机架构</li>
<li>第一次演进:Tomcat与数据库分开部署</li>
<li>第二次演进:引入本地缓存和分布式缓存</li>
<li>第三次演进:引入反向代理实现负载均衡</li>
<li>第四次演进:数据库读写分离</li>
<li>第五次演进:数据库按业务分库</li>
<li>第六次演进:把大表拆分为小表</li>
<li>第七次演进:使用LVS或F5来使多个Nginx负载均衡</li>
<li>第八次演进:通过DNS轮询实现机房间的负载均衡</li>
<li>第九次演进:引入NoSQL数据库和搜索引擎等技术</li>
<li>第十次演进:大应用拆分为小应用</li>
<li>第十一次演进:复用的功能抽离成微服务</li>
<li>第十二次演进:引入企业服务总线ESB屏蔽服务接口的访问差异</li>
<li>第十三次演进:引入容器化技术实现运行环境隔离与动态服务管理</li>
<li>第十四次演进:以云平台承载系统</li>
</ul></div><a class="article-more button is-small is-size-7" href="/pages/arch-taobao/#more">阅读更多</a></article></div><nav class="pagination" role="navigation" aria-label="pagination"><div class="pagination-previous is-invisible is-hidden-mobile"><a href="/page/0/">上一页</a></div><div class="pagination-next"><a href="/page/2/">下一页</a></div><ul class="pagination-list is-hidden-mobile"><li><a class="pagination-link is-current" href="/">1</a></li><li><a class="pagination-link" href="/page/2/">2</a></li><li><span class="pagination-ellipsis">…</span></li><li><a class="pagination-link" href="/page/8/">8</a></li></ul></nav></div><div class="column column-left is-4-tablet is-4-desktop is-3-widescreen order-1"><div class="card widget" data-type="recent-posts"><div class="card-content"><h3 class="menu-label">最新文章</h3><article class="media"><figure class="media-left"><a class="image" href="/pages/youdao-k8s-1/"><img src="/img/youdao-k8s-1/1.jpg" alt="有道Kubernetes容器API监控系统设计和实践"></a></figure><div class="media-content"><p class="date"><time dateTime="2022-04-14T14:34:11.103Z">2022-04-14</time></p><p class="title"><a href="/pages/youdao-k8s-1/">有道Kubernetes容器API监控系统设计和实践</a></p><p class="categories"><a href="/categories/%E6%8A%80%E6%9C%AF%E5%AE%9E%E8%B7%B5/">技术实践</a></p></div></article><article class="media"><figure class="media-left"><a class="image" href="/pages/k8s-operator-2/"><img src="/img/k8s-operator-2/0.jpg" alt="Kubernetes API 与 Operator:不为人知的开发者战争(二)"></a></figure><div class="media-content"><p class="date"><time dateTime="2022-04-12T15:13:01.436Z">2022-04-12</time></p><p class="title"><a href="/pages/k8s-operator-2/">Kubernetes API 与 Operator:不为人知的开发者战争(二)</a></p></div></article><article class="media"><figure class="media-left"><a class="image" href="/pages/k8s-operator/"><img src="/img/k8s-operator-2/0.jpg" alt="Kubernetes API 与 Operator:不为人知的开发者战争(一)"></a></figure><div class="media-content"><p class="date"><time dateTime="2022-04-12T15:04:10.697Z">2022-04-12</time></p><p class="title"><a href="/pages/k8s-operator/">Kubernetes API 与 Operator:不为人知的开发者战争(一)</a></p></div></article><article class="media"><figure class="media-left"><a class="image" href="/pages/wiki-nginx-network/"><img src="/img/wiki-nginx-network/0.jpg" alt="一文了解 Nginx 高性能网络工作原理"></a></figure><div class="media-content"><p class="date"><time dateTime="2022-04-11T01:59:39.204Z">2022-04-11</time></p><p class="title"><a href="/pages/wiki-nginx-network/">一文了解 Nginx 高性能网络工作原理</a></p><p class="categories"><a href="/categories/%E4%B8%80%E6%96%87%E4%BA%86%E8%A7%A3/">一文了解</a></p></div></article><article class="media"><figure class="media-left"><a class="image" href="/pages/wiki-cache/"><img src="/img/wiki-cache/0.jpg" alt="一文了解缓存"></a></figure><div class="media-content"><p class="date"><time dateTime="2022-04-08T15:20:41.336Z">2022-04-08</time></p><p class="title"><a href="/pages/wiki-cache/">一文了解缓存</a></p><p class="categories"><a href="/categories/%E4%B8%80%E6%96%87%E4%BA%86%E8%A7%A3/">一文了解</a></p></div></article></div></div><div class="card widget" data-type="archives"><div class="card-content"><div class="menu"><h3 class="menu-label">归档</h3><ul class="menu-list"><li><a class="level is-mobile" href="/archives/2022/04/"><span class="level-start"><span class="level-item">四月 2022</span></span><span class="level-end"><span class="level-item tag">41</span></span></a></li><li><a class="level is-mobile" href="/archives/2022/03/"><span class="level-start"><span class="level-item">三月 2022</span></span><span class="level-end"><span class="level-item tag">30</span></span></a></li><li><a class="level is-mobile" href="/archives/2022/02/"><span class="level-start"><span class="level-item">二月 2022</span></span><span class="level-end"><span class="level-item tag">4</span></span></a></li></ul></div></div></div><div class="card widget" data-type="adsense"><div class="card-content"><div class="menu"><h3 class="menu-label">广告</h3><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6757924689439593" data-ad-slot="1306527097" data-ad-format="auto" data-full-width-responsive="true"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script></div></div></div><div class="column-right-shadow is-hidden-widescreen is-sticky"></div></div><div class="column column-right is-4-tablet is-4-desktop is-3-widescreen is-hidden-touch is-hidden-desktop-only order-3 is-sticky"><!--!--><div class="card widget" data-type="tags"><div class="card-content"><div class="menu"><h3 class="menu-label">标签</h3><div class="field is-grouped is-grouped-multiline"><div class="control"><a class="tags has-addons" href="/tags/CPython/"><span class="tag">CPython</span><span class="tag">5</span></a></div><div class="control"><a class="tags has-addons" href="/tags/Feed%E6%9C%8D%E5%8A%A1/"><span class="tag">Feed服务</span><span class="tag">3</span></a></div><div class="control"><a class="tags has-addons" href="/tags/Knative/"><span class="tag">Knative</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/Kubernetes/"><span class="tag">Kubernetes</span><span class="tag">28</span></a></div><div class="control"><a class="tags has-addons" href="/tags/Linux%E7%BD%91%E7%BB%9C/"><span class="tag">Linux网络</span><span class="tag">10</span></a></div><div class="control"><a class="tags has-addons" href="/tags/Python/"><span class="tag">Python</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/RPC/"><span class="tag">RPC</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/Serverless/"><span class="tag">Serverless</span><span class="tag">5</span></a></div><div class="control"><a class="tags has-addons" href="/tags/Yarn/"><span class="tag">Yarn</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/%E5%88%86%E5%B8%83%E5%BC%8F%E4%B8%80%E8%87%B4%E6%80%A7/"><span class="tag">分布式一致性</span><span class="tag">2</span></a></div><div class="control"><a class="tags has-addons" href="/tags/%E5%9C%A8%E7%A6%BB%E7%BA%BF%E6%B7%B7%E9%83%A8/"><span class="tag">在离线混部</span><span class="tag">4</span></a></div><div class="control"><a class="tags has-addons" href="/tags/%E5%A4%A7%E6%95%B0%E6%8D%AE/"><span class="tag">大数据</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/%E6%97%B6%E9%97%B4%E5%BA%8F%E5%88%97/"><span class="tag">时间序列</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/%E6%99%BA%E8%83%BD%E8%BF%90%E7%BB%B4/"><span class="tag">智能运维</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/%E7%BC%93%E5%AD%98/"><span class="tag">缓存</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/"><span class="tag">编译原理</span><span class="tag">1</span></a></div><div class="control"><a class="tags has-addons" href="/tags/%E7%BD%91%E7%BB%9C%E8%99%9A%E6%8B%9F%E5%8C%96/"><span class="tag">网络虚拟化</span><span class="tag">3</span></a></div><div class="control"><a class="tags has-addons" href="/tags/%E8%99%9A%E6%8B%9F%E6%9C%BA/"><span class="tag">虚拟机</span><span class="tag">2</span></a></div><div class="control"><a class="tags has-addons" href="/tags/%E8%AF%AD%E8%A8%80%E7%89%B9%E6%80%A7/"><span class="tag">语言特性</span><span class="tag">2</span></a></div></div></div></div></div><div class="card widget" data-type="profile"><div class="card-content"><nav class="level"><div class="level-item has-text-centered flex-shrink-1"><div><figure class="image is-128x128 mx-auto mb-2"><img class="avatar" src="/img/avatar.jpg"></figure><p class="is-size-6 is-block">公众号:面向问题编程</p></div></div></nav><nav class="level is-mobile"><div class="level-item has-text-centered is-marginless"><div><p class="heading">文章</p><a href="/archives"><p class="title">75</p></a></div></div><div class="level-item has-text-centered is-marginless"><div><p class="heading">分类</p><a href="/categories"><p class="title">5</p></a></div></div><div class="level-item has-text-centered is-marginless"><div><p class="heading">标签</p><a href="/tags"><p class="title">19</p></a></div></div></nav></div></div><div class="card widget" data-type="categories"><div class="card-content"><div class="menu"><h3 class="menu-label">分类</h3><ul class="menu-list"><li><a class="level is-mobile" href="/categories/%E4%B8%80%E6%96%87%E4%BA%86%E8%A7%A3/"><span class="level-start"><span class="level-item">一文了解</span></span><span class="level-end"><span class="level-item tag">33</span></span></a></li><li><a class="level is-mobile" href="/categories/%E6%8A%80%E6%9C%AF%E5%AE%9E%E8%B7%B5/"><span class="level-start"><span class="level-item">技术实践</span></span><span class="level-end"><span class="level-item tag">11</span></span></a></li><li><a class="level is-mobile" href="/categories/%E6%8A%80%E6%9C%AF%E6%9E%B6%E6%9E%84/"><span class="level-start"><span class="level-item">技术架构</span></span><span class="level-end"><span class="level-item tag">8</span></span></a></li><li><a class="level is-mobile" href="/categories/%E7%BB%BC%E8%BF%B0/"><span class="level-start"><span class="level-item">综述</span></span><span class="level-end"><span class="level-item tag">1</span></span></a></li><li><a class="level is-mobile" href="/categories/%E9%97%AE%E9%A2%98/"><span class="level-start"><span class="level-item">问题</span></span><span class="level-end"><span class="level-item tag">2</span></span></a></li></ul></div></div></div></div></div></div></section><footer class="footer"><div class="container"><div class="level"><div class="level-start"><a class="footer-logo is-block mb-2" href="/"><img src="/img/logo.svg" alt="面向问题编程" height="28"></a><p class="is-size-7"><span>© 2022 面向问题编程</span></p></div><div class="level-end"><div class="field has-addons"><p class="control"><a class="button is-transparent is-large" target="_blank" rel="noopener" title="Creative Commons" href="https://creativecommons.org/"><i class="fab fa-creative-commons"></i></a></p><p class="control"><a class="button is-transparent is-large" target="_blank" rel="noopener" title="Attribution 4.0 International" href="https://creativecommons.org/licenses/by/4.0/"><i class="fab fa-creative-commons-by"></i></a></p></div></div></div></div></footer><script src="https://cdn.jsdelivr.net/npm/jquery@3.3.1/dist/jquery.min.js"></script><script src="https://cdn.jsdelivr.net/npm/moment@2.22.2/min/moment-with-locales.min.js"></script><script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.4/dist/clipboard.min.js" defer></script><script>moment.locale("zh-CN");</script><script>var IcarusThemeSettings = {
article: {
highlight: {
clipboard: true,
fold: 'unfolded'
}
}
};</script><script src="/js/column.js"></script><script src="/js/animation.js"></script><a id="back-to-top" title="回到顶端" href="javascript:;"><i class="fas fa-chevron-up"></i></a><script src="/js/back_to_top.js" defer></script><!--!--><!--!--><!--!--><script src="https://cdn.jsdelivr.net/npm/cookieconsent@3.1.1/build/cookieconsent.min.js" defer></script><script>window.addEventListener("load", () => {
window.cookieconsent.initialise({
type: "info",
theme: "edgeless",
static: false,
position: "bottom-left",
content: {
message: "此网站使用Cookie来改善您的体验。",
dismiss: "知道了!",
allow: "允许使用Cookie",
deny: "拒绝",
link: "了解更多",
policy: "Cookie政策",
href: "https://www.cookiesandyou.com/",
},
palette: {
popup: {
background: "#edeff5",
text: "#838391"
},
button: {
background: "#4b81e8"
},
},
});
});</script><script src="https://cdn.jsdelivr.net/npm/lightgallery@1.10.0/dist/js/lightgallery.min.js" defer></script><script src="https://cdn.jsdelivr.net/npm/lg-zoom@1.3.0/dist/lg-zoom.min.js" defer></script><script src="https://cdn.jsdelivr.net/npm/justifiedGallery@3.8.1/dist/js/jquery.justifiedGallery.min.js" defer></script><script>window.addEventListener("load", () => {
if (typeof $.fn.lightGallery === 'function') {
$('.article').lightGallery({ selector: '.gallery-item' });
}
if (typeof $.fn.justifiedGallery === 'function') {
if ($('.justified-gallery > p > .gallery-item').length) {
$('.justified-gallery > p > .gallery-item').unwrap();
}
$('.justified-gallery').justifiedGallery();
}
});</script><!--!--><!--!--><script type="text/x-mathjax-config">MathJax.Hub.Config({
'HTML-CSS': {
matchFontHeight: false
},
SVG: {
matchFontHeight: false
},
CommonHTML: {
matchFontHeight: false
},
tex2jax: {
inlineMath: [
['$','$'],
['\\(','\\)']
]
}
});</script><script src="https://cdn.jsdelivr.net/npm/mathjax@2.7.9/unpacked/MathJax.js?config=TeX-MML-AM_CHTML" defer></script><!--!--><!--!--><!--!--><script src="/js/main.js" defer></script><div class="searchbox"><div class="searchbox-container"><div class="searchbox-header"><div class="searchbox-input-container"><input class="searchbox-input" type="text" placeholder="想要查找什么..."></div><a class="searchbox-close" href="javascript:;">×</a></div><div class="searchbox-body"></div></div></div><script src="/js/insight.js" defer></script><script>document.addEventListener('DOMContentLoaded', function () {
loadInsight({"contentUrl":"/content.json"}, {"hint":"想要查找什么...","untitled":"(无标题)","posts":"文章","pages":"页面","categories":"分类","tags":"标签"});
});</script></body></html>