作者介绍: 林晓峰: @Breezewoods 前新浪网高级系统开发工程师,关注网络,关注高性能,关注Linux内核。 李晓栋: 新浪网研发中心高级技术经理,有十年的互联网工作经验,是“新浪软件负载均衡系统” 和“
新浪操作系统管理与优化”方面的重要开拓者. 在fastsocket项目中,发挥了资源协调、技术方案评估、稳定性测试的作用,也是FastOS
计划和管理理念的提出者。 1.简单介绍一下你自己(技术背景、工作经历、学习经历)
Hello,我是林晓峰,很高兴可以通过开源中国这个平台和大家交流。我本科就读大连理工大学,硕士北京邮电大学,2009年在新浪网基础架构部实习,毕
业后留在新浪一直工作到2014年10月。对高性能网络和服务器端软件一直有浓厚兴趣,持续关注和开发Linux网络协议栈。 2.简单介绍一下Fastsocket项目的发展历程 新浪使用Haproxy提供七层交换服务,Fastsocket
最初源于新浪生产环境中对于七层交换性能提升的迫切需求。当时我们面临两条技术路线选择,一是:以DPDK等技术为依托,实现完整的用户态协议栈
,二是:对现有内核协议栈及相关实现进行潜能挖掘。基于对人力、稳定性、开发周期及后续维护成本等方面的评估,我们选择了后者。经过数次版本迭代后,形成
了今天大家所看到的fastsocket。在这个过程中,我们有幸协调到了来自Intel、清华大学OS中心、哲思自由软件社区
的大力支持和深度合作,并由Fastsocket项目衍生出了FastOS计划。 3.能否概括一下Fastsocket核心特点? 首先Fastsocket是高性能的,尤其体现在多核扩展性上,充分发挥出多核处理器的性能。
然后是Fastsocket的通用性,因为它本质是对内核网络协议栈的系列优化,这些优化对应用程序是透明的。例如Haproxy、Nginx和
Redis这些应用已经过我们实测,都可以在Fastsocket上直接稳定运行,且都可以获得显著的性能提升。最后,Fastsocket是运维友好
的,可以对对指定的应用启动Fastsocket,疑是故障时可迅速的回退到标准内核。正是以上的特点,使得Fastsocket可以在新浪七层交换的生
产环境上全面部署。 4.哪些应用场景适合Fastsocket? Fastsocket解决的是内核网络协议栈的效率问题,所以网络IO密集的应用场景最合适使用Fastsocket。例如:代理服务器、CDN和内存型的数据缓存。新浪七层负载均衡服务已经在Haproxy生产环境上全面部署Fastsocket,单机系统容量提升近一倍,并且稳定运行至今。个人推荐,Haproxy的使用者如果有性能提升的需要,可以尝试使用Fastsocket。 5. 能否介绍一下Fastsocket在研发过程的重要阶段? 很幸运可以从零开始研发Fastsocket这个项目,并最终推动项目应用到新浪的生产环境中。 整体上,Fastsocket项目的研发可以分为以下几个阶段:技术方案选型阶段,研究现有技术方案,参考前沿学术论文,结合团队现状和交付需求,最终确定优化现有内核的网络协议栈来提升Haproxy性能。 核心功能开发阶段,逐个解决系统的性能瓶颈,基本完成核心特性的开发 兼容和运维增强阶段,牺牲少许性能提升,来完全兼容保持BSD socket API,调整Fastsocket使用方式,运维人员可以”傻瓜式“的使用Fastsocket。现在回想起来,这阶段的工作,对于Fastsocket线上生产环境的成功部署至关重要。 功能和压力测试阶段,详尽的功能测试和极限压力测试,历时近两个月,修复大小BUF十余个,有力的保证Fastsocket的稳定性品质: 上线至今无故障。 灰度上线测试阶段,在新浪负载均衡运维团队有力配合下,积极和稳妥的推进Fastsocket在生产环境上的部署。 6.为何想要把Fastsocket开源呢?
从个人的角度来说,这是一个很有趣且有价值的项目,我们希望将它分享出来,很简单的初衷。同时,开源可以促进项目更好的发展。为什么呢?首先,开源可以鼓
励和鞭策开发人员写出高质量的代码,因为代码要公诸于世么,如此大范围的丢人决不能够啊。更重要的是,开源可以借助社区的力量,增强项目本身,提高项目的
生命力和活力。例如,核心开发人员离职导致项目废弃的例子比比皆是,然而项目开源后,开发人员即使离职,也有可能继续维护项目。又例如,项目开源可以吸引
志同道合的开发者一同参与来扩展功能和增强性能,目前Fastsocket已经有高手在贡献代码了。 7.可以讲讲Fastsocket的开发现状和未来的计划? 目前Fastsocket在对TCP长连接的场景进行性能优化,例如memcached和redis等内存数据缓存服务,通常使用TCP长连接来提供服 务。到现在为止,已经取得了阶段性成果,并发布到github上,并且经过了稳定性测试。Redis启动Fastsocket后,性能最多可以提升近 50%。这些新的特性还在进一步优化中,预计在完成调优并经过生产环境的稳定性检测后,会在V1.1版本正式发布。对于Fastsocket的未来发展,我个人的想法是把它定义成一个对应用程序透明的高性能网络库(需要Fastsocket内核支持),应用程序只需把 这个库链接进来,便可以享用高性能的socket网络I/O。我们会持续自主开发增强Fastsocket,同时也会把上游的提升网络性能的新特性集成进 来,并且提供与Fastsocket配套的工具或者脚本自动的把系统配置成最佳网络性能模式,使得程序开发人员和系统运维人员可以专注于自己的事情,把网 络性能交给Fastsocket。 另外,对于Fastsocket项目的发展,我们是完全开放的,真诚的欢迎有兴趣的公司和个人参与进来。非常高兴的是,Fastsocket开源不到两周已经有很多同学表示感兴趣,而且已经高手贡献代码了。 8.介绍一下Fastsocket应用现状? Fastsocket由新浪开源到现在只有两周,目前仅仅在新浪Haproxy生产环境下已经全面部署。据我所知,目前国内几家大型互联网公司都对Fastsocket比较有兴趣。期望未来Fastsokcet有更多的应用。 9. 前面提到FastOS计划,能介绍一下它的理念吗? 从技术层面讲,FastOS计划要做的是:根据生产环境的需求,对 Linux内核不同子系统开展专项性优化。比方说:fastsocket 是FastOS计划中的第一个子项目,解决的是TCP连接的多核扩展问题;未来我们还会推出FastTCP、FastI/O 等不同的子项目。从管理层面讲,FastOS期望打造的是一个开放的生态系统,可参与该计划的人员不仅有来自新浪内部的开发人员,更包括: 硬件提供商、高校实验室、国内外自由软件组织、互联网同行以及对我们计划感兴趣的任何开发者。可以这么说,FastOS计划是没有公司界限的,开放的。借 助FastOS,不仅可实现各参与方的资源整合,更为重要的是:合作成果的最大化分享及成果的持续化维护。在这里,我们也诚挚地欢迎大家加入进来。 |