@[toc]
LVS自由软件项目创始人章文嵩、2022 Apache软件基金会董事姜宁、OpenHarmony开源与开发者运营总监欧建深
三位先生。而我们有幸作为OpenHarmony成长计划
的学员参加了本次会议的直播,完会后自觉收获颇丰,有必要作一个总结性的梳理思考,因此,希望在投资自己的同时也具有供他人参考的价值。特别说明,文中相关资源均取自直播原文,回放链接见末尾。"LVS"
这个名词,它是面向服务器端的一种负载均衡调度器
,全称Linux Virtual Server
,字面意思即Linux 虚拟服务器
,类似的项目还有Nginx、HAProxy、F5、Keepalived
等。其在官网The Linux Virtual Server Project中这样对其说明:++Linux 虚拟服务器是一个高度可扩展和高度可用的服务器,构建在真实服务器集群上,负载均衡器在 Linux 操作系统上运行。服务器集群的架构对最终用户是完全透明的,用户之间的交互就像一个高性能的虚拟服务器一样++。我们所熟知的百度、阿里、腾讯、Google、SourceForge
等公司网站都有使用到这项技术,典型的场景就是淘宝双11上百亿购物额的订单量背后的支撑。笔者以往也对LVS没有过具体了解,但基于以上分析,建立的初步感知是其思想与
磁盘阵列
技术有着大体上的异曲同工之妙。磁盘阵列通常称作RAID,中文意思是独立冗余磁盘阵列
。RAID可通过软件或硬件技术将多个较小的磁盘整合成为一个较大的磁盘设备,而这个较大的磁盘功能不仅是存储,还具有数据保护
功能;LVS是一台机器做网络服务忙不过来,所以拿一组机器来做,对外仍然相当于一台机器,其logo形象地传达出了这样一种特性。
LVS也算一个全球协作的开源项目,汇聚了亚洲、欧洲、澳洲、美洲等全球各地的贡献者的成果。尽管大多数贡献者彼此之间都未曾谋过面,但基于相互的欣赏和共同的热爱与需求,LVS的能力得到不断加强,为后续的广泛应用奠定了坚实的基础,既满足了当代也造福了后世。也许,这就是开源精神核心灵魂之所在吧。
LVS既然有诸多优势,那么它在实际情况中该如何使用呢?
物理的数据中心
,资源创建成功后不能更换地域;可用区(Availability Zone,简称AZ)是指在同一地域内,电力和网络互相独立的物理区域
。同一可用区内实例之间的网络延时更小
。在同一地域内可用区与可用区之间内网互通
,可用区之间能做到故障隔离
。这里引用阿里云的相关实例供参考:地域名称 | 所在城市 | Region ID | 可用区数量 |
---|---|---|---|
华北 1 | 青岛 | cn-qingdao | 2 |
华北 2 | 北京 | cn-beijing | 12 |
华东 1 | 杭州 | cn-hangzhou | 8 |
华东 2 | 上海 | cn-shanghai | 11 |
华南 1 | 深圳 | cn-shenzhen | 6 |
西南 1 | 成都 | cn-chengdu | 2 |
... | ... | ... | ... |
一个地域范围内通常是3个可用区,相邻的可用区之间两两相隔大概50-100公里,以应对容灾能力和网络延时的要求。
超级路由器Router
,后端数据中心设置百十台左右的LVS服务器,背后再设置万台的Service Endpoint
服务节点。然后,Router使用ECMP和Equal Cost Multipath算法
,对源地址和目标地址IP做一个一致性Hash映射,将前端Router投射到后端LVS,以实现更细腻化的服务
。可见,阿里因开源而受益,同时也提高了阿里的技术品牌和影响力。
因此,对开源项目来说,建立竞争优势,就是要构建良好的开源开发者社区和开源生态。
大体上,笔者目前深有体会的是第2点和第8点——一个著名的开源项目社区中通常藏龙卧虎,各个节点都潜藏诸多高手,即通俗的“大佬”。例如OpenHarmony社区,简单分为
运营岗和技术岗
来说:运营大佬会高效地组织我们参与社区活动伴随相应的激励政策,激发学习热情,有时也会做一些思政工作的指引,个人成长的同时紧跟行业前沿;技术大佬则会提供硬核的技术指导,不厌其烦地为我们排疑解难,在力所能及的范围内给予帮助。其他几点还需笔者持续体会感悟,参与开源社区的优势远不止于此,能学到很多平常学不到的东西,有投入便会有回报。
Richard Stallman的 “自由软件运动” 、Linus Torvalds的 “Linux兴起” 、Eric Steven Raymond的 “开源软件运动”
。GNU Free Software Foundation(FSF)
基金会并撰写了被后续广泛使用的GPL协议,倡导学习、使用、修改、分发软件的自由
。open source initiative
组织、发起了Debian Free Software Guidelines
项目,现今的许多Deb系Linux发行版都基于Debian维护得到。姜宁先生对Apache的核心理念作了以上三点概括并进行了相关解析。
开源共同体
固然有许多理由值得我们加入,但姜宁先生强调到我们不能忽略阻挡自己的惰性,开源社区里的许多事物都是开放的,我们尤其需要培养自己的好奇心
。
融入集体是最快的进步方式,学习从来不是单打独斗,别人会犯的错误,我们通常也会犯,实践出真知,时间会给我们答案。
名词和动词
两条主线来剖析:名词上理解开源,它是一种软件技术的承载方式
(解构一个好产品,看优质技术哪里拿);动词上理解开源,它是一种构建生态的方式
(起浪人如何掀起浪潮)。开源从来不是一个单一的概念。英语中有一类词叫做动名词,其兼有动词和名词的特征,这使它能够在多种场合被应用,开源与其类似,强调的更多是全方位的变革。
描述边界的工具
,阐述一个领域最近正在发生什么事情、进行什么动作。统筹归纳
。从统筹归纳的全局视角结构切入必定比单点突破要有效的多,综述是学术研究开源技术的正确打开方式,只需加上关键词A survey of/on.
为了使大家具有一个更清晰直观的认识,欧建深先生举了相关实例:
分类概括
,就像高中一些理科学科的教辅,经常会有一些思维导图式的框架,一张图的背后藏着一本书。因此,顺着结构图走,基本上就能把某个领域的内容和研究方向摸透,达到与学术前沿齐平的水平。如何配合
的,由于硬件或软件天生的结构特点造成存在某些问题,例如EROFS文件系统为什么要采用改造的固定输出大小LZ4算法,而不直接采用已有的LZ4,是因为Flash的存储节点是4k大小的扇区,为了实现4k对齐提高存储利用率,需要对原本的LZ4进行相应优化。平淡无味
,但以一种“老子到此一游”
的心态来玩,再冷酷无情的科研,也终将转变成轻松愉快的奋斗日记。没有一项任务是轻易就能完成的,与其纠结工作难不难,不如调整自己去适应,这样,日积月累的过程中,我们也会慢慢地进步与成长。
万物皆数学,数学原理是自然界中潜藏的最大秘密,任何事物都能找到对应的数学模型去解释,搞懂了数学,就搞懂了万物。