-
Notifications
You must be signed in to change notification settings - Fork 35
/
index.html
355 lines (208 loc) · 15.8 KB
/
index.html
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<title>Hang Jiang</title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width,minimum-scale=1">
<meta name="description" content="nodejh (Hang Jiang), Software Engineer">
<meta name="generator" content="Hugo 0.82.0" />
<META NAME="ROBOTS" CONTENT="INDEX, FOLLOW">
<link rel="stylesheet" href="/css/style.css">
<link rel="shortcut icon" href="/images/favicon.ico" type="image/x-icon" />
<script type="application/javascript">
var doNotTrack = false;
if (!doNotTrack) {
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', 'UA-84989670-1', 'auto');
ga('send', 'pageview');
}
</script>
<script async src='https://www.google-analytics.com/analytics.js'></script>
<link href="/index.xml" rel="alternate" type="application/rss+xml" title="Hang Jiang" />
<link href="/index.xml" rel="feed" type="application/rss+xml" title="Hang Jiang" />
</head>
<body>
<nav class="navigation">
<a href="/posts">归档</a>
<a href="/tags">标签</a>
<a href="/about">关于</a>
<a class="button" href="https://nodejh.com/index.xml">订阅</a>
</nav>
<main class="main">
<header class="profile">
<img class="avatar" alt="avatar" src="/images/avatar.png" />
<h1>Hang Jiang</h1>
<h2>Software Engineer / Serverless / Kubernetes</h2>
</header>
<div id="list-page">
<section class="item">
<div>
<h1 class="title"><a href='/posts/druid-%E8%8E%B7%E5%8F%96%E8%BF%9E%E6%8E%A5%E5%BC%82%E5%B8%B8%E5%AF%BC%E8%87%B4%E5%BA%94%E7%94%A8%E6%8C%82%E8%B5%B7%E5%8E%9F%E5%9B%A0%E5%88%86%E6%9E%90/'>Druid 获取连接异常导致应用挂起原因分析</a></h1>
<div class ="date">
<time datetime="2021-12-20 19:53:13 +0800 CST">2021/12/20</time>
</div>
</div>
<div class="summary">1. 背景 🔗1.1 现象 🔗2021.12.16 凌晨,我们的应用数据库因故发生了主备切换,之后某个 Pod 就持续报错 GetConnectionTimeou</div>
</section>
<section class="item">
<div>
<h1 class="title"><a href='/posts/%E5%A6%82%E4%BD%95%E6%9E%84%E5%BB%BA-go-%E5%BA%94%E7%94%A8%E7%9A%84-docker-%E9%95%9C%E5%83%8F/'>如何构建 Go 应用的 Docker 镜像</a></h1>
<div class ="date">
<time datetime="2021-11-30 15:07:46 +0800 CST">2021/11/30</time>
</div>
</div>
<div class="summary">在部署 Go 应用时,我们通常会使用 Docker 镜像来部署,那么如何构建一个 Go 应用的 Docker 镜像呢?镜像构建过程中有没有什么最佳实践呢? 这正是本文想要讲解的内容。</div>
</section>
<section class="item">
<div>
<h1 class="title"><a href='/posts/%E4%BD%BF%E7%94%A8-prometheus-grafana-%E7%9B%91%E6%8E%A7-k8s-%E4%B8%8A%E7%9A%84-spring-boot-%E5%BA%94%E7%94%A8/'>使用 Prometheus + Grafana 监控 k8s 上的 Spring Boot 应用</a></h1>
<div class ="date">
<time datetime="2021-10-26 10:20:01 +0800 CST">2021/10/26</time>
</div>
</div>
<div class="summary">背景 🔗 本文主要介绍如何使用 Prometheus 和 Grafana 可视化监控运行在 k8s 上的 Spring Boot 应用,监控指标包括 CPU、内存、线程信息、日志信息、HTTP 请求、JVM 等。 技术</div>
</section>
<section class="item">
<div>
<h1 class="title"><a href='/posts/%E4%BD%BF%E7%94%A8-kubernetes-%E8%BF%9B%E8%A1%8C-leader-%E9%80%89%E4%B8%BE/'>使用 Kubernetes 进行 Leader 选举</a></h1>
<div class ="date">
<time datetime="2021-09-16 14:33:33 +0800 CST">2021/09/16</time>
</div>
</div>
<div class="summary">概述 🔗k8s 简化了我们在集群上部署、运维应用的流程。在 k8s 上,我们可以很方便地部署一个分布式应用。以 Deployment 为例,应用就由多个 Pod 组成,基于 Pod 的伸缩能</div>
</section>
<section class="item">
<div>
<h1 class="title"><a href='/posts/flink-on-k8s-checkpoint-%E7%9A%84%E6%8C%81%E4%B9%85%E5%8C%96%E5%AD%98%E5%82%A8/'>Flink on k8s: Checkpoint 的持久化存储</a></h1>
<div class ="date">
<time datetime="2021-08-02 19:30:00 +0800 CST">2021/08/02</time>
</div>
</div>
<div class="summary">将 Flink 应用部署到 k8s 上时,为了实现任务高可用,我们就需要将 checkpoint、savepoint 以及 Job Manager meta data 等数据持久化存储下来,而不是简单地</div>
</section>
<section class="item">
<div>
<h1 class="title"><a href='/posts/flink-%E4%BB%BB%E5%8A%A1%E5%86%85%E5%AD%98%E6%B3%84%E6%BC%8F%E5%AF%BC%E8%87%B4%E9%A2%91%E7%B9%81-full-fc-%E5%AF%BC%E8%87%B4-cpu-%E6%9A%B4%E5%A2%9E%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5/'>Flink 任务内存泄漏导致频繁 Full FC 导致 CPU 暴增问题排查</a></h1>
<div class ="date">
<time datetime="2021-07-30 17:00:00 +0800 CST">2021/07/30</time>
</div>
</div>
<div class="summary">最近发现部署在 k8s 上的 Flink 每运行十几个小时就会卡住,导致消费延迟、上游数据积压。消费延迟较长时间后(时间不固定,可能十几分钟,也可能是一小时),</div>
</section>
<section class="item">
<div>
<h1 class="title"><a href='/posts/%E4%BB%8E%E9%9B%B6%E7%BC%96%E5%86%99%E7%AC%AC%E4%B8%80%E4%B8%AA-flink-%E5%BA%94%E7%94%A8/'>从零编写第一个 Flink 应用</a></h1>
<div class ="date">
<time datetime="2021-03-03 22:44:10 +0800 CST">2021/03/03</time>
</div>
</div>
<div class="summary">Apache Flink 是一个流计算引擎。本文主要介绍如何从零编写一个统计单词出现次数的 Flink 应用(后面简称为 WordCount)。由于 Flink 概念很多,对初学者会造成极</div>
</section>
<section class="item">
<div>
<h1 class="title"><a href='/posts/serverless-%E5%B0%86%E4%BD%BF%E5%89%8D%E5%90%8E%E7%AB%AF%E4%BB%8E%E5%88%86%E7%A6%BB%E5%86%8D%E5%BA%A6%E8%B5%B0%E5%90%91%E8%9E%8D%E5%90%88/'>Serverless 将使前后端从分离再度走向融合</a></h1>
<div class ="date">
<time datetime="2019-05-17 12:00:00 +0800 CST">2019/05/17</time>
</div>
</div>
<div class="summary">近日,Serverless 作为新兴的架构模式,与其相关的话题被讨论的如火如荼。Serverless 不需部署、配置和管理传统服务器,这一概念的</div>
</section>
<section class="item">
<div>
<h1 class="title"><a href='/posts/serverless-%E6%8E%80%E8%B5%B7%E6%96%B0%E7%9A%84%E5%89%8D%E7%AB%AF%E6%8A%80%E6%9C%AF%E5%8F%98%E9%9D%A9/'>Serverless 掀起新的前端技术变革</a></h1>
<div class ="date">
<time datetime="2019-05-15 12:00:00 +0800 CST">2019/05/15</time>
</div>
</div>
<div class="summary">最近关于 Serverless 的讨论越来越多。看似与前端关系不大的 Serverless,其实早已和前端有了颇深渊源,并且将掀起新的前端技术变革。本文主要就根据个</div>
</section>
<section class="item">
<div>
<h1 class="title"><a href='/posts/wechat-scan-qr-code-to-login/'>基于公众号的微信扫码登陆实现</a></h1>
<div class ="date">
<time datetime="2017-12-09 21:42:31 +0800 CST">2017/12/09</time>
</div>
</div>
<div class="summary">注:文中阐述的方案是一个可以解决问题但不是最优的方案。改进之处在文末。 微信扫码登陆的主要目的有两个,一是方便用户,扫码即可登陆,不需再记忆帐</div>
</section>
<div class="pagination">
<span class="next">
<a href="/page/2/">
上一页 <span class="arrow">→</span>
</a>
</span>
</div>
</div>
</main>
<footer id="footer">
<div id="social">
<a class="symbol" href="https://github.com/nodejh" rel="me" target="_blank">
<svg fill="#bbbbbb" width="28" height="28" viewBox="0 0 72 72" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Github</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Social-Icons---Rounded-Black" transform="translate(-264.000000, -939.000000)">
<g id="Github" transform="translate(264.000000, 939.000000)">
<path d="M8,72 L64,72 C68.418278,72 72,68.418278 72,64 L72,8 C72,3.581722 68.418278,-8.11624501e-16 64,0 L8,0 C3.581722,8.11624501e-16 -5.41083001e-16,3.581722 0,8 L0,64 C5.41083001e-16,68.418278 3.581722,72 8,72 Z" id="Rounded" fill="#bbbbbb"></path>
<path d="M35.9985,13 C22.746,13 12,23.7870921 12,37.096644 C12,47.7406712 18.876,56.7718301 28.4145,59.9584121 C29.6145,60.1797862 30.0525,59.4358488 30.0525,58.7973276 C30.0525,58.2250681 30.0315,56.7100863 30.0195,54.6996482 C23.343,56.1558981 21.9345,51.4693938 21.9345,51.4693938 C20.844,48.6864054 19.2705,47.9454799 19.2705,47.9454799 C17.091,46.4500754 19.4355,46.4801943 19.4355,46.4801943 C21.843,46.6503662 23.1105,48.9634994 23.1105,48.9634994 C25.2525,52.6455377 28.728,51.5823398 30.096,50.9649018 C30.3135,49.4077535 30.9345,48.3460615 31.62,47.7436831 C26.2905,47.1352808 20.688,45.0691228 20.688,35.8361671 C20.688,33.2052792 21.6225,31.0547881 23.1585,29.3696344 C22.911,28.7597262 22.0875,26.3110578 23.3925,22.9934585 C23.3925,22.9934585 25.4085,22.3459017 29.9925,25.4632101 C31.908,24.9285993 33.96,24.6620468 36.0015,24.6515052 C38.04,24.6620468 40.0935,24.9285993 42.0105,25.4632101 C46.5915,22.3459017 48.603,22.9934585 48.603,22.9934585 C49.9125,26.3110578 49.089,28.7597262 48.8415,29.3696344 C50.3805,31.0547881 51.309,33.2052792 51.309,35.8361671 C51.309,45.0917119 45.6975,47.1292571 40.3515,47.7256117 C41.2125,48.4695491 41.9805,49.9393525 41.9805,52.1877301 C41.9805,55.4089489 41.9505,58.0067059 41.9505,58.7973276 C41.9505,59.4418726 42.3825,60.1918338 43.6005,59.9554002 C53.13,56.7627944 60,47.7376593 60,37.096644 C60,23.7870921 49.254,13 35.9985,13" fill="#FFFFFF"></path>
</g>
</g>
</g>
</svg>
</a>
<a class="symbol" href="https://stackoverflow.com/users/4518882/nodejh" rel="me" target="_blank">
<svg fill="#bbbbbb" width="28" height="28" viewBox="0 0 72 72" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>stackoverflow</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Social-Icons---Rounded-Black" transform="translate(-488.000000, -1163.000000)">
<g id="stackoverflow" transform="translate(488.000000, 1163.000000)">
<path d="M8,72 L64,72 C68.418278,72 72,68.418278 72,64 L72,8 C72,3.581722 68.418278,-8.11624501e-16 64,0 L8,0 C3.581722,8.11624501e-16 -5.41083001e-16,3.581722 0,8 L0,64 C5.41083001e-16,68.418278 3.581722,72 8,72 Z" id="Rounded" fill="#bbbbbb"></path>
<path d="M42.0860128,53.5922927 L22.9745951,53.6011499 L22.9729497,49.5538824 L42.0835447,49.5440929 L42.0860128,53.5922927 L42.0860128,53.5922927 Z M55,30.6708298 L51.7306912,12 L47.7087256,12.6920259 L50.9775643,31.3628557 L55,30.6708298 L55,30.6708298 Z M42.5455518,44.3547147 L23.5156994,42.616026 L23.1410164,46.6470941 L42.1712214,48.3841513 L42.5455518,44.3547147 L42.5455518,44.3547147 Z M43.8009984,39.0731519 L25.3459811,34.1539179 L24.285633,38.0621508 L42.7419431,42.9819676 L43.8009984,39.0731519 L43.8009984,39.0731519 Z M46.2103463,34.4436411 L29.7494464,24.8164635 L27.6748215,28.3015328 L44.1365441,37.9292931 L46.2103463,34.4436411 L46.2103463,34.4436411 Z M50.2466504,31.6088756 L46.8745036,33.8883189 L36.106599,18.2318456 L39.4792159,15.9517031 L50.2466504,31.6088756 Z M45.3315807,40.2784283 L48.5799693,40.2784283 L48.5799693,60 L17,60 L17,40.2784283 L20.2648427,40.2784283 L20.2648427,56.8243495 L45.3315807,56.8243495 L45.3315807,40.2784283 Z" fill="#FFFFFF"></path>
</g>
</g>
</g>
</svg>
</a>
<a class="symbol" href="https://twitter.com/nodejh" rel="me" target="_blank">
<svg fill="#bbbbbb" width="28" height="28" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="438.536px" height="438.536px" viewBox="0 0 438.536 438.536" style="enable-background:new 0 0 438.536 438.536;"
xml:space="preserve">
<g>
<path d="M414.41,24.123C398.333,8.042,378.963,0,356.315,0H82.228C59.58,0,40.21,8.042,24.126,24.123
C8.045,40.207,0.003,59.576,0.003,82.225v274.084c0,22.647,8.042,42.018,24.123,58.102c16.084,16.084,35.454,24.126,58.102,24.126
h274.084c22.648,0,42.018-8.042,58.095-24.126c16.084-16.084,24.126-35.454,24.126-58.102V82.225
C438.532,59.576,430.49,40.204,414.41,24.123z M335.471,168.735c0.191,1.713,0.288,4.278,0.288,7.71
c0,15.989-2.334,32.025-6.995,48.104c-4.661,16.087-11.8,31.504-21.416,46.254c-9.606,14.749-21.074,27.791-34.396,39.115
c-13.325,11.32-29.311,20.365-47.968,27.117c-18.648,6.762-38.637,10.143-59.953,10.143c-33.116,0-63.76-8.952-91.931-26.836
c4.568,0.568,9.329,0.855,14.275,0.855c27.6,0,52.439-8.565,74.519-25.7c-12.941-0.185-24.506-4.179-34.688-11.991
c-10.185-7.803-17.273-17.699-21.271-29.691c4.947,0.76,8.658,1.137,11.132,1.137c4.187,0,9.042-0.76,14.56-2.279
c-13.894-2.669-25.598-9.562-35.115-20.697c-9.519-11.136-14.277-23.84-14.277-38.114v-0.571
c10.085,4.755,19.602,7.229,28.549,7.422c-17.321-11.613-25.981-28.265-25.981-49.963c0-10.66,2.758-20.747,8.278-30.264
c15.035,18.464,33.311,33.213,54.816,44.252c21.507,11.038,44.54,17.227,69.092,18.558c-0.95-3.616-1.427-8.186-1.427-13.704
c0-16.562,5.853-30.692,17.56-42.399c11.703-11.706,25.837-17.561,42.394-17.561c17.515,0,32.079,6.283,43.688,18.846
c13.134-2.474,25.892-7.33,38.26-14.56c-4.757,14.652-13.613,25.788-26.55,33.402c12.368-1.716,23.88-4.95,34.537-9.708
C357.458,149.793,347.462,160.166,335.471,168.735z"/>
</g>
</svg>
</a>
</div>
<div class="copyright">
© Copyright
2021
<span class="split">
<svg fill="#bbbbbb" width="15" height="15" version="1.1" id="heart-15" xmlns="http://www.w3.org/2000/svg" width="15px" height="15px" viewBox="0 0 15 15">
<path d="M13.91,6.75c-1.17,2.25-4.3,5.31-6.07,6.94c-0.1903,0.1718-0.4797,0.1718-0.67,0C5.39,12.06,2.26,9,1.09,6.75
	C-1.48,1.8,5-1.5,7.5,3.45C10-1.5,16.48,1.8,13.91,6.75z"/>
</svg>
</span>
Hang Jiang
</div>
<div class="powerby">
Powered by <a href='http://www.gohugo.io/'>Hugo</a> Theme By <a href='https://github.com/nodejh/hugo-theme-cactus-plus'>nodejh</a>
</div>
</footer>
</body>
</html>