东亚银行、岚图汽车带你解锁 AIGC 时代的数字化人才培养各赛道新模式! 了解详情
写点什么

倪朋飞:最好的学习方式一定是带着问题学习 | AMA 集锦

  • 2019-10-17
  • 本文字数:2676 字

    阅读完需:约 9 分钟

倪朋飞:最好的学习方式一定是带着问题学习 | AMA集锦

极客时间2周年特邀 100 位在产品、架构、测试、运维、人工智能、管理、编程语言、运营等各个领域的专家,在 App 内与用户交流互动。


InfoQ 特别整理了微软资深工程师、Kubernetes 项目维护者倪朋飞与用户的互动和问答集锦,分享给大家。



你好,我是倪朋飞,微软资深工程师,Kubernetes 项目维护者,极客时间专栏作者。今天我来尝试 AMA,大家关于 Linux、云计算、容器相关的问题都可以问我,我会尽我所能逐一回答,希望能和极客时间一起把部落打造为行业内最好的技术交流社区,大家燃起来。


Q1:您好,我在实际部署和实践过程中,多 Pod 间,通过 service 通信出现过一个问题:一个 Pod 提供 restful 接口,另一个 Pod 中的应用频繁请求接口(例如 qps 50)会造成接口短时间内没响应,过一会后(大约 10-30 几 s 左右)又正常有响应了。这个可能是什么原因呢?有什么排查思路吗?


倪朋飞:可以排查一下被调 Pod 的资源使用情况。


Q2:老师您好,您觉得 OpenShift 对于工业 IoT 的运维是一个重要提升吗?但是使用微软的 Azure 平台,是不是一个更好更专业的选择?


倪朋飞:嗯,是的,简化了很多应用的管理和运维。使用云的话就更省事了,杂活累活都已经帮你处理好了,只要关注自己业务就可以。


Q3:老师你好,我想问一下 K8s 社区对与发布已经超过 9 个月的版本还会进行 bugfix 吗?K8s 社区每三个月发一个版本,看 GitHub 上说社区只维护最新的三个版本,也就是说一个版本仅维护 9 个月,但在生产环境中以这么快的速度升级有点不太合理,所以想知道用老点的版本会不会有问题。


倪朋飞:不会修复了,建议适当更新,不一定每个版本都需要升级,但最好使用还在维护中的版本。


Q4:倪老师,能说说运维要对 Shell 和 Python 掌握到什么程度呢?以及老师能否推荐一些学习资料和书籍呢?运维是只需要学 Python 自动化运维方向的知识就行还是也需要学习 Python 爬虫和 Web 呢?


倪朋飞:感觉上都要精通吧。这方面的书籍挺多的,到京东搜两本评价还不错的就可以,不用多,实践+原理吃透。我的理解运维一般不需要爬虫知识,但对系统一定要熟悉。


Q5:腾讯云服务器Linux连接不上smtp.partner.outlook.cn(25)。安全策略已经允许了所有出口规则。Linux 对出口规则是怎么限制管理的呢?


倪朋飞:Linux 内部可以用 iptables 来控制访问,外部可以用云上的安全组控制,可以检查下这两个地方是不是有问题。


Q6:老师,有个问题困惑了我很久,什么情况下使用多线程能提高性能?如果 CPU 的核数比线程数少,并且都是执行的计算操作,感觉不一定可以提高系统性能。如果是单核的话,多线程是不是不能提升性能,反而因为上下文的迁入迁出增加性能开销。


倪朋飞:多线程可以利用多个核心,比如单线程的时候 CPU 最多可以用到 100%,而多线程可以用到 800%(假设 8 核心的话)。很多情况下都可以提升性能,因为线程不总是以 CPU 100%运行。


Q7:用 K8s 管理微服务 Spring Cloud 比如管理 300 个微服务有什么好的工具或建议,以及 Pipeline 这块代码 Deploy 到 K8s 中这种几百个微服务怎么区分


倪朋飞:可以用 Helm 来管理,不同服务用 Helm chart 配置。至于区分,最简单的使用不同的 namespace


Q8:朋飞老师好,我在工作中使用 K8s 时遇到了一个问题请教一下:官方的 client-go 客户端(版本是 1.14.7)调用集群健康检查接口时偶尔会超时失联(频率不定有时几天有时几个星期才出现,每次超时 10 几分钟后才能自动恢复)。主动重启应用后即可立即恢复连接。我尝试过在代码中清空 transport 和强制 dialer 均未能解决掉这个问题。


倪朋飞:应该是个已知问题,可以参考一下:Client should expose a mechanism to close underlying TCP connections


Q9:生产环境,怎么样确认一个 Java Spring Boot 项目的 Xmx Xms XSS 到底怎么设置? 以及用容器的话,资源怎么分配? 有这方面的参考或者思路嘛?


倪朋飞:第一个问题,可以考虑先根据系统内存设置一个估计值,然后再根据历史监控调整。第二个问题,Java 8 已经支持了 Docker,JVM 可以根据容器内存限制调整 JVM 内存分配;旧版本需要把 Xmx 设置到容器启动参数中。


Q10:Java 在容器上性能是不是比 Golang 这些损失多?除了 Docker 还有其他生产级容器可选么?除了 K8s 等容器方案,还有别的有潜力的应用发布方案么?


倪朋飞:1. 没有听说,我的理解他们应该是一样的


2. Containerd 现在已经可以独立使用了


3. K8s 现在是最主流的方案,不差钱的话,OpenShift 也不错


Q11:老师能说一下 Docker 源码的阅读顺序吗?毕竟 Docker 包含好几个二进制程序。


倪朋飞:先整体上把组件和内部模块串起来,看看 Docker、Containerd、runC 是怎么交互的,每个组件内部又都有哪些内部模块,最后再各个模块细看吧。


Q12:老师好,我最近在阅读 Docker 的源码,比较艰难:


第一:代码中错综复杂的调用,阅读起来容易失去信心;


第二:对相关知识点的理解不足,以及里面包含大量第三方库,阅读起来很容易阻塞;


第三:代码都能看懂,但并不知其意义何在,其实就是不知作者这么设计的目的。


针对第一点,我尝试用时序图构建调用关系,目前看来效果还不错,还能看出其每个函数的职责;


第二点,我是没办法,必需要去学习相关知识点内容;


第三点,也是比较麻烦的一点,目前我是去搜索相关文档,甚至是作者在提交此处代码的 commit message。


老师对于阅读源码有什么经验或许建议吗?目前我个人的体验是艰辛且苦涩。


倪朋飞:一般是先用一用,熟悉文档和基本概念,然后再从一个主线(比如 Docker run)开始弄清楚组件之间的调用关系,最后再去看每个组件内部的实现细节。画图的方式不错,画出来所有组件、每个组件内部的模块还有模块之间的交互,再去看细节就不容易迷失。


Q13:倪老师,请问 Golang 的协程主要的优势体现在 CPU 密集型上还是 IO 密集型程序上?怎样理解多核心和用户态协程的关系


倪朋飞:第一个问题,协程的主要优势在于并发处理变得简单了,对 CPU 密集型和 IO 密集型都适用。第二个问题,协程一般都会基于多线程和多进程充分利用多个核心,而同一线程上又可以轻易运行大量协程。




2 年时间,极客时间已经为用户交付了 94 门课程,涵盖产品、架构、测试、运维、人工智能、管理、编程语言、运营等多个领域。9 月「部落」上线后,用户又有了新的思考和讨论的聚集地。欢迎你加入「部落」,和大咖们共同探讨技术问题,和我们一起探索新的学习方式。


相关文章:


《如何迅速分析出系统 CPU 的瓶颈在哪里?》


《如何快速排查线上 Linux 系统故障?| 极客时间》


《如何基于 Kubernetes 构建完整的 DevOps 流水线》


了解更多请搜索:倪朋飞Linux容器


2019-10-17 16:061905

评论

发布
暂无评论
发现更多内容

带你全面认识CMMI V2.0(终)——实施落地

IPD产品研发管理

项目管理 软件 CMMI

签约作者可视化

IT蜗壳-Tango

4月日更

nginx.conf核心配置

马里奥

nginx Configuration 配置

Dubbo 编解码那些事

vivo互联网技术

dubbo RPC 序列化 编解码

区块链电子合同签署平台,区块链电子合同解决方案

13828808769

区块链+ #区块链#

智慧公安重点人员管控系统搭建,重点人员管控解决方案

13828808769

智慧交通

可视化运行Python的神器Jupyter Notebook

程序那些事

Python Jupyter Notebook 程序那些事

有了这个数据强一致“利器”,DBA们轻松修复数据对加班“say no”

华为云开发者联盟

存算分离 华为云数据库 GaussDB(for Cassandra) 强一致 开源Cassandra

Linux crontab 命令

一个大红包

Linux linux命令 4月日更

书单|互联网企业面试案头书之产品经理篇

博文视点Broadview

Spark数据倾斜解决方案实战(三)

小舰

4月日更

线上服务 CPU 100%?一键定位 so easy!

Java小咖秀

性能 cpu 负载 线上排障 线上问题

边缘计算应用的价值

浪潮云

云计算

新特性巨量来袭,MindSpore开源一周年实力“狂欢”

华为云开发者联盟

开源 modelarts mindspore 数据预处理加速 分子模拟库

nginx性能优化--配置解析

箭上有毒

nginx 性能测试 4月日更

区块链农产品防伪溯源平台,助力赣南脐橙产业发展

13828808769

区块链+ #区块链#

解读金融高频交易不出错的金手指:分布式事务管理

华为云开发者联盟

微服务 事务 华为云 数据一致性 分布式事务管理

转正还是离职?这是一个问题么?

escray

面试 面经 4月日更

Python OpenCV 边缘滤波保留(EPF)

梦想橡皮擦

Python OpenCV 4月日更

「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之docker部署(八)

crudapi

Docker Vue crud crudapi quasar

CSS 学习笔记(一) 选择器

U2647

CSS CSS小技巧 4月日更

源中瑞区块链Baas平台--助力区块链应用落地

13530558032

架構設計訓練營作業 2

海罗沃德

架构实战营

微服务网关的一点思考

程序员架构进阶

架构 自我提升 api 网关 28天写作 4月日更

【LeetCode】二叉搜索树节点最小距离Java题解

Albert

算法 LeetCode 4月日更

MemVerge CEO表示基于大内存的基础架构将取代性能层级存储

Steven Xu

内存 存储 基础框架 傲腾

领域驱动设计(DDD):领域和子域

xcbeyond

领域驱动设计 DDD 4月日更

css中的动画效果

赫鲁小夫

4月日更

基于拉链式和线性探测式散列表实现Map

Silently9527

Java hashmap 线性探测 拉链式散列表 散列表

HECO火币生态链智能合约Dapp软件系统APP开发

系统开发

聊聊LiteOS事件模块的结构体、初始化及常用操作

华为云开发者联盟

LiteOS 事件 事件结构体 事件掩码

倪朋飞:最好的学习方式一定是带着问题学习 | AMA集锦_语言 & 开发_倪朋飞_InfoQ精选文章