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

从0开始学DX Mesh第六天--protobuf接口讲解和简单的protobuf编程

  • 组织介绍
  • 历史沿袭
  • 前言
  • protobuf简介
    • protobuf优势
    • protobuf语法讲解
    • protobuf常见的数据类型
    • protobuf常用特殊字符
  • DX Mesh编写protobuf和RPC接口
  • 第七天预告

组织介绍

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

前言

DX Mesh提出了节点与节点传输的RPC分布式网络结构,整个DX Mesh在进行节点间工程转化和传输中涉及到多种语言,所以采用了protobuf网络传输协议。protobuf的编写和字段规定是整个DX Mesh进行工程搭建的第一步!!!

protobuf简介

Protobuf是Protocol Buffers的简称,它是Google公司开发的一种数据描述语言,是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化 。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。

protobuf优势

  1. 序列化后体积相比Json和XML很小,适合网络传输
  2. 序列化反序列化速度很快,快于Json的处理速度
  3. 消息格式升级和兼容性还不错
  4. 支持跨平台多语言

protobuf语法讲解

DX Mesh用到的protobuf为protobuf3,protubuf3的语法如下图:
在这里插入图片描述

protobuf常见的数据类型

类型说明
string字符串类型,要求是utf-8或7-bit与ascii编码的字符串
bytes比特类型
bool布尔类型
int3232位整型
int6464位整型
float浮点类型
repeated数组(列表) repeated string data = 1;
map字典类型 map<string, string> data = 1

protobuf常用特殊字符

类型说明
package包名
syntaxprotobuf版本
service定义服务
rpc定义服务中的方法
stream定义的方法传输为流传输
message定义消息体 message User{}
extend扩展消息体 extend User{}
import导包
google.protobuf.Empty无参数设置、无返回值设置
//注释

DX Mesh编写protobuf和RPC接口

首先,创建一个TestService的文件夹,进入该文件夹,运行以下命令初始化TestService的工程:

xbuilder new -n TestService

可以看到,DX Mesh会自动生成一个source_api_0_0_1.proto的文件:
在这里插入图片描述
DX Mesh内置默认初始化为helloword的功能,所以可以source_api_0_0_1.proto看见:

  1. 定义了一个名为TestService的service服务
  2. 一个SayHello的RPC接口和一个EmptyParamAndReply的RPC接口
  3. 一个Hello的接收数据字段和一个HelloReply返回数据字段

在这里插入图片描述

现在我需要编写一个“学生信息转化”的功能接口:接收信息字段为学生的名字,年龄,学号,返回信息字段为“xxx学生,xx岁,该生学号为xxx”的一句话。
以下为接收信息字段的代码:

message Student_Information {
  string name = 1;
  int32 age = 2;
  int32 Student_ID = 3;
}

以下是返回信息字段的代码:

message Ruselt {
  string greeting = 1;
}

这是我编写好的source_api_0_0_1.proto文件,Change为接口名:
在这里插入图片描述
运行以下代码进行工程语言初始化,DX Mesh目前支持Python和Rust两种编程语言,我这里用的是Python语言:

xbuilder init -l py

可以看到生成了src文件,我们进行接口功能编写只需要关注于src\service.py文件即可:
在这里插入图片描述

打开src\service.py文件,可以看到DX Mesh已经初始化好了基本代码:
在这里插入图片描述

这里编写了一个python接收信息字段,信息字段转化,返回信息字段的功能:
在这里插入图片描述
接下来运行以下命令对工程进行打包:

xbuilder pack

可以看到,工程已经打包成功了
在这里插入图片描述

接下来运行以下命令把工程安装到xport服务上:

xbuilder install -x DX-Mesh\xport

可以看到,已经成功安装到了xport上了:
在这里插入图片描述

接下来修改xport\dxmesh.toml的配置文件,这里用127.0.0.1:8090ip端口(监听端)监听127.0.0.1:8091ip端口(服务端):
在这里插入图片描述

启动xport,可以看到XComService_0_0_1工程和TestService_0_0_1工程已经被成功启动:
在这里插入图片描述

这里使用postman调用一下TestService_0_0_1工程的Change接口:

  1. 服务端(8091端口)向xport发起调用接口请求并传输数据。
  2. xport接收服务端(8091端口)的接口调用请求和数据。
  3. xport把接收的{“name”:“yjz”,“age”:“18”,“Student_ID”:“2023”}数据传输给监听端(8090端口)。
  4. 监听端(8090端口)接收数据,并把{“greeting”:“yjz学生,18岁,该生学号为2023”}传输给xport。
  5. xport再反馈给服务端(8091端口)。

在这里插入图片描述

第七天预告

使用DX Mesh的xComPython组件搭建第三个工程项目–用户系统(注册、登录、修改用户信息)。

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值