Incloud-go-starter
平台部分功能使用了go底层依赖,incloud-go-starter就是java跟go通信的介质,基于google的开源框架gRPC实现,性能和安全性有保证。
incloud-go-starter版本与平台的版本一一对应,对应pom如下:
异常处理
由于是两个完全独立的程序,对于异常的处理,需要引入方做异常try catch处理,go端程序如果发生异常后,会通过gRPC框架返回, 客户端只需要捕获异常即可。
大多数情况下,在incloud-go-starter中已经对运行时异常做了处理,对于业务引入时,只需要捕获异常即可。
需要的配置文件
incloud-go-starter需要的配置文件分两种情况:
如果使用单次调用,如:incloud-go-code这种main方法直接运行,运行完即结束的情况,go.client.connect和go.client.start都可以设置为false,不需要启动go端程序。
反之,如果是incloud-go-serve这种长期运行的程序,go.client.connect和go.client.start都需要设置为true,需要启动go端程序。
心跳检测
incloud-go-starter会定时检测go端程序是否正常运行,如果go端程序异常退出,incloud-go-starter会自动重启go端程序。 并且会重试三次,如果三次都失败,则会抛出异常,需要引入方查看incloud-go-serve打印的日志来查看具体原因。
同时,如果incloud-go-starter不往go serve端程序发送心跳,go serve端程序在120秒内也会自动退出,这样可以保证go serve端程序不会一直运行。
对于服务型应用来讲,这是至关重要的,即可以保证incloud-go-starter端不用每次调用时都要启动go serve端。 同时,在incloud-go-starter的引用服务退出时,也会自动关闭go serve端程序。
API接口
虽然gRPC支持丰富的类型定义,但由于接口开发的复杂性,参数变动后,需要重新生成gRPC的相关代码,这会导致开发效率低下,
为了解决这一问题,接口定义的参数类型我们只支持一种:string类型,实际上他是json转换后的字符串,在go serve端再进行 json的反向转换即可;
.proto文件定义如下
java接口定义
目前为内部使用,暂不开放。