Avatar
吴国华
软件工程师 字节跳动
Go语言/微服务/后端/云原生/技术管理
前言 前段时间,有个朋友问了我这样一个问题: “请教一个问题,假设有一个系统,可用性是99.99%,那么全年宕机时长差不多是5min,假设我现在要调用它,
2023-09-01 创建
2023-09-01 更新
4分钟阅读时长
前言 因为一些原因,我已不再从事飞书音视频业务,目前主要以技术管理者的角色负责飞书日历业务。实际上,这个岗位变动已经持续近一年的时间,这段时间也让我对日
2023-08-25 创建
2023-08-25 更新
10分钟阅读时长
前言 自写下《十字路口的抉择》已过去两年多,我也完成了从一线研发到一线技术管理的角色转变。这之间实在发生了许多的事情,导致我的博客建设荒废许久。 总得来说
2023-08-21 创建
2023-08-21 更新
6分钟阅读时长
前言 笔者在《从零开始学习RTC——音视频概述》的系列开篇文章中对音视频基础元素进行了简要概述。其中,笔者一笔带过了音视频数据在编码压缩之后的传输过程,
2022-03-23 创建
2022-03-23 更新
4分钟阅读时长
前言 笔者自加入字节跳动飞书音视频团队以来,已经度过三年半的时间,见证了飞书视频会议产品矩阵从无到有的全过程。不得不说,飞书的发展可以用一日千里来形容。
2022-03-23 创建
2022-03-23 更新
6分钟阅读时长
前言 博客好久没有更新了,笔者也是深感到精力不足,无法再维系上半年那样的发布频率。不仅如此,创作的热情也与日递减。在此笔者不得不感叹,时间是宝贵的资产,
2021-09-30 创建
2021-09-30 更新
4分钟阅读时长
前言 这一篇博客想聊一些比较感性的话题,笔者工作至今已经满5年多,时常会思考一些作为程序员职业生涯所常见的困扰,这些困扰可能不一定存在着标准答案或者是最
2021-08-18 创建
2021-08-18 更新
5分钟阅读时长
RTC(Real-Time Communication,实时通信)是音视频业务中难度最高、挑战最大的场景。不同于当下热门的直播技术,RTC对实时性的要求
2021-08-13 创建
2021-08-13 更新
8分钟阅读时长
OKR全称Objectives & Key Results,是实现目标管理、推动执行合作的方法论。OKR工作法是风靡全球的优秀实践,它不仅提供了个人在目标规划和
2021-08-07 创建
2021-08-07 更新
5分钟阅读时长
map不仅是Go语言的核心数据结构之一,更是整个编程世界最常见的核心数据结构之一。map描述了一种键与值的映射关系,开发者通常会通过键来查询其对应的值
2021-07-20 创建
2021-07-20 更新
25分钟阅读时长
功能概述 traceroute用于显示源主机到目标主机之间的网关信息。traceroute的实现原理是基于报文的TTL,可以通过TCP/UDP/ICMP
Go语言的并发模型基于CSP(Communicating Sequential Processes)理论。Go的并发哲学强调: “Do not communicate by sharing memory; instead, share memory by communicating." goroutine和ch
2021-06-29 创建
2021-06-29 更新
13分钟阅读时长
如果将Kubernetes比作是云原生时代的云操作系统,那么Helm就是这个云操作系统的包管家。Helm之于Kubernetes,就如同apt之于ub
2021-06-21 创建
2021-06-21 更新
13分钟阅读时长
Zadig是面向开发者设计的开源、高可用 CI/CD:Zadig 强大的云原生多环境能力,轻松实现本地联调、微服务并行构建、集成测试和持续部署。 Zadig 不改变现
2021-06-16 创建
2021-07-21 更新
10分钟阅读时长
slice是golang开发中最常用到的内置类型之一。与数组相比,它具有长度不固定、可动态添加元素的特性。 版本说明 本文涉及到的源码解析部分来源于go官
2021-06-02 创建
2021-06-02 更新
10分钟阅读时长
OKR全称Objectives & Key Results,是实现目标管理、推动执行合作的方法论。OKR工作法是风靡全球的优秀实践,它不仅提供了个人在目标规划和
2021-05-28 创建
2021-06-06 更新
5分钟阅读时长
etcd不仅是Kubernetes的核心存储组件,更是当下云原生时代的存储基石之一。 etcd的诞生背景 2013年,CoreOS公司构建了Contain
2021-05-24 创建
2021-05-24 更新
8分钟阅读时长
对于各行各业而言,数据和服务都始终是企业最为核心的财富。得益于云计算的蓬勃发展,灾备对于中小企业的门槛大大降低,越来越多的业务开始应用灾备策略。 那么,
2021-05-17 创建
2021-05-17 更新
5分钟阅读时长
前言 Engine.IO是Socket.IO更底层的实现基础,要想完整理解Socket.IO必须对Engine.IO协议也有深刻认知。 笔者在《【译】So
2021-05-12 创建
2021-05-12 更新
8分钟阅读时长
前言 Socket.IO是一个优秀的JavaScript实时通信框架。它提供基于事件的双向流通信模型,底层封装了Websocket和HTTP long-p
2021-04-28 创建
2021-04-28 更新
9分钟阅读时长
定时任务CronJob是系统设计中的基础原料,它提供了一种通用的后台任务解决方案。本文将由浅入深讲解CronJob任务调度架构设计中的关键要素。 使用场
2021-04-26 创建
2021-04-27 更新
6分钟阅读时长
Context是Go语言标准库的组成之一,在Goroutine之间传播,能够提供Cancel和KV功能。 Why Context 问题一:Goroutine Cancellation Gorouti
2021-04-20 创建
2021-04-20 更新
10分钟阅读时长
Go语言的依赖管理经历了漫长的迭代和演进,最终随着Go Modules被官方采纳,形成大一统局面。回顾整个历史,Go依赖管理的实践之路其实颇为坎坷,中途
2021-04-16 创建
2021-04-16 更新
15分钟阅读时长
Golang的Error Handling一直备受争议,官方和社区也持续提出各项改进方案。作为语言级别的error支持,Go对error的实现却异常简单
2021-04-15 创建
2021-04-15 更新
7分钟阅读时长
前言 人的一生,会遇到无数次抉择,其中的某些转折点将会产生深远的影响,甚至伴随终生。努力决定下限,但选择决定上限!勤奋和汗水更多被提及,但方向和规划却往
2021-04-13 创建
2021-04-13 更新
6分钟阅读时长
功能概述 ping基于ICMP协议,用于探测目标域名或者IP的连通性。 使用示例 示例一:ping www.baidu.com kevinwu@debian:~$ ping www.baidu.com PING www.a.shifen.com (220.181.38.150) 56(84) bytes of data. 64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=1 ttl=128 time=59.0 ms 64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=2 ttl=128 time=57.5 ms
Kubernetes的源码纷繁复杂,为了能够深入学习其原理,笔者尝试从0到1搭建一套完备的源码调试环境。不同于gdb的全命令行终端调试,本套环境完全基
2021-04-04 创建
2021-04-04 更新
6分钟阅读时长
功能概述 traceroute用于显示源主机到目标主机之间的网关信息。traceroute的实现原理是基于报文的TTL,可以通过TCP/UDP/ICMP
功能概述 ping基于ICMP协议,用于探测目标域名或者IP的连通性。 使用示例 示例一:ping www.baidu.com kevinwu@debian:~$ ping www.baidu.com PING www.a.shifen.com (220.181.38.150) 56(84) bytes of data. 64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=1 ttl=128 time=59.0 ms 64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=2 ttl=128 time=57.5 ms
功能概述 ls用于展示当前目录的文件详情。 使用示例 示例一:显示文件详情 kevinwu@debian:~/go/src/github.com/go-delve/delve$ ls -l 总用量 100 -rw-r--r-- 1 kevinwu kevinwu 1052 1月 22 12:51 appveyor.yml drwxr-xr-x 2 kevinwu kevinwu 4096 1月 22 12:51 assets -rw-r--r-- 1 kevinwu kevinwu 28773 1月 22 12:51 CHANGELOG.md drwxr-xr-x 3 kevinwu kevinwu
Golang在DevOps领域备受欢迎的原因之一,就是能够快速实现命令行工具。无论是多么复杂的源代码,最终都能够只被编译成一个简单的二进制可执行文件,
2021-04-03 创建
2021-04-03 更新
6分钟阅读时长
功能概述 date用于显示当前的系统时间。 使用示例 示例一:显示当前时间 kevinwu@debian:~$ date 2021年 04月 02日 星期五 22:15:05 CST 示例二:显示当前UTC时间 kevinwu@debian:~$ date --utc 2021年 04
Kubernetes的诞生不仅终结了容器编排的纷争,更带动了“云原生”理念的火热。作为CNCF核心项目的Kubernetes同时极大提升了CNCF本身
2021-04-02 创建
2021-04-02 更新
11分钟阅读时长
功能概述 cd用于在Linux目录中跳转。 使用示例 示例一:进入gogogo目录 kevinwu@debian:~$ cd $GOPATH/src/gogogo kevinwu@debian:~/go/src/gogogo$ 示例二:返回父目录 kevinwu@debian:~/go/src/gogogo$ cd .. kevinwu@debian:~/go/src$ 示例三:返回到上一次所在目录 kevinwu@debian:~/go/src$ cd - /home/kevinwu/go/src/gogogo # 同
Linux命令纷繁复杂,多如牛毛。不仅需要背诵记忆,更需要落地实战。“Linux命令备忘录”将会通过笔者日常的积累和记录,归档出一份工具向的系列。 不过
功能概述 pwd用于显示当前所在工作目录的绝对路径。 使用示例 kevinwu@debian:/usr/local/bin$ pwd /usr/local/bin
功能概述 ls用于展示当前目录的文件详情。 使用示例 示例一:显示文件详情 kevinwu@debian:~/go/src/github.com/go-delve/delve$ ls -l 总用量 100 -rw-r--r-- 1 kevinwu kevinwu 1052 1月 22 12:51 appveyor.yml drwxr-xr-x 2 kevinwu kevinwu 4096 1月 22 12:51 assets -rw-r--r-- 1 kevinwu kevinwu 28773 1月 22 12:51 CHANGELOG.md drwxr-xr-x 3 kevinwu kevinwu
功能概述 date用于显示当前的系统时间。 使用示例 示例一:显示当前时间 kevinwu@debian:~$ date 2021年 04月 02日 星期五 22:15:05 CST 示例二:显示当前UTC时间 kevinwu@debian:~$ date --utc 2021年 04
功能概述 cd用于在Linux目录中跳转。 使用示例 示例一:进入gogogo目录 kevinwu@debian:~$ cd $GOPATH/src/gogogo kevinwu@debian:~/go/src/gogogo$ 示例二:返回父目录 kevinwu@debian:~/go/src/gogogo$ cd .. kevinwu@debian:~/go/src$ 示例三:返回到上一次所在目录 kevinwu@debian:~/go/src$ cd - /home/kevinwu/go/src/gogogo # 同
一些感叹 转眼间就连2021年都已经过去四分之一了,我也惊恐地发现自己的职业生涯已经走过接近5年,35岁中年危机似乎离自己越来越近。对于身处互联网行业的
2021-03-30 创建
2021-03-30 更新
8分钟阅读时长