libp2p 替代方案调研

背景

libp2p作为P2P服务常用的通信框架,已经支持了项目需求。但是由于libp2p过于庞大,项目中只用了不到十分之一的功能,所以需要找个替代通信框架。新的框架需要满足两个特性:(1)原生(指能够支持多平台的原生开发语言,比如安卓的kotlin、java, 以及IOS的objectC、swift)支持跨平台(比如安卓、IOS);(2)能够支持网络穿透。

目前先调研gRPC。

gRPC是否支持网络穿透?

常见的网络穿透协议:STUN/TURN/UPNP。libp2p 的relay协议也支持。

调研下来,gRPC不支持网络穿透。

现在已经有其他区块链项目(rChain)使用gRPC,并且自己实现了网络穿透。

https://rchain.atlassian.net/wiki/spaces/CORE/pages/498958481/RNode+supported+network+configuration

暂定结论: 自己实现穿透功能。

移动端开发语言有哪些?

Android 主要的开发语言:Kotlin, Java.

IOS 主要的开发语言: Objective-C, Swift

gRPC是否原生支持移动端开发语言?

结论:都支持。

Kotlin: https://grpc.io/blog/kotlin-gradle-projects/

Java: https://github.com/grpc/grpc-java

Object-C: https://grpc.io/docs/tutorials/basic/objective-c/ https://github.com/grpc/grpc/tree/master/src/objective-c

Swift: https://github.com/grpc/grpc-swift

Todo : 有没有必要现在去搭建demo验证一下?

gRPC之外,有没有其他的通信框架?

image.png

目前找到的跨语言、跨平台通信框架,除了gRPC, 还有thrift。

阿里的dubbo 只支持Java。

Motan是新浪微博开源的一个Java 框架。

rpcx是Go语言生态圈的Dubbo, 比Dubbo更轻量。

https://colobu.com/2016/09/05/benchmarks-of-popular-rpc-frameworks/

可能的TODO

  • 移动端Android IOS gRPC demo ?
  • gRPC 文档梳理学习
  • 调研一下thrift 对移动端的支持力度?
  • 其他?