设计原则
- 高兼容性
- 极致性能
- 全链路异步
- 易用
- 可扩展
功能架构
分层架构设计
架构图中ESA HttpServer
, Restlight Server
, Restlight Core
, Restlight for Spring
, Restlight Starter
几个模块均可作为一个独立的模块使用, 满足不同场景下的需求。
ESA HttpServer
基于Netty
实现的一个简易的HttpServer, 支持Http1.1/Http2以及Https等
Restlight Server
在ESA HttpServer
基础之上封装了
- 引入业务线程池
Filter
- 请求路由(根据url, method, header等条件将请求路由到对应的Handler)
- 基于
CompletableFuture
的响应式编程支持 - 线程调度
- …
对应启动入口类esa.restlight.server.Restlite
Tip
适合各类框架,中间件等基础组建中启动或期望使用代码显示启动HttpServer的场景Restlight Core
在Restlight Server
之上, 扩展支持了Controller
方式(在Controller
类中通过诸如@RequestMappng
等注解的方式构造请求处理逻辑)完成业务逻辑以及诸多常用功能
HandlerInterceptor
: 拦截器ExceptionHandler
: 全局异常处理器BeanValidation
: 参数校验ArgumentResolver
: 参数解析扩展ReturnValueResolver
: 返回值解析扩展RequestSerializer
: 请求序列化器(通常负责反序列化Body内容)ResposneSerializer
: 响应序列化器(通常负责序列化响应对象到Body)- 内置
Jackson
,Fastjson
,Gson
,ProtoBuf
序列化支持 - …
对应启动入口类esa.restlight.core.Restlight
Tip
适合各类框架,中间件等基础组建中启动或期望使用代码显示启动HttpServer的场景Restlight SpringMVC & Restlight JAX-RS
-
Restlight SpringMVC
对SpringMVC
中的注解使用习惯的Restlight Core
的扩展实现(@RequestMapping
,@RequestParam
等)。 -
Restlight JAX-RS
对JAX-RS
中的注解使用习惯的Restlight Core
的扩展实现(@Path
,@GET
,@QueryParam
等)。
Restlight for Spring
在Restlight Core
基础上支持在Spring
场景下通过ApplicationContext
容器自动配置各种内容(RestlightOptions
, 从容器中自动配置Filter
, Controller
, ControllerAdvice
等)
Tip
适合Spring Boot
场景
Restlight Starter
在Restlight for Spring
基础上支持在Spring Boot
场景的自动配置
Tip
适合Spring Boot
场景
Restlight Actuator
在Restlight Starter
基础上支持在Spring Boot Actuator
原生各种Endpoint
s支持以及Restlight
独有的Endpoint
s。
Tip
适合Spring Boot Actuator
场景