服务器在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密集型游戏和其他类型的应用程序。
在客户端,有效的方法是将二进制数组嵌入某些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虚拟机下运行。
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产生兴趣。
服务器在docker映射