A Toy Based on Spring Boot
and Grpc-Java
.
它不是轮子,更不是新的框架!只是作者觉得(自以为是)OpenFeign的限制使得有些需求无法实现(可单体部署、又可以微服务部署), 然后整合
Spring Boot
,Spring Cloud
与Grpc-Java
基于Protocol Buffers 搞的一个看上去解决了OpenFeign
这些限制的小玩具, 顺带实现了一个小小的网关来隔离南北与东西流量。
- 单、微皆可: 打包在一起部署就是单体应用,分开部署就是微服务架构应用,不需要修改代码即可实现。
- 流量隔离: 通过内置网关实现南北流量与东西流量隔离,让内部的流量仅内部可见。
- 观测、流控与安全: 微调Spring Security提供安全保证、基于Spring Actuator提供可观性、整合Sentinel实现流控。
- 分布式事务:基于Seata实现。
Version | Spring Boot | Spring Cloud | protobuf-Java | grpc-java |
---|---|---|---|---|
1.2.x | 3.2.x | 2023.0.3 | 3.25.x | 1.68.0 |
3.3.x | 3.3.x | 2023.0.3 | 3.25.x | 1.68.0 |
请阅读apzda-cloud-gsvc-demo/demo-protos下的工程源码。
- 建议使用独立的
maven
工程来定义接口与实现工程分离。- 只支持
proto3
。
特别说明:
- 网关与基于WebClient客户端(类似OpenFeign的客户端)的调用只支持: UNARY和SERVER-STREAMING。
- 网关会将SERVER-STREAMING方法转成SSE(Server-Sent Events), 如果该方法是南北流量,请保证客户端可以处理。
- 东西流量使用grpc调用时,支持所有种类(UNARY, SERVER-STREAMING, CLIENT-STREAMING, BIDI-STREAMING)的方法。
- 单体部署时,需要关闭分布式事务,因此TCC模式会失效。
请阅读apzda-cloud-gsvc-demo下的工程源码。
请阅读apzda-cloud-gsvc-demo下的工程源码。
调用关系如下:
foo ↗ ↓ demo → bar → math
请阅读apzda-cloud-gsvc-demo/demo-allinone-app工程的源码。
- 将工程导入到IntelliJ IDEA。
- 将
gsvc-compiler
安装(或mvn install
)到本地。 - 执行编译(或
mvn compile
)。 - 在本地启用一个redis服务器(或改配置连远程redis)。
- 启动服务: math,foo,bar,demo
- 打开
bar-test.http
,foo-test.http
,demo-test.http
。 环境选dev
,然后执行。
- 打开
- 启动: math,allinone
- 打开
bar-test.http
,foo-test.http
。 环境选sit
,然后执行。
- 打开
文档传送门。
- 欢迎
PR
。 - 欢迎提
ISSUE
。 - 欢迎提建议(意见请保留)。