此项目为个人的业余项目,主要目的是想以全栈的方式从前端到后端,从移动端到桌面,提供一个具有社交功能的助手服务,比如:扫码翻译、名片识别、电子名片交换、即时通讯、语音识别、二维码扫描等功能。当前项目为服务端,主要功能是提供GraphQL和WebSocket的数据接口。
项目地址如下: https://github.com/JermineHu/ait 此项目为个人的业余项目主要包含如下功能:
- 个人认为采用REST API设计接口的在某些调用上很不优雅,所以比较推崇graphql作为接口描述,该项目主要提供graphql服务,并直接支持http2.0;
- 内部web框架基于echo,能保证轻量级和最小化编译;
- 提供websocket服务,用于服务端推送数据到客户端,主要是websocket跨平台,对web前端友好;
- 后期将增加webrtc服务,主要有两方面目的,一个是实时视频语音通话(一对一),另一个就是视频会议或直播(一对多,借助cdn或者nginx通过rtmp或HLS协议在客户端获取视频资源,已经做了了解并确认了可行性);
- 数据库存储将选用TIDB,因为看他们的roadmap,将同时支持pg和mysql协议,并已经支持json,后续还会加入文档存储很期待,毕竟tidb也是用go和rust写的,都是我比较喜欢的;
- go的依赖包采用glide,不解释它的强大;
- 微服务之间采用grpc调用,序列化采用protobuff,因为它可以跨语言调用,设计完美;
- 网站静态化将采用强大的hugo;
- 为了提高网站的相应和处理速度,支持了消息队列Kafka;
- 搜索引擎用ES;
- 服务发现用consul;
- 采用跨平台方案 React Native程序编写
- 序列化采用protobuff
- 查询采用grahql实现
- 客户端通讯用HTTP2.0,将需要的数据也一并推送给客户端
- 原生程序Android采用Kotlin实现,IOS采用Swift
- 采用websocket进行广播通知
-
采用Electron编写跨平台的桌面应用
-
序列化采用protobuff
-
查询采用grahql实现
-
客户端通讯用HTTP2.0,将需要的数据也一并推送给客户端
5.采用websocket进行广播通知
- CI使用Drone
- 使用vagrant统一开发环境
- 自动编排和调度使用rancher
- 支持docker的基础镜像使用coreos或者rancheros
- 环境统一采用yml来配置,只需要执行以下docker-compose即可启动一个完整的开发环境,比如redis、mongodb等服务,直接一步到位;
- 反向代理 使用traefik;
- git服务器采用gitea;