#分布式应用 #移动 #存储 #数据库 #网络

exocore-protos

Exocore(分布式应用框架)的Protobuf和cap'n protos

22个版本

0.1.25 2023年5月22日
0.1.24 2022年10月12日
0.1.23 2022年8月9日
0.1.22 2022年6月28日
0.1.11 2021年7月30日

#1303WebAssembly

Download history 170/week @ 2024-04-01 85/week @ 2024-04-08 78/week @ 2024-04-15 33/week @ 2024-04-22 89/week @ 2024-04-29 102/week @ 2024-05-06 68/week @ 2024-05-13 94/week @ 2024-05-20 57/week @ 2024-05-27 61/week @ 2024-06-03 43/week @ 2024-06-10 69/week @ 2024-06-17 91/week @ 2024-06-24 17/week @ 2024-07-01 21/week @ 2024-07-08 55/week @ 2024-07-15

每月184次下载
13 个crate中使用 (直接使用8个)

Apache-2.0

305KB
7.5K SLoC

Exocore

codecov Build

警告:Exocore处于非常早期的开发阶段,因此不完整、不稳定,可能完全不安全。请自行承担风险。

Exocore是一个具有私有和加密数据存储的分布式应用框架。它可以被视为一个基础设施,允许用户拥有自己的个人云,该云可以通过WebAssembly应用程序扩展,并通过Web/移动/后端SDK进行访问。它旨在能够抵御故障,并最终允许离线使用(例如,在移动设备上)。

Exocore主要针对 Exomind 构建,这是一个与该项目并行构建的个人知识管理工具。Exocore是Exomind的应用框架。

Exocore中的主要概念是Cell,它是用户应用程序和数据的独特容器。

一个Cell包括

  • Chain节点通过使用区块链数据结构来管理复制和存储。
  • Store节点管理数据的索引、查询和突变(与chain节点共同部署)。
  • Application host节点运行用WebAssembly编写的应用程序(与store节点共同部署)

路线图

v0.1(进行中)

  • 链存储和复制:概念验证
  • 传输:概念验证
  • 实体存储:概念验证
  • 应用程序(WASM主机):概念验证

v0.2

  • Cell管理(配置复制)
  • 增强安全性(链加密、配置签名等)

v0.3及以后

  • Android SDK
  • Blob存储(IPFS)
  • 离线支持

依赖项

  • 构建依赖项

    • 在MacOS上:安装Xcode和命令行工具
    • 在Ubuntu上:apt install build-essential pkg-config libssl-dev
  • Rust

    • 使用 rustup 进行安装
    • 安装 clippyrustfmtrustup component add clippy rustfmt
  • Cap'n Proto

    • 在MacOS上:brew install capnp
    • 在Ubuntu上:apt install capnproto
  • Protobuf

    • 在MacOS上:brew install protobuf swift-protobuf
    • 在Ubuntu上:apt install protobuf-compiler

使用 & 配置

  • 命令行界面

    • ./tools/install.shcd exo && cargo install --path . 或获取最新发布的二进制文件。
  • 配置

    • 大多数命令都需要一个节点配置文件,示例可以在这里找到:[./examples/node.yaml]。 exo 还可以生成和管理配置。参见 快速入门
    • 至少,配置需要2个密钥对:一个用于节点,一个用于单元格。
    • 节点密钥对在每个节点中是唯一的,而单元格密钥对在托管单元格的服务器之间是共享的。
    • 有关示例2节点设置的示例,请参阅 快速入门 部分。

快速入门

创建托管在2个节点上的单元格

  • 在节点1上

    • 生成配置

      exo--dir./node1 node init--name node1

    • 编辑配置以包括唯一且可访问的地址

      exo-d./node1 config edit

    • 生成单元格

      exo-d./node1 cell init--name my_cell

  • 在节点2上

    • 生成配置

      exo--dir./node2 node init--name node1

    • 编辑配置以包括唯一且可访问的地址。如果两个节点都在同一台机器上运行,请确保它们具有唯一的端口。

      exo-d./node2 config edit

    • 请求作为链和存储节点加入单元格。这将使用 exocore 的发现服务器(disco.exocore.io)来交换配置

      exo-d./node2 cell join--chain--store

      并复制显示的发现 PIN。

  • 在节点1上

    • 将节点2添加到单元格

      exo-d./node1 cell node add

      粘贴节点2的发现 PIN 并接受其加入请求。

  • 启动两个节点

    • 节点1:exo -d ./node1 daemon
    • 节点2:exo -d ./node2 daemon

加入示例Web客户端

安装 & 运行Exomind

客户端

Web

C

iOS

文档

依赖项

~6–8.5MB
~166K SLoC