什么是gRPC?
gRPC是谷歌开源的一个远程方法调用(Remote Process Call)框架,gRPC基于CS模型,使得客户端可以像调用本地方法一样调用远程服务端的方法,使得您能够更容易地创建分布式应用和服务。
gRPC使用ProtoBuffers作为数据序列化传输工具,gRPC-java使用netty作为网络通信基础设施。
V2Ray开放基于gRPC的API接口
HandlerService
一些对于入站出站代理进行修改的 API,可用的功能如下:
- 添加一个新的入站代理;
- 添加一个新的出站代理;
- 删除一个现有的入站代理;
- 删除一个现有的出站代理;
- 在一个入站代理中添加一个用户(仅支持 VMess);
- 在一个入站代理中删除一个用户(仅支持 VMess);
LoggerService
支持对内置 Logger 的重启,可配合 logrotate 进行一些对日志文件的操作。
StatsService
内置的数据统计服务
SpringBoot 项目通过gRPC向V2Ray服务添加用户、删除用户
v2ray服务config.json配置开放api接口
- 从github拉去v2ray代码:git clone git@github.com:v2ray/v2ray-core.git
- 编译v2ray:cd v2ray-core/main; go build -ldflags ‘-w -s’ -o v2ray
- 编译v2ctl:cd v2ray-core/infra/control/main; go build -ldflags ‘-w -s’ -o v2ctl
- 配置config.json,开放API接口
1 | { |
- 运行v2ray服务:./v2ray -config config.json
springboot项目引入gRPC
参考https://github.com/grpc/grpc-java
pom.xml 引入grpc依赖:
1 | <dependency> |
引入自动生成代码插件:
1 | <build> |
自动生成代码插件默认根据src/main/proto目录下的proto文件来生成java代码,放在target/generated-sources目录下
编写gRPC client 代码
1 |
|