Web 3.0不是要取代现有的服务,而是要连接和利用它们。
随着像IPFS这样的分布式协议变得越来越普遍,我们将开始看到许多新的应用程序在分布式web上开发,例如offline first ,privacy和reduced bandwidth。
本文介绍了IPFS上的AWS Lambda copy cat应用程序。我们将使用Golang、Docker、IPFS和Python。需要注意的一点是,这个项目不会使用任何区块链。
重要的是要看到像IPFS这样的新技术如何不直接绑定到区块链。我们可以仅使用IPFS和现有的经过时间测试的工具构建有用的应用程序。
Lambda-like on IPFS
IPFS PubSub计算是IPFS支持的早期Dapp。它的目标是将功能授权为类似于AWS Lambda的服务。我计划继续开发这个应用程序,因为它在构建便携微服务方面有很大的潜力。
该应用程序允许用户在IPFS PubSub消息触发时在docker容器中执行Python 3.7代码。
使用IPFS PubSub作为消息传递主干允许我们分离代码编写器和代码执行器。尽管有许多成熟的消息队列系统可用——但我们希望围绕IPFS构建,因为IPFS具有离线特性,并且具有良好的项目开发前景。我们还希望使用IPFS(不仅仅是PubSub),因为我们需要一种方法来分发我们开发的代码包。IPFS是一个完美的分享方式。
介绍- IPFS PubSub计算
IPFS PubSub计算(因为当时没有更好的名称)有一个非常直接的执行流程。
首先,我们需要编写代码和事件——就像在AWS Lambda中一样。
这里我们使用的一些代码对应于第二个project Euler问题的解决方案(关于添加斐波那契数)
将代码和事件发送到IPFS PubSub计算服务器
我们将代码和作用于代码的事件发送到运行在localhost:8769上的本地服务器,这将取出输入并将其转发到PubSub通道。实际代码如下所示。
code := c.Query("code") event := c.Query("event") fmt.Println("Publishing") msg := `{ "action": "execute", "data": { "event": "` + event + `", "code": "` + code + `" } }`
现在消息被发送到IPFS PubSub通道(我们使用test作为默认通道)
通过IPFS PubSub发送到executor节点的数据
另一个IPFS节点(或演示的相同节点)正在监听通道,并在test通道
上广播“execute”消息时执行dockerrun。实际代码如下所示。
cmd := "docker" args := []string{ "run", "--rm", "-v", "THE_CODE_LOCATION:/var/task", "lambci/lambda:python3.7", "lambda_function.lambda_handler", event, } out, err := exec.Command(cmd, args...).Output()
现在代码从消息复制到一个临时位置。然后docker容器读取代码,并用给定的event输入执行代码。
Docker容器处理代码并发送回服务器
docker容器是AWS Python 3.7 Lambda容器的精确副本,并被用作本地开发的参考。在我们的例子中,它作为一个包含Python的工作人员工作得非常好。
由于我们可以快速创建和销毁容器,所以我们使用事件处理程序将这些容器连接到网络,从而创建了一个微型IPFS power分布式计算机!经过一些努力,这个系统可以跨许多机器扩展,并利用IPFS的所有优点。
一个主要的改进——下一步是允许用户将代码作为对象部署到IPFS。通过这种方式,我们可以将代码引用为一个CID,并将函数分发给其他人。如果他们也有ipfs-pubsub-compute,他们就能够自己执行代码。
通过添加一些代码,应用程序可以处理(CID、事件)请求,并在执行时获取代码。
这些努力几乎实现了一个离线的first server-less体系结构,但肯定需要大量工作来准备生产。
演示
基于上述概念和运行go-ipfs节点,我们可以构建和运行应用程序!🙌
编辑到执行演示
上面是IPFS PubSub计算的一个工作示例,其中一个简单的lambda函数运行助手fibonacci函数,并返回所有偶数fibonacci数的和。然后对函数进行编辑,以显示数字列表,而不是和。正如您可以看到的,两次输出都打印在下面的窗格中。
这说明了端到端的过程:
1.在UI中编辑代码的用户
2.代码是base64编码和发送到服务器的事件(单击🗒️符号旁边execute按钮打开面板)
3.服务器通过IPFS PubSub发送编码后的值
4.IPFS PubSub侦听器解码消息并将其复制到Docker容器中
5.Docker容器执行代码(AWS Lambda Python 3.7环境的精确复制)
6.lambda函数的结果被转发回服务器
7.服务器在屏幕上显示结果
查看这里的项目:ipfs-pubsub-compute
下一个步骤
允许IPFS代码上传
服务器可以获取代码
导出到AWS兼容的ZIP文件
允许用户导入自定义库
将Deploy添加到IPFS按钮
整个应用程序少于130行go代码,它需要docker、go和lambci/lambda:python3.7 docker映像。它是与IPFS的API交互的简单应用程序的样板。这里我们只使用了PubSub API,但是IPFS也有一个丰富的存储API。
这个小项目有很多方法可以实现,但希望它能成为IPFS上一个简单但有用的应用程序。没有区块链,我们仍然使用HTTP服务器和商业Docker容器的副本。Web 3.0不是要取代现有的服务,而是要连接和利用它们。
点对点科技简介
点对点科技深耘IPFS与Filecoin技术,坚持区块链技术改变未来的信念。点对点 IPFS 数据中心是目前国内技术领先,性价比高、保障优的投资标的。自建杭州数据中心,合作数据中心分布于上海、宁波、河北、香港、斯德哥尔摩(瑞典)等地。点对点数据中心具有优秀的硬件配置与目前国内优质的网络节点资源。点对点科技力求将IPFS爱好者升级为IPFS领军者与受益者,让IPFS颠覆传统互联网,共同开启 WEB 3.0时代。
想了解更多区块链知识吗?关注我吧!
原创文章,作者:三色団子,如若转载,请注明出处:https://ipfsdrop.com/practice/ipfsyingyongchengxuyanshi/