首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
version
dll
perl
solr
httpclient
hashtable
integer
header
controller
go
tree
search
bit
hashcode
substring
plugins
process
eval
byte
match
settings
netty
frameworks
int
io
rsa
future
nodejs
timestamp
range
function
usb
javascript
grid
golang
include
instance
python
expression
shell
case
keyword
ip
actionscrip
lua
erlang
emoji
export
object
bash
select
httprequest
dagger
flutter
get
js
python3
email
timezone
heap
php5
regex
yaml
datetime
list
uml
spring
split
require
vbscript
fetch
web3
数组
input
loops
hashset
tags
vba
sum
当前位置:
开发笔记
>
编程语言
> 正文
eBPF和WebAssembly:云原生VM的比较及应用领域
作者:强毛 | 来源:互联网 | 2023-12-14 21:27
本文比较了eBPF和WebAssembly作为云原生VM的特点和应用领域。eBPF作为运行在Linux内核中的轻量级代码执行沙箱,适用于网络或安全相关的任务;而WebAssembly作为图灵完备的语言,在商业应用中具有优势。同时,介绍了WebAssembly在Linux内核中运行的尝试以及基于LLVM的云原生WebAssembly编译器WasmEdgeRuntime的案例,展示了WebAssembly作为原生应用程序的潜力。
当今
云原生
世界中两个最热门的轻量级代码执行沙箱/VM 是eBPF和WebAssembly。它们都运行从 C、C++ 和 Rust 编译的高性能字节码程序。
然而,最大的区别在于: eBPF 在 Linux 内核中运行,而 WebAssembly 在用户空间中运行。
eBPF 有一些编程限制,使其在内核用例中是安全的(例如,没有无限循环)。但这也意味着 eBPF 是图灵不完整的。另一方面,WebAssembly 是一种图灵完备的语言,具有打破沙盒和访问原生 OS 库的扩展。
一般来说,eBPF 适用于网络或安全相关的任务,而 WebAssembly 则非常适用于商业应用。但肯定有重叠。
首先,已经有案例努力在Linux 内核中[url=https://link.medium.com/HAUbDlHM4ib]运行 WebAssembly[/url]。然而,他们在很大程度上是不成功的。eBPF 是这个用例的更好选择。
然而,WebAssembly 程序可以处理许多类似内核的任务。WebAssembly 可以被 AOT 编译成原生应用程序。基于 LLVM 的云原生 WebAssembly 编译器的一个很好的例子是来自CNCF的WasmEdge Runtime。本机应用程序将所有沙箱检查合并到本机库中。这允许 WebAssembly 程序表现得像一个独立的 unikernel “库操作系统”。
此外,这种 AOT 编译的沙盒 WebAssembly 应用程序可以在微内核操作系统上运行,例如seL4,并且可以接管许多“内核级”任务。
虽然 WebAssembly 可以下降到内核级别,但 eBPF 也可以上升到应用程序级别。例如,服务网格代理通常支持WebAssembly 作为扩展机制。由于这些代理基本上是网络应用程序,因此可以在 eBPF 中编写一些扩展,以在不影响安全性和可
扩展性
的情况下获得更高的性能和可观察性。
在服务网格用例中,WebAssembly 非常适合sidecar
微服务
应用程序
,eBPF 适合通过代理路由 API 流量并监控整个应用程序。
eBPF 和 WebAssembly 的兴起对开发人员来说是个好消息。我们有更多的工具来管理和编程日益复杂的基础设施。Rust 已成为这两种虚拟机的领先编程语言,因为它具有高性能,并且可以由 LLVM 编译为机器代码,而无需额外的运行时支持。
web
rust
编译
编程
linux
安全
扩展
https
runtime
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
io
H5技术实现经典游戏《贪吃蛇》
本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ...
[详细]
蜡笔小新 2024-11-21 20:16:59
io
Python 开发环境最佳实践:Anaconda + Jupyter Notebook 快速上手指南
对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ...
[详细]
蜡笔小新 2024-11-21 18:30:23
future
ABAP开发者需关注的几大关键问题
长期从事ABAP开发工作的专业人士,在面对行业新趋势时,往往需要重新审视自己的发展方向。本文探讨了几位资深专家对ABAP未来走向的看法,以及开发者应如何调整技能以适应新的技术环境。 ...
[详细]
蜡笔小新 2024-11-21 18:21:06
int
如何在Python中调用C++代码
本文介绍了一种方法,通过使用Python的ctypes库来调用C++代码。具体实例为实现一个简单的加法器,并详细说明了从编写C++代码到编译及最终在Python中调用的全过程。 ...
[详细]
蜡笔小新 2024-11-20 16:35:59
io
深入理解Java SE 8新特性:Lambda表达式与函数式编程
本文作为‘Java SE 8新特性概览’系列的一部分,将详细探讨Lambda表达式。通过多种示例,我们将展示Lambda表达式的不同应用场景,并解释编译器如何处理这些表达式。 ...
[详细]
蜡笔小新 2024-11-20 14:19:27
io
龙蜥社区开发者访谈:技术生涯的三次蜕变 | 第3期
龙蜥社区的开发者们通过自己的实践和经验,推动着开源技术的发展。本期「龙蜥开发者说」聚焦于一位资深开发者的三次技术转型,分享他在龙蜥社区的成长故事。 ...
[详细]
蜡笔小新 2024-11-21 11:12:28
io
探索阿里巴巴的开源世界
从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ...
[详细]
蜡笔小新 2024-11-21 09:06:54
int
在OpenCV 3.1.0中实现SIFT与SURF特征检测
本文介绍如何在OpenCV 3.1.0版本中通过Python 2.7环境使用SIFT和SURF算法进行图像特征点检测。由于这些高级功能在OpenCV 3.0.0及更高版本中被移至额外的contrib模块,因此需要特别处理才能正常使用。 ...
[详细]
蜡笔小新 2024-11-20 21:00:18
io
理解浏览器历史记录(2)hashchange、pushState
阅读目录1.hashchange2.pushState本文也是一篇基础文章。继上文之后,本打算去研究pushState,偶然在一些信息中发现了锚点变 ...
[详细]
蜡笔小新 2024-11-20 20:05:37
io
如何在PHP中安装Xdebug扩展
本文介绍了如何从PECL下载并编译安装Xdebug扩展,以及如何配置PHP和PHPStorm以启用调试功能。 ...
[详细]
蜡笔小新 2024-11-20 18:31:50
io
物理隔离环境下的数据交换平台挑战与解决方案(上)
本文探讨了在一个物理隔离的环境中构建数据交换平台所面临的挑战,包括但不限于数据加密、传输监控及确保文件交换的安全性和可靠性。同时,作者结合自身项目经验,分享了项目规划、实施过程中的关键决策及其背后的思考。 ...
[详细]
蜡笔小新 2024-11-20 18:18:23
io
linux网络子系统分析(二)—— 协议栈分层框架的建立
目录一、综述二、INET的初始化2.1INET接口注册2.2抽象实体的建立2.3代码细节分析2.3.1socket参数三、其他协议3.1PF_PACKET3.2P ...
[详细]
蜡笔小新 2024-11-20 15:21:14
io
Vue CLI 中的 Proxy 配置详解
本文详细介绍了如何在 Vue CLI 3.0 和 2.0 中配置 proxy 来解决开发环境下的跨域问题,包括具体的配置项和使用场景。 ...
[详细]
蜡笔小新 2024-11-20 14:48:41
io
流处理中的计数挑战与解决方案
本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ...
[详细]
蜡笔小新 2024-11-20 13:50:01
io
java类名的作用_java下Class.forName的作用是什么,为什么要使用它?
湖上湖返回与带有给定字符串名的类或接口相关联的Class对象。调用此方法等效于:Class.forName(className,true,currentLoader) ...
[详细]
蜡笔小新 2024-11-20 12:55:32
强毛
这个家伙很懒,什么也没留下!
Tags | 热门标签
version
dll
perl
solr
httpclient
hashtable
integer
header
controller
go
tree
search
bit
hashcode
substring
plugins
process
eval
byte
match
settings
netty
frameworks
int
io
rsa
future
nodejs
timestamp
range
RankList | 热门文章
1
charles都踩过哪些坑_理财路漫漫,踩过哪些坑,希望你不会掉进去
2
docs: fix spelling in Readme.md
3
《007:无暇赴死》杀青
4
用数据说话,看看涂雅的Google Analytics结果对比
5
设计模式系列:观察者模式
6
制作名片用什么工具好?:名片设置工具
7
如何查找ResultSet.next()方法的jdk源代码
8
Spring注解之 @SuppressWarnings注解
9
jquery中ajax的使用
10
centos ftp服务器搭建_CentOS7服务搭建搭建FTP服务器(下)
11
驻马店php培训课程,驻马店php培训课程有哪些
12
c#如何实现欧拉角与四元数之间的转换
13
strrpos() 函数
14
Python编写雪容融
15
婖字意思 在新华字典的读音解释笔画常用组词起名
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有