从0开始学DX Mesh--第三天

组织介绍

DigQuant Technology点宽科技开源项目:

Direct Exchange Mesh (DX Mesh) for Web 3.0 - 面向 Web3.0 的分布式应用架构
在这里插入图片描述

历史沿袭

DX Mesh是由DQtech团队提出的“RPC网络+区块链网络“的双层网络设计思路,在此设计概论基础上,DX Mesh项目进行了大胆的设计,一个新的”Dual Network Architecture(DNA)“网络结构被提出。
开源项目链接:https://gitee.com/DXmesh

xComPythonLib组件简介

xComPythonLib是什么(具体信息见:https://gitee.com/DXmesh/xComPythonLib/blob/dev/README.md

是xComPythonLib是 DXMesh 应用组件 DXC(DXMesh Componet),开发库。将 xPort 注入的接口,封装成 Rust 的 async 接口。提供 async 运行时,以及将 Common 接口导出给 DXC 使用。

xComPython组件搭建HelloWorldService工程

整体思路

一、启动xPort服务(用127.0.0.1:8090的监听端ip监听127.0.0.1:8091的服务端ip)。

二、服务端ip向xPort发送连接HelloWorldService工程的请求,xPort接收服务端ip的请求。

三、监听端ip从xPort接收服务端ip请求并且启动HelloWorldService工程反馈给xPort,xPort接收监听端ip的反馈并且传输给服务端ip。

四、服务端ip向xPort发送调用HelloWorldService工程SayHello接口并且向"name"传入参数的请求,xPort接收服务端ip的请求。

五、监听端ip从xPort接收服务端ip请求并且把HelloWorldService工程SayHello接口内容反馈给xPort,xPort接收监听端ip的反馈并且传输给服务端ip.

前期准备

需要搭建好之前的DX Mesh环境并能够成功启动xPort监听(前期搭建环境见:https://blog.csdn.net/YJZ555/article/details/134090421?spm=1001.2014.3001.5501)
在这里插入图片描述

第一步–Python环境搭建

首先进入xComPythonLib文件夹,在终端运行以下命令创建虚拟环境(这个虚拟环境会copy你本地python环境的所有库):

python -m venv venv 

在这里插入图片描述
会生成一个venv的文件夹,然后在终端运行以下命令进入虚拟环境:

.\venv\Scripts\activate

在这里插入图片描述

第二步–项目搭建

首先在xComPythonLib文件夹下创建一个项目文件,然后进行该文件夹,运行以下命令:

mkdir xxx

可以看到,生成了yjz的文件夹
在这里插入图片描述
然后运行以下命令创建一个DX Mesh工程,这里以HelloWorldService为例子:

xbuilder new -n HelloWorldService

可以看到,生成了source_api_0_0_1.proto的文件:
在这里插入图片描述

然后运行以下命令初始化编程语言(这里是python语言为例子,具体信息见:https://gitee.com/DXmesh/xComPythonLib/blob/dev/README.md):

xbuilder init -l py

可以看到,生成了src的文件夹,里面有需要编程的python文件和接口:
在这里插入图片描述

然后打开./xComPythonLib/yjz/src/service.py,编写python代码,我这里打印了运行的日志,并且给source_api.HelloReply接口传递了"hello world"的信息输出,代码如下:

  # SayHello
  async def say_hello(self, ctx: xport_core.Context,  param: source_api.Hello) -> source_api.HelloReply:
    #raise NotImplementedError("未实现 say_hello")
    logger.info("name = {}123".format(param.name) )
    reply = source_api.HelloReply()
    reply.greeting = "hello world"
    #reply.greeting = "hello yjz,现在就回家!"
    return reply
  # EmptyParamAndReply
  # async def empty_param_and_reply(self, ctx: xport_core.Context):
  #   raise NotImplementedError("未实现 empty_param_and_reply")

在这里插入图片描述
然后对修改的文件进行保存,然后运行以下命令对工程进行打包:

xbuilder pack

可以看到,生成了HelloWorldService_0_0_1.dxc文件和import_api_HelloWorldService_0_0_1.proto文件:
在这里插入图片描述

然后运行以下命令打包HelloWorldService_0_0_1.dxc(其中D:\DXMesh\xPort为你本地xPort文件夹所在位置):

xbuilder install -x  D:\DXMesh\xPort

可以看到,HelloWorldService_0_0_1.dxc文件已经被安装到了D:\DXMesh\xPort\dxc路径下:
在这里插入图片描述

第三步–使用xPort测试HelloWorldService工程

首先创建一个新终端进入xPort文件夹内,运行以下命令开启xPort的监控服务:

cargo run

以下是我电脑下的例子:
在这里插入图片描述

可以看到,监听端ip(127.0.0.1:8090)已经通过xPort成功监听到服务端ip(127.0.0.1:8091):
在这里插入图片描述

然后启动postman运行以下命令,用服务端ip向xPort发送连接HelloWorldService工程的请求(这里用的是调试模式的接口调用):

 {
    "dxc_name":"XComService",
      "dxc_version":"0.0.1",
      "service_name":"XComService",
      "api":"LoadService",
      "params":{
         "dxc_name":"HelloWorldService",
      "dxc_version":"0.0.1",
      "service_name":"HelloWorldService",
      "only_build_ipc": true
      }
  }

在这里插入图片描述

可以看到,xPort已经接收到服务端ip申请启动HelloWorldService工程的请求并且反馈给监听端ip:
在这里插入图片描述

然后在原先的工程路径运行以下命令,监听端ip启动HelloWorldService工程:

python src/lib.py  --dxc-name="HelloWorldService" --dxc-version="0.0.1"  --service-name="HelloWorldService" --log-level="debug"  --sgement-id=1

在这里插入图片描述

可以看到,xPort已经成功接收到监听端ip启动HelloWorldService工程的所有连接节点:
在这里插入图片描述

可以看到,xPort也把监听端ip成功启动HelloWorldService工程的结果反馈给了服务端ip:
在这里插入图片描述

接下来,运行以下命令,我使用服务端ip调用HelloWorldService的SayHello接口并给name传入了“111”发送给xPort:

 {
    "dxc_name":"HelloWorldService",
      "dxc_version":"0.0.1",
      "service_name":"HelloWorldService",
      "api":"SayHello",
      "params":{
       "name":"111"
      }
  }

可以看到,xPort把“111”字符串从服务端ip接收,并传输到监听端ip的HelloWorldService工程的name参数输出:
在这里插入图片描述

可以看到,xPort也从监听端ip的HelloWorldService工程里面接收"hello world"字符串并且传输服务端ip:
在这里插入图片描述

欧克,到这里你已经成功使用DX Mesh搭建了一个Helloworld工程,并使用xPort进行两个ip端口之间的相互通信,完成两个端口之间搭建工程的过程。

第四天预告

使用DX Mesh的发行版进行环境搭建和功能测试。
DX Mesh已经正式发布xPort-v0.1.4-alpha发行版,可以减少前期环境搭建的工作!!!

若对DX Mesh架构和实操过程中有任何问题,可评论、私信、邮箱或者加下列微信和我一起探讨学习(我的邮箱:2195745704@qq.com):
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值