1. IPFS点滴资讯首页
  2. 实战操作

IPFS应用程序演示

Web 3.0不是要取代现有的服务,而是要连接和利用它们。

随着像IPFS这样的分布式协议变得越来越普遍,我们将开始看到许多新的应用程序在分布式web上开发,例如offline first ,privacy和reduced bandwidth。

IPFS应用程序演示

本文介绍了IPFS上的AWS Lambda copy cat应用程序。我们将使用Golang、Docker、IPFS和Python。需要注意的一点是,这个项目不会使用任何区块链。

IPFS应用程序演示

重要的是要看到像IPFS这样的新技术如何不直接绑定到区块链。我们可以仅使用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应用程序演示

将代码和事件发送到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应用程序演示

通过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输入执行代码。

IPFS应用程序演示

Docker容器处理代码并发送回服务器

docker容器是AWS Python 3.7 Lambda容器的精确副本,并被用作本地开发的参考。在我们的例子中,它作为一个包含Python的工作人员工作得非常好。

由于我们可以快速创建和销毁容器,所以我们使用事件处理程序将这些容器连接到网络,从而创建了一个微型IPFS power分布式计算机!经过一些努力,这个系统可以跨许多机器扩展,并利用IPFS的所有优点。

一个主要的改进——下一步是允许用户将代码作为对象部署到IPFS。通过这种方式,我们可以将代码引用为一个CID,并将函数分发给其他人。如果他们也有ipfs-pubsub-compute,他们就能够自己执行代码。

通过添加一些代码,应用程序可以处理(CID、事件)请求,并在执行时获取代码。

这些努力几乎实现了一个离线的first server-less体系结构,但肯定需要大量工作来准备生产。

演示

基于上述概念和运行go-ipfs节点,我们可以构建和运行应用程序!🙌

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不是要取代现有的服务,而是要连接和利用它们。

原创文章,作者:三色団子,如若转载,请注明出处:https://ipfsdrop.com/practice/ipfsyingyongchengxuyanshi/

发表评论

电子邮件地址不会被公开。 必填项已用*标注

QR code