badger bank,badger是什么

  

  2021年7月,计算机械协会编程语言特别兴趣小组将其享有盛誉的编程语言软件奖授予webAssembly,以表彰其成就,称其为“自JavaScript以来第一个在web浏览器中广泛采用的新语言”。今年也标志着Web浏览器之外的webAssembly的爆炸式增长,尤其是在服务器端和云原生环境中。   

  

  截至目前,2021年,CNCF已经正式接受了至少三个WebAssembly项目,包括WasMeGe Runtime(云原生WebSimple Runtime)、wasmCloud(WebAssembly应用框架)、KurestLeT(Kubernetes pod中运行WebAssembly程序的工具),更多现有的CNCF项目已经开始采用WebAssembly。   

  

  为了适应云计算原生社区对WebAssembly日益增长的兴趣,Kubecon CloudNativecon北美于10月在洛杉矶举办了一场特别的云计算原生Wasm日。300多名开发者注册(并付费)了为期一天的活动。   

  

  活动一开始,微软Azure的Ralph Squillace和Cosmonic的Liam Randall分别发表了主题演讲。斯奎莱斯和兰德尔都是云计算的老手。他们讨论了云计算架构的演变,并提供了WebAssembly作为基于云的本地运行时兴起的背景。   

  

  WebAssembly是一个轻量级、快速、安全的多语言功能“容器”。它将Kubernetes和Docker首创的云原生编程模式从大型数据中心带入边缘计算和微服务领域。   

  

  该活动传达的信息是,云原生WebAssembly应用程序已被各种规模的企业采用。随着这些应用程序的出现,我们也看到了一个由框架、工具和运行时组成的蓬勃发展的生态系统。   

  

  技术   

  

  Kubernetes已经成为所有云原生应用程序的事实上的“控制平面”,因此必须在Kubernetes中支持WebAssembly才能看到真正的采用。服务器上的云原生WebAssembly不仅需要WASI访问操作系统功能,还需要Kubernetes集成。我们需要在Kubernetes集群中与其他容器(如Contained、Docker和cri-o)并行运行WebAssembly工作负载。在这个活动中,我们看到了两个主要的方法。   

  

  Krustlet项目直接从Kubernetes pod运行WebAssembly程序。在整个Wasm日,我们看到了几个使用krustlet的演示。微软Azure AKS在大会期间宣布了基于krustlet的WebAssembly服务。   

  

  WasmEdge的crunw项目是另一种方式。它是Kubernetes的容器运行时(如runc和crun)的替代品。Crunw运行时可以自动检测容器映像是用于WasmEdge还是containerd/Docker,然后启动并管理合适的运行时/容器。它使WebAssembly程序成为Kubernetes集群中的一等公民。   

  

  汇编程序不仅仅是由Kubernetes管理和控制的工作量。他们也可以扩展Kubernetes本身。SUSE的Rafael Fernndez Lpez介绍了Kubewarden项目,该项目为Kubernetes提供了一个基于WebAssembly的策略引擎。   

  

  应用框架   

  

  应用程序框架构建在Kubernetes之上,为应用程序提供公共服务。一个很好的例子是Dapr,它由微软创立,很快将成为CNCF的孵化项目。Dapr使用sidecar模式为连接到这些sidecar的微服务应用提供通用服务,如服务发现和调用、弹性重试、日志记录和跟踪、监控、秘密存储、连接安全等。这些边车应用(微服务)可以由Kubernetes管理。我们了解到Dapr现在支持基于WebAssembly的sidecar应用程序。   

  

  WasmCloud项目是专门为WebAssembly设计的基于参与者的应用程序框架。来自Red Badger的Stuart Harris和Ayush Attri讲述了他们如何使用Kubernetes管理的wasmCloud集群在一家欧洲银行实现大规模应用。   

  

  服务网格建立在应用程序框架之上。它们提供了额外的功能,如流量路由和代理分离。Envoy agent是基于WebAssembly的服务网格扩展的早期采用者。蚂蚁集团的MOSN是一个服务网格,管理着超过200,000台服务器的大型集群。   

  

  MOSN团队的Jason Song在活动上发表了演讲,讨论了在服务网格中运行WebAssembly功能来替代传统容器的问题。MOSN的代理支持proxy-wasm规范作为扩展机制。MOSN的sidecar框架,即Laytto,支持用WebAssembly编写的微服务。Jason演示了如何在电子商务应用程序中使用Kubernetes在MOSN和Laytto上部署和管理WebAssembly功能。   

  

  SaaS的嵌入式功能   

  

  到目前为止,我们已经了解了WebAssembly在云原生基础设施中的应用。业务逻辑应用呢?   

>WebAssembly使业务应用程序能够轻松地支持第三方插件或扩展。集中托管的云原生应用程序(如SaaS)可以使用WebAssembly运行时安全高效地执行任何用户提交的代码功能。

  

Suborbital的Connor Hicks非常清晰地解释了为什么反应式嵌入式功能比传统的Webhook或“原生集成”(即定制模板)更适合扩展和定制SaaS。Suborbital是一个应用程序框架,可以轻松地将WebAssembly功能嵌入SaaS。

  

Shopify是使用嵌入式WebAssembly功能扩展和定制其SaaS的先驱。人们发现,开发人员确实希望使用JavaScript而不是Rust或C/C++来编写这些函数。Shopify的Saúl Cabrera讲述了如何在WebAssembly上运行和优化JavaScript程序。

  

同样,我们也看到了WebAssembly运行时(如WasmEdge),支持高级JavaScript功能(如ES6模块、异步网络和Rust/JavaScript交互)。

  

Bailey Hayes和Carl Sverre讨论了SingleStore如何使用WebAssembly执行嵌入到云数据库中的用户定义功能。它允许数据存储和计算紧密结合在一起,并提高了效率。在他们的演讲中,团队演示了如何在大型数据集上使用AI模型执行实时情绪分析。

  

作为该领域的早期采用者,该团队还参与了标准化工作,提出了WASI-data规范,以支持数据库和WebAssembly运行时之间的标准双向通信协议。

  

人工智能与物联网

  

正如Liam Randall在其主题演讲中所讨论的那样,WebAssembly的最大应用机会可能在边缘,包括边缘网络和边缘设备。

  

Dan Mihai Dumitriu介绍了索尼物联网应用部门Midokura如何在传感器设备上部署WebAssembly应用程序。WebAssembly占地面积小、性能高,使其能够作为用户应用程序的安全沙箱在小型设备上运行。来自微软的Kate Goldenring和来自PrnabBuo联邦大学的Rodrigo Farias Rodrigues Lemos介绍了一个作为Krustlet运行的WebasBalm应用程序Akri,以发现IoT设备并使其成为Kube网络集群中的资源。

  

事实上,CNCF现在至少有三个Kubernetes-on-the-edge项目,即KubeEdge、SuperEdge和OpenYurt。考虑到前面提到的Kubernetes集成,WebAssembly在物联网设备上的前景是光明的。

  

当今边缘网络的一个重要应用是人工智能推理。轻量级和快速的WebAssembly运行时可以使AI推理计算更接近边缘的传感器和数据源。在这个会议中,有两个关于人工智能推理的讨论。

  

Layer5的Shivay Lamba和Hackerrank的Mritunjay Sharma讲述了如何使用WasmEdge的Tensorflow和Tensorflow Lite API扩展以每幅图像耗时毫秒的速度进行图像识别。Rust和JavaScript开发人员都可以使用此API。

  

微软的Radu Matei讨论了WASI-NN规范,该规范提供了一个标准API,用于将任何AI推理库合并到WebAssembly中。WasmEdge Tensorflow扩展也适用于WASI-NN。

  

生态系统创新

  

随着WebAssembly应用程序的增长,开发人员正争相改进WebAssembly本身及其相关工具。本次活动介绍了两个值得注意的WebAssembly生态系统工作:Bindle和Grain。

  

Bindle旨在为WebAssembly模块和工件提供一个包管理系统。正如我们从NPM、Docker Hub、Go和Rust crates的成功中所看到的,包管理可以促进协作,并使开发人员能够在彼此的工作基础上进行构建。微软Azure的Matt Butcher和Cosmonic的Taylor Thomas就Bindle是如何设计的以及如何使用它进行了演讲。我们期待着更多地采用这一重要技术。

  

Grain是一种WebAssembly优先的编程语言。静态类型和编译的编程语言可以最有效地利用WebAssembly的轻量级运行时。然而,对于初学者来说,诸如Rust和C/C++之类的静态类型语言并不容易。Grain项目的Oscar Spencer讨论了Grain是如何设计成一种易于使用的编程语言,可以编译成高效的WebAssembly字节码的。这一项目仍处于早期阶段,但前景十分看好。

  

下一步是什么

  

云原生WebAssembly应用程序于2021年开始起飞。随着WebAssembly被整合到几乎所有领先的云原生项目中,我们可以在未来12个月内看到WebAssembly应用程序在云中的广泛部署。你还在等什么?

  

原文链接:

  

https://thenewstack.io/cloud-native-webassembly-applications-are-already-here/

相关文章