写点什么

倪朋飞:最好的学习方式一定是带着问题学习 | 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:062254

评论

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

原生JavaScript灵魂拷问(二),你能全部答对吗?

战场小包

JavaScript 前端 4月月更

已开源!分发业务看过来【跨端动态模板引擎】

阿里巴巴文娱技术

ios android 开源 开发工具 移动开发

三生万物,万企明道|明道云发布三周年

明道云

蒙牛乳业加入星策开源社区,携手推动企业智能化转型建设

星策开源社区

人工智能 机器学习 企业数智化 智能化转型

【高并发】如何使用互斥锁解决多线程的原子性问题?这次终于明白了!

冰河

并发编程 多线程 协程 异步编程 精通高并发系列

大数据培训Spark SQL知识点与实战分析

@零度

spark 大数据开发

总结JAVA全栈知识点,七面阿里成功斩获P8Offer

Java架构追梦

程序员 java面试 后端开发

恒源云(Gpushare)_VSA:一个可变形尺寸窗口自注意力模型

恒源云

深度学习 GPU算力

百度ToB垂类账号权限平台的设计与实践

百度开发者中心

使用xdebug调试php详细教程

CRMEB

没想到我也可以入职阿里,两年CRUD,二本毕业,备战两个月面试阿里,侥幸拿下offer定

Java架构追梦

Java 程序员 后端开发

国产ETL自动化运维调度工具 TASKCTL 控制容器概述

敏捷调度TASKCTL

大数据 DevOps 分布式 自动化运维 Kafka ETL

【三级等保】三级等保办理流程经验大分享

行云管家

网络安全 等保 等级保护 等保三级 等保2.0

KMRE 再升级!你们想要的功能它来了~

优麒麟

开源 软件 安卓 优麒麟 KMRE

我以为自己MySQL够牛逼了,直到看到了Alibaba的面试题,是我不配了。。

Java架构追梦

Java 后端开发 MySQL 运维 程序员面试

【架构视角】一篇文章带你彻底吃透Spring

潘大壮

spring 后端 springboot 后端开发

划重点,2022 常见的面试题和八股文都为大家总结出来了

Java架构追梦

程序员 java面试 后端开发 Java面试八股文

Apache APISIX Summit ASIA 2022——5月20日开启开源生态探索之旅

API7.ai 技术团队

网关 API网关 APISIX 开源生态 summit

云电脑的四重守护,安全有谱

天翼云开发者社区

安全 云电脑

蚂蚁三面被挂,幸获内推,历经5轮终于拿到口碑offer

Java架构追梦

java面试 后端开发 程序员面试 大厂Offer

【堡垒机】2022年网络安全堡垒机厂商排名看这里!

行云管家

网络安全 堡垒机 移动云 网络安全堡垒机

神秘男嘉宾登场,引爆全场灯光?

龙智—DevSecOps解决方案

Atlassian Confluence confluence插件

基于SpringBoot2+redis+Vue商管系统,秒杀等,可二次开发接私活

Java架构追梦

Java spring 后端开发

已开源,就等你来!优酷动态模板研发体系为分发提效30%!

阿里巴巴文娱技术

开源 前端 开发工具 移动开发 开发框架

低通信量是筛选分布式多方安全计算常用安全协议方案的先决条件

易观分析

安全多方计算 低通信量

浅谈小程序开源业务架构建设之路

百度开发者中心

OneFlow学习笔记:从OpExprInterpreter到OpKernel

OneFlow

数据结构 学习笔记 虚拟机 代码 oneflow

知乎疯传3W次,堪称最强Java面试题,顺利拿下京东T5的35K*16 薪 Offer...

Java架构追梦

程序员 java面试 offer 后端开发

netty系列之:可能有人听过ThreadLocal,但一定没人听过ThreadLocal对象池

程序那些事

Java Netty 程序那些事 4月月更

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