设计原则
- 高兼容性
- 极致性能
- 全链路异步
- 易用
- 可扩展
功能架构
分层架构设计

架构图中ESA HttpServer, Restlight Server, Restlight Core, Restlight for Spring, Restlight Starter几个模块均可作为一个独立的模块使用, 满足不同场景下的需求。
请求处理时序图

ESA HttpServer
基于Netty 实现的一个简易的HttpServer, 支持Http1.1/Http2以及Https等
Tip
适合各类框架,中间件等基础组建中启动或期望使用代码显示启动HttpServer的场景Restlight Core
在ESA HttpServer之上, 引入了业务线程池、Filter、路由等并支持了以Controller方式(在Controller类中通过诸如@RequestMappng等注解的方式构造请求处理逻辑)完成业务逻辑以及诸多常用功能
- 引入业务线程池
Filter- 请求路由(根据url, method, header等条件将请求路由到对应的Handler)
- 基于
CompletionStage的响应式编程支持 - 线程调度
HandlerInterceptor: 拦截器ExceptionHandler: 全局异常处理器BeanValidation: 参数校验ArgumentResolver: 参数解析扩展ReturnValueResolver: 返回值解析扩展RequestSerializer: 请求序列化器(通常负责反序列化Body内容)ResposneSerializer: 响应序列化器(通常负责序列化响应对象到Body)- 内置
Jackson,Fastjson,Gson,ProtoBuf序列化支持 - …
对应启动入口类io.esastack.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原生各种Endpoints支持以及Restlight独有的Endpoints。
Tip
适合Spring Boot Actuator场景