[IPFS挖矿教程] IPFS应用程序演示

[复制链接]
14277 |0
发表于 2019-3-13 20:20:11 | 显示全部楼层 |阅读模式
随着像IPFS这样的分布式协议变得越来越普遍,我们将开始看到许多新的应用程序在分布式web上开发,例如offline first,privacy和reduced bandwidth。



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

重要的是要看到像IPFS这样的新技术如何不直接绑定到区块链。我们可以仅使用IPFS和现有的经过时间测试的工具构建有用的应用程序。




Lambda-like onIPFS
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节点,我们可以构建和运行应用程序!

0cgr2hxp5lc.png

0cgr2hxp5lc.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表