看热讯:火山引擎徐鑫:工程师如何与云原生共同成长

嘉宾 | 徐鑫   整理 | 姜君泽

出品 | CSDN云原生

技术是不断发展的,云原生技术也是一个不断更新迭代的过程,面对云原生迭代过程中所带来的变化与挑战,工程师应该如何同云原生一起成长呢?


【资料图】

2022年7月26日,在CSDN云原生Meetup·广州站上,火山引擎服务端架构师徐鑫结合自身情况带来了分享。

什么是云原生

云原生不只是一系列技术的组合,而是一套适用于云计算时代的IT架构与方法论,包括容器化、微服务、DevOps、持续交付、声明式API、自动化等主题。它的核心是通过优化应用的架构设计、开发流程和部署、运维方式,让云计算的弹性、灵活、自动化优势得到充分的发挥,让工程管理和基础设施管理变得更加高效和自治,从而帮助管理者将精力集中到业务创新之中。

云原生旨在帮助企业在各种环境去构建、运行可伸缩的应用,帮助工程师搭建弹性、易于管理、可观测且内部松耦合的系统,让工程师用更少的精力Cover更大、更频繁的变更。

云原生技术使企业能够在现代动态环境(如公共云、私有云和混合云)中构建和运行可扩展的应用程序,容器、服务网格、微服务、不可变的基础设施和声明式的API就是这种方法的典范。这些技术能够使松散耦合的系统具有弹性、可管理和可观察性,通过与自动化相结合,让工程师能够以最小的工作量频繁地、可预测地做出影响巨大的改变。

云原生带来的变化

DevOps(简易)

下图是传统的在本地部署文件的方式:用户直接与本地建立连接,打包文件拷贝到生产环境中。

虽然这样的部署方法涉及组件少、学习成本低,但也存在诸多问题:

当程序报错或用户反馈问题时,程序几乎不可观测,若想观测程序各节点的实现情况,需要人工在对应的SDK上埋点;

部署环境对特定组件具有强依赖性,如实现音频、视频时,需要使用解析二进制的特定组件;

部分构建部署需依靠人工,如将文件搬运到云服务上。

DevOps(高度云原生)

高度云原生化后的文件部署流程如上图所示,研发人员有自己的VCS系统,通过系统将自定义的脚本流程触发到CI/CD系统中进行打包,产生ReleaseHub。ReleaseHub用于存储不同脚本的版本,并放到容器的镜像Hub中。如果脚本通过自动化测试,那就可以部署到容器平台中,实现全自动化。相比于传统部署方案的优势在于:

构建、质量检测、打包、扩缩容等全自动化;

程序发布有可观测指标与告警;

构建产物版本化,随时回滚。

但在这个过程里,任何一个系统在开发时都允许众多开发人员同时参与进来,这会使得学习成本、维护成本及部署成本都非常高。

请求链路(简易)

传统请求通过LB/Gateway,来区别内部和外部边界网络,涉及组件少,学习成本低。

但这样的单体架构存在诸多劣势:

任意功能(业务or通用)发布变更会导致整个单体服务发布;

缺少流量治理能力,灰度、蓝绿部署等实施困难;

没有数据库中间件,一些通用能力(分库分表、数据分流等)只能耦合到服务中。

请求链路(高度云原生)

高度云原生化后的请求链路过程如上图所示,用户发出请求首先通过边缘节点和中继节点进行动态加速,再通过LB进入到内部。随后业务网关提供功能需求,进而通过Mesh进行资源和服务编排到微服务中,最后访问DB。云原生化后的链路请求过程有以下优点:

完善的流量治理能力,可以很好地支持灰度发布、蓝绿部署、单元化等;

微服务使得系统具备局部发布的能力,降低风险、提升效率;

数据库中间件可以为业务降低心智负担。

其缺点依旧是学习成本、维护成本、部署成本颇高,需要研发人员进一步的去学习。

云原生带来的挑战

虽然转型云原生体系能够解决大量问题,但也带来了挑战,其中,访问服务失败和传输速度慢是两类最常见的问题。

恶意攻击、配置不当、资源竞争会造成访问服务失败。

恶意攻击

容器本身遭受攻击,FD耗尽;

宿主机其他服务遭受攻击,Conntrack被写满,IPVS无法正常工作。

配置不当

内核的连接队列太小,在高并发情况下,Sync包被丢弃;

进程可用FD数配置太少,无法打开新的FD进行请求;

配置了tcp_recycle且链路中存在NAT。

资源竞争

宿主机带宽被其他服务消耗完;

宿主机软中断的CPU被打满;

数据包数量过大时,网络质量也会下降很快。

传输速度过慢的情形一般由资源竞争、组件瓶颈、配置不当而导致。

资源竞争

带宽小或与其他用户有竞争;

端到端延迟过大。

组件瓶颈

例如,一些组件默认会将请求写入内存和本地磁盘,再转发到后端;

本身存在缺陷,传输速度过快时,内存释放不及时导致OOM;

读写Buffer共用一块,导致锁竞争剧烈。

配置不当

读写缓冲区设置过小和BDP不匹配。

如何同云原生一起成长

保持好奇

具有钻研精神,深挖问题根因,了解社区热点项目背景、目标及解决方式,不着急给出方案,多对比社区项目的实现方法。

乐于分享

多与他人交流,分享对技术的见解,及时将有价值的东西沉淀为文档。

独立思考

不人云亦云,不套用他人意见作为自己的见解,多实践、验证并总结经验,在保持独立思考的同时也要认真聆听。


本篇文章整理来自@姜君泽,由CSDN修订完成 。

想要参与到专家技术分享的一手整理过程中并获得相应权益吗?关注【CSDN云原生】公众号并回复关键词“志愿者”了解详情,我们期待你的加入~

推荐DIY文章
“高通公司携手无锡合作伙伴释放5G智慧医疗应用潜能”获评2022年服贸会“科技创新服务示范案例”
高通全球高级副总裁钱堃:5G技术持续赋能服务贸易等传统行业升级转型
天天播报:iphone8无法连接到app store怎么办?苹果iphone8连接不到app store解决方法
最资讯丨iOS13.5正式版好不好用 iOS13.5正式版升级体验
每日快报!三星手机怎么进入挖煤模式(不用按键也可进入挖煤)
焦点快播:锤子坚果R1手机整体做工如何? 锤子坚果R1全面拆机图解
精彩新闻

超前放送