-
Notifications
You must be signed in to change notification settings - Fork 17
Overview
- 兼顾简单与高效,支持跨语言的传输层。
- 契约式编程,使用Java定义IDL,无代码生成,贴近SpringBoot RESTful的开发体验。
- 比Spring Cloud 更好的服务路由与治理能力。
简单通用的HTTP/HTTPS,支持多路复用与头压缩的HTTP/2。
Netty的封装较为低级,为了快速投入生产,使用Jetty支持。
为性能考虑,不直接使用Servlet/Spring MVC体系,而是实现Jetty的Handler。
简单通用的JSON,二进制的ProtocolBuf。
为了达成 Java First无生成代码的设计原则,均使用Jackson实现(Jackson暂只支持Protocolbuf v2)
HTTP/HTTP2/JSON/ProtocolBuf均有跨语言实现。
其他语言需要按文档拼装相应的JSON负载,并放入规范需要的Http Headers。
也可以使用swagger来生成其他语言的JSON负载,以及Jackson输出PB IDL供其他语言使用。
Java语言的服务路由功能在客户端实现。
而其他语言必须通过Proxy(基于Jetty,与Netty相比在异步多路复用上有不足)。可直接使用中央Proxy集群,也可以自行实现该语言的本地Proxy与中央Proxy集群间的高可用切换。
支持同步接口,同时支持基于Future的异步接口,基于Callback的异步接口。
可能会支持基于Quasar的协程实现。
契约式编程,客户端通过服务方提供的SDK,使用接口类直接调用服务。
Java IDL,在接口上使用annotation定义服务,集成Swagger提供在线测试与文档中心功能。
同时,Swagger有代码生成机制,在真正需要时可考虑使用。
无代码生成过程,通过Java Proxy/CGLib反射/Jackson ProtocolBuf等技术实现框架。
深度集成SpringBoot,应用里可继续运行传统RESTful与Web页面。
- 基于Zookeeper/etcd的服务注册与发现
- 权重的负载均衡策略(随机,轮询,哈希)
- 自定义规则路由,跨机房路由
-
超时,重试
-
熔断,限流,降级
-
健康度检查
-
配置中心集成
-
分布式调用链监控系统集成