挖矿网
标题:
IPFS应用程序演示
[打印本页]
作者:
IP君
时间:
2019-3-13 20:20
标题:
IPFS应用程序演示
随着像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节点,我们可以构建和运行应用程序!
欢迎光临 挖矿网 (https://minersns.com/)
Powered by Discuz! X3.5