服务器在docker映射_在服务器端通过WebAssembly超越Docker

服务器在docker映射

Docker改变了服务和应用程序的设计,实现和部署方式。 在使用Docker之前,应用程序和服务必须在同一台机器上协同工作。 有时他们做到了,有时他们没有。 如果出现问题,则需要重新配置整个虚拟或真实计算机。 这是进行应用程序部署的昂贵且耗时的方法。

如今,一个Docker容器认为它是在机器上运行的唯一进程。 结果是,公司可以在一台计算机上运行数千个隔离的容器。 还可以随时创建和销毁容器,以满足负载需求。 Docker在企业计算领域掀起了一场全新的变革,既高效又具有成本效益。

如今,在Internet上进行分布式计算的常规方法是使用容器。 实际上,在许多组织中,容器被认为是部署服务和应用程序的唯一方法。 但是,出现了另一项挑战容器优势的技术:WebAssembly。

WebAssembly的起点

WebAssembly是由万维网联盟发布的规范,用于创建可以与容器相同的方式运行的有效二进制可执行文件。 WebAssembly有潜力成为Docker的重要替代部署单元。

Docker的创建者Solomon Hykes 在2019年发布了一条推文 ,“如果WASM + WASI在2008年存在,那么我们就不需要创建Docker。”

功能强大。

WebAssembly主要是所有主要浏览器都支持的客户端技术。 WebAssembly使诸如Chrome,Safari,Firefox和Edge之类的浏览器可以运行CPU密集型游戏和其他类型的应用程序。

Web组装

WebAssembly允许图形密集型游戏(例如Maze)在浏览器中运行。

在客户端,有效的方法是将二进制数组嵌入某些HTML或从Internet下载二进制文件。 然后,在浏览器中JavaScript下触发WebAssembly组件:

let instance = new WebAssembly.Instance(new WebAssembly.Module(binary_wasm_array));

WebAssembly代码非常小,可以实现接近本机的执行速度。 因此,这是对浏览器编程的一种引人注目的补充。 但是,当WebAssembly在服务器端运行时,事情会变得非常有趣。

了解服务器上的WebAssembly

WebAssembly就像Docker,因为这两种技术共享主机的资源。 Docker使用Linux功能在网络,用户权限和文件系统访问方面创建进程隔离。 这全部由Docker守护程序完成 。 另一方面,WebAssembly是已编译的二进制文件,旨在在WebAssembly虚拟机下运行。

Web汇编二进制文件

WebAssembly二进制文件由WebAssembly虚拟机管理。

WebAssembly二进制文件以C,C ++或Rust等语言编写。 通过将源代码编译成WebAssembly虚拟机专用的二进制格式来创建WebAssembly可执行文件。 因此,二进制文件可能非常小且非常快。 如上所述,WebAssembly二进制文件可以达到接近本地的速度。

如何在服务器上使用WebAssembly

WebAssembly非常适合支持面向微服务的应用程序(MOA)。 MOA的主要元素是创建由各种不同服务组成的应用程序。 每个服务都是独立创建,部署和维护的。 服务由一个或多个功能组成。

面向微服务的应用

面向微服务的应用程序由在实现技术方面独立的离散服务组成。

实施MOA的一种流行方法是使用容器编排技术,例如Kubernetes或Docker Swarm。 实施MOA的另一种方法已获得广泛关注,是使用无服务器功能,例如AWS Lambda或Google Cloud Functions。

但是,考虑到WebAssembly的离散性,它也可以用于在独立的WebAssembly虚拟机下或作为无服务器功能技术的增强功能来实现微服务 。 随着对MOA社区的兴趣不断增长,行业专业人员已经为该渠道奠定了基础。

安全注意事项

WebAssembly是一项引人注目的技术,但确实存在挑战。 最大的风险是WebAssembly可执行文件是二进制文件,并且没有明显的方法知道给定的二进制文件是否包含恶意软件。 关于容器也可以这样说,但是由于容器的使用非常广泛,因此出现了一个整个行业来解决眼前的安全问题

服务器端WebAssembly仍处于起步阶段。 WebAssembly已发布了安全准则,但是仍然缺少用于保护WebAssembly二进制文件在开发人员手中后可用来保护WebAssembly二进制文件的商业工具。 因此,该行业要想达到集装箱安全性还有很长的路要走。

前方的路

WebAssembly不是时尚。 它已经远远超出了几个GitHub项目,并在客户端获得了成功的记录。 有一个已建立的开源社区,WebAssembly系统接口更加注重与主机操作系统的标准化交互,这是朝着正确方向迈出的重要一步,可以在服务器端看到其全部潜力。

在服务器端进行WebAssembly开发有很多话要说。 在某些情况下,执行速度以纳秒为单位,超过了典型容器运行所需要的毫秒数。 此外,如果公司已经使用微服务,则松散耦合和多语言开发对于面向现代微服务的应用程序是固有的,因此添加由WebAssembly支持的新服务相对简单。

是的,要实现WebAssembly的价值,您需要掌握新技术,但并不需要重写公司的整个技术体系。 仅此一点就使采用具有吸引力。

八年前,很少有人知道,更不用说使用Docker了。 今天到处都是。 对于服务器端的WebAssembly来说,情况可能也是如此。 技术和支持已经存在,开发人员已经显示出越来越高的兴趣。 WebAssembly具有与Docker相同的采用方式。 从现在起的两年内,WebAssembly很有可能在服务器端变得司空见惯。 那些希望在即将到来的创新浪潮中处于领先地位的人现在会对WebAssembly产生兴趣。

翻译自: https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/Go-beyond-Docker-with-WebAssembly-on-the-server-side

服务器在docker映射

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值