Skip to content
This repository has been archived by the owner on Jun 6, 2018. It is now read-only.

Overview

Calvin Xiao edited this page Dec 20, 2016 · 30 revisions

1. 设计原则

  • 兼顾简单与高效,支持跨语言的传输层。
  • 契约式编程,使用Java定义IDL,无代码生成,贴近SpringBoot RESTful的开发体验。
  • 比Spring Cloud 更好的服务路由与治理能力。

2. 传输层设计

2.1 传输协议

简单通用的HTTP/HTTPS,支持多路复用与头压缩的HTTP/2。

Netty的封装较为低级,为了快速投入生产,使用Jetty支持。

为性能考虑,不直接使用Servlet/Spring MVC体系,而是实现Jetty的Handler。

2.2 负载协议

简单通用的JSON,二进制的ProtocolBuf。

为了达成 Java First无生成代码的设计原则,均使用Jackson实现(Jackson暂只支持Protocolbuf v2)

2.3 跨语言实现

以Java为主,HTTP/HTTP2/JSON/ProtocolBuf均有跨语言实现。

Java语言的服务路由功能在客户端实现,而其他语言必须通过Proxy。

3. Java First契约式编程 与 SpringBoot开发体验。

契约式编程,客户端通过服务方提供的SDK,使用接口类直接调用服务。

Java IDL,在接口上使用annotation定义服务,集成Swagger提供在线测试与文档中心功能。

无代码生成过程,通过Java Proxy/CGLib反射/Jackson ProtocolBuf等技术实现框架。

深度集成SpringBoot,应用里可继续运行传统RESTful与Web页面。

4. 服务路由与治理能力

  • 基于Zookeeper/etcd的服务注册与发现

  • 权重的负载均衡策略

  • 自定义规则路由,跨机房路由

  • 超时,重试,熔断,限流,降级

  • 配置中心集成

  • 分布式调用链监控系统集成

Clone this wiki locally