2020年回顾
2020让我受益最大的资料 📚
翻开印象笔记,我回顾了一下最有价值的资料:
Service Mesh
Container
- Under the hood of Docker — Janos Pasztor
- Understanding resource limits in kubernetes: cpu time
- CPU limits and aggressive throttling in Kubernetes
- Unthrottled: Fixing CPU Limits in the Cloud
- Under the hood of Docker
- All things Linux containers
- Implementing Container Runtime Shim
- Seccomp in Kubernetes
- Containerization Mechanisms: Cgroups
Linux
- Learn about different I/O Access Methods and what we chose for Scylla
- [Book: BPF Performance Tools]
GraphQL
学到的技术⛷
-
Docker/Container 实现原理和架构的入门
-
Kubernetes 环境下应用性能问题 Troubleshooting 基本思路和方法。做了一些小工具。
-
Kubernetes + Prometheus 的基本知识和应用
-
应用了 BCC/eBPF
-
Jaeger Distributed Tracing 后端数据处理流程和简单的 tracing 数据程 spark 分析方法
-
Golang 上手
实作了一个 SMS/SMPP 模拟器,应用于公司压测环境中。运用 Kubernetes 的 go-client,在 kubectl-debug 基础上定制开发了一个公司环境适用的 pod debug 工具
-
启动了 Distributed Tracing 分析 + Neo4j 图数据库,做 API 依赖分析和性能分析的实践
技术负债😥
在工作或学习过程中,总有一些东西有书到用时方恨少的感觉。
-
Linux 的性能指标相关的原理和意义
故事是这样的:
TLDR;
在 Cassandra 数据库则优化过程中有以下情况:
- Disk IO 一直奇高
- BCC/eBPF 查看到的 PageCache 命中率基本为0
- major page faults 一直高
当时只觉这个指标是不正常,但为知道为何。调整数据库参数,不使用mmap方法读文件后,问题得以解决。但原理直到后面在网上找到关于mmap文件预读的资料,才有个方向。
整个过程用时数周,不知道搜索了多少零散的文章。回想起来,还是 Linux 基本功不好,Tracing 方法不系统。
Linux 的性能指标很多,一个性能指标意味着什么,什么范围是合理的,我缺乏认识。
-
Kubernetes/cadvisor 的性能指标原理和意义
-
Istio/Envoy 的深入认识
这里也是一个故事。一段时间以来,一个 Service 的多 POD 的响应时长不均,慢POD的响应时间表,是快POD 的一倍。因为这个 Server 的 POD Spec 配置了 cpu limit。一直认为原因是 POD 所在的 worknode 的整体 CPU 压力不同做成的。但问题一直解决不了。后来发现,load blancer 的策略从 ROUND_ROBIN 调整为 LEAST_CONN 后,症状解决了。但还是基础知识不过关,一直没定位出根本原因,只是大大减轻了症状。归根到底,还是对用到的东西的认识不足。
-
Spark/Python 的数据分析能力。在分析压测的 distributed tracing 数据时,明白到这个技能的重要性。
非技术的东西⛪
- 不能public地写
2021年想法🏃
想学习的技术🤹
对未来技术方向的想法☁
-
基于 eBPF 的网络组织方法,会大部分取代现在基于 iptables/netfilter 的方法
-
Distributed Tracing 和 应用的 profile 与 OS 层的 eBPF tracing 有机整合,成为下一个 Cloud Native 全链路监控的主力。基于拓扑思想的监控会更广泛使用。
-
当我们说 Kubernetes 时,将会更多认为它是一个 Cloud Native 的规范和思想,而非现在的实现。Cloud Native 世界,迎来更多的分裂。
-
Cloud Native 的开发者体验会更好
之前,Cloud Native 走得太快。开发者们的开发知识门槛,环境门槛,Troubleshooting 门槛等越来越高。技术的大众化,最后一定需要降低这些门槛的。
-
Cloud Native Computing Foundation (CNCF) 可能会成为下一个 J2EE/JEE 。官僚与腐败。
保质期长的基础知识
每个后端开发,都有一个研究操作系统的情结。Me Too。从 1993 年小学二年级,我写下第一 Basic 代码到现在。很遗憾,赢在起跑线,输在了半路。对电脑程式是如何跑起来的,数据是如何流转的,还只是一知半解。在后浪打前浪,前浪死在沙滩上的IT界,一个转不了管理的人,还是学点保质期和经验要求比较高的基础知识,才可以保住不被 Fired。
今年要有个深入了解的书:
- Understanding The Linux Kernel 3rd Edition
- BPF Performance Tools
- OReilly Programming Kubernetes
坚持写好自己的 Blog
我应该算是国内第二批建个人主页的人。从1998年有自己的人个主面,域名。但还是那句,赢在起跑线,输在起跑后。放弃了技术沉淀、积累、传播,只把技术作为一个拿来即用,用完即弃的工具的话,认识深度,行业的影响力是建立不起来的。这样最后可能只有放弃技术专家线,转到业务分析线或管理线,但本人的确没这个天赋。所以,一直以来,我都在想,如何在50岁时,还能保住现在的研发饭碗。
在50岁前,花10年时间,重新学习、积累一个良好的知识体系,可能是唯一我能选择的出路了。而要坚持这条路,可能唯一的驱动力,就是每周写下自己的学习积累,也锻炼自己的语言组织,技术PUSH 的能力。也先多谢大家的支持。2021到2030。谢谢。🍻