6. 走向将来
将来 BPF 将如何倒退呢?它曾经具备图灵机的雏形,领有微小的计算能力潜能。它目前的计算能力依然受到束缚,然而曾经足够扭转现有利用开发的根底,必将引发利用的蓬勃发展,会衍生出开发工具、测试方法等等的倒退,使业务逻辑的开发与 BPF 的开发对立在一个开发模型当中,甚至引发新的开发语言呈现。当在应用领域中生根后,就会持续发芽壮大,须要排汇计算能力作为养料能力抽枝散叶。BPF 利用与 BPF 技术外延的倒退就像两面绝对的镜子,互相映照,造成斑斓的德罗斯特效应图景。
随着近几年云计算、人工智能、智能设施的蓬勃发展,信息系统基础设施构造、设施类型、业务复杂度都迎来再一次的改革。
Linux 零碎作为现今最为宽泛应用的操作系统,其本身也在倒退变动。初期,沿着原有的技术路线,通过量的积攒,足以应答时代的演进,这一点从代码增长就可以看进去,其背地是 Linux 反对的设施、驱动、个性、机制也来越多。产品构型也越来也简单,Web 服务器、并行计算、异构计算、桌面、智能终端、嵌入式零碎。Linux 的技术设施,须要面对不同的利用场景和问题。量的积攒,能够解决一段时间的问题。然而,当这种变动积攒到肯定水平时,须要新的伎俩,能力反对下层构造的灵便度。
须要指出的是,现有的文档中,大多将 BPF 定位为网络和平安工具的利器。然而 BPF 作为一种通用的动静逻辑机制,绝不仅仅能够利用这两个中央。
6.1. 通用性
BPF 曾经从最后网络报文剖析技术,扩大到了很多应用领域,当前必然成为一种通用的内核开发技术,在定制化和性能扩大两方面推动内核倒退。
目前 BPF 的外围组建根本轮廓曾经确定,由运行上下文、帮忙函数、Map、指令集、Verifier、JIT、零碎调用等要害模块形成 BPF 的外围运行机制。
运行上下文是 BPF 程序运行的语境,目前除了网络语境倒退比拟疾速之外,其余程序类型的运行上下文倒退绝对落后,文件系统目前甚至还没有。
对于运行上下文应该设计成什么样子,达到什么要求,有怎么的束缚,还没有对立的范式,次要由各程序类型依据理论利用须要进行定义。彼此间不足共通性,倒退比拟随便,还处于比拟原始的阶段。
帮忙函数还不齐备,各个程序类型存在差别。程序类型的定义,不足逻辑根底,其设计元语还需廓清。语境相干局部和通用局部划分不分明,影响到平安机制也无奈针对性设计,安全性无奈验证。
Map 负担的角色过于宽泛,既是通信机制,也是存储机制,既是 Local 的也是 Global 的。是对 BPF 外围机制补全的过渡伎俩。随着,近程调用、间接调用、跳转表、全局变量等的实现,Map 的作用和应用形式也将扭转。
6.2. 表达能力
内核曾经在扩展性方面在不断改进,然而这些始终还是不能基本解决问题,引入更多编译器技术特地是动静编译技术、可信编译技术才是解决问题的基本。
目前 BPF 的程序的表达能力相当于弱化的 C 语言,这显然是不够的。实现一种和传统利用开发雷同的开发体验,让程序员专一于了解业务逻辑,自在地表白,须要编译器填补通用语言与 BPF 本身限度之间的沟壑,须要语言层面的扩大,也须要运行时和工具链的反对。
6.3. 开发工具
目前还没有在前端反对 BPF 的开发工具,只是实现了后端的反对,这显然还远远不够。这种状况,正阐明了 BPF 的倒退急需编译器的反对,在前端反对 BPF,通过语言个性的扩大和新的开发反对库,实现 BPF 与通用编程语言的交融,将大大缩减蕴含 BPF 个性的应用程序的开发、测试和保护难度。对于 BPF 作为一项利用开发技术大力推广至关重要。
6.4. 开发流程
目前,在设计阶段,须要将 BPF 的逻辑局部和个别编程逻辑局部分离出来,这减少了设计的开销,同时对于设计人员的要求加大。本来的利用设计人员,只理解业务逻辑,这显然不够,还须要理解内核的基本原理,才可能做好逻辑划分工作。既理解内核又懂利用开发和业务逻辑的人员,是交叉性人才,这样的人员往往少且难以造就。如果让本来的利用开发人员,学习把握内核相干的常识,以便能够满足 BPF 利用开发的须要,显然费时费力不说,费效比更是难以达到商业决策的最低门槛。
而在开发阶段,BPF 和利用须要离开编码,这无疑减少了联调联试的开销。特地是,呈现问题的时候须要频繁的跨组跨部门沟通,效率切实太低。如果能把 BPF 的开发齐全利用化,让一个程序员承当所有工作,老本、效率都能够失去优化。
在测试阶段,还短少专用的高效率的工具。
因而,以开发工具的提高为根底,目前采纳的开发流程也肯定会同步地被改良。能够料想,将来的开发流程肯定是交融和简化的。
7. 结束语
Linux 内核的倒退,将技术倒退与翻新演绎得酣畅淋漓。
源自于用户和开发者的需要,始终是推动技术不断进步的基本能源。在需要的推动下,Linux 内核始终在疾速的倒退,放弃着强劲的能源。
同时,酷爱与保持,还有最重要的开发准则的坚守,是 Linux 可能将源源不断的需要转化为翻新能源的根底,而不至于被爆炸的需要捣毁。根本准则体系的保护,使 Linux 内核始终保持如一的设计框架。
在 Linux 的倒退过程中,一些很小的需要,最终也能够倒退成为简单的架构。保持与突破壁垒,是翻新的范式。
在一直寻求问题的最终答案的过程中,有很多优良的思维启发咱们的认知,但限于技术倒退阶段、条件是否成熟,这些优良的思维有的潜入水底,有的浮现水面独领一段风骚。历史会有所偏好,作出它的抉择,但不可否认的是这些优良的思维,都始终在施展着它们的作用。当历史的拐点到来的时候,它们又会从新交融,以一种全新的形式持续推动技术的提高。
BPF 是内核交互问题一直开掘、迭代后的最新答案。内核的交互问题,实质上是内核构造问题。BPF 的弱小计算能力,将推动更好地实现内核与用户态的动静交互,使内核可能更加灵便满足各种利用场景的须要,使整个零碎的性能不因为这种能力而蒙受损失。放弃软件良好分层的根底上,减小分层对信息交互、资源共享的妨碍。而围绕 BPF 的基础设施的倒退,也必定会为内核构造带来微小扭转,将安全性、规范性更加深刻地融入到内核的轻微档次。
安全可靠是 BPF 继续倒退的准则的,在 BPF 的功能性一直扩大、计算能力一直开释的过程中,安全检查、可信编译的加持是可持续性的根底。
而作为一种全新的编程形式,BPF 的开发和传统编程范式具备同样的位置和发展前景。从语言的反对到代码的生成乃至 JIT 的优化等等,是必不可少的一环。
BPF 来源于 Linux 内核倒退过程中,泛滥优良的开发者在效率、能力方面的不断改进,以及对技术根源的孜孜以求。它是内核倒退中,泛滥优良思维的集大成者,但同时,它也仅仅是新时代的开始。
新的办法、新的语言、新的架构都在一直呈现,催生着微小的改革,如汹涌的波澜。而 BPF 将成为乘波之舟,它存在很多可能性,置信以此为终点,开发者们将会谱写更富丽的篇章。这是包含作者在内的泛滥开发者,所期待的广大将来。