Architecture

设计原则

  • 高兼容性
  • 极致性能
  • 全链路异步
  • 易用
  • 可扩展

功能架构

分层架构设计

Architecture

架构图中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

Restlight Core

Restlight Server之上, 扩展支持了Controller方式(在Controller类中通过诸如@RequestMappng等注解的方式构造请求处理逻辑)完成业务逻辑以及诸多常用功能

  • HandlerInterceptor: 拦截器
  • ExceptionHandler: 全局异常处理器
  • BeanValidation: 参数校验
  • ArgumentResolver: 参数解析扩展
  • ReturnValueResolver: 返回值解析扩展
  • RequestSerializer: 请求序列化器(通常负责反序列化Body内容)
  • ResposneSerializer: 响应序列化器(通常负责序列化响应对象到Body)
  • 内置Jackson, Fastjson, Gson, ProtoBuf序列化支持

对应启动入口类esa.restlight.core.Restlight

Restlight SpringMVC & Restlight JAX-RS

  • Restlight SpringMVCSpringMVC中的注解使用习惯的Restlight Core的扩展实现(@RequestMapping, @RequestParam等)。

  • Restlight JAX-RSJAX-RS中的注解使用习惯的Restlight Core的扩展实现(@Path, @GET, @QueryParam等)。

Restlight for Spring

Restlight Core基础上支持在Spring场景下通过ApplicationContext容器自动配置各种内容(RestlightOptions, 从容器中自动配置Filter, Controller, ControllerAdvice等)

Restlight Starter

Restlight for Spring基础上支持在Spring Boot场景的自动配置

Restlight Actuator

Restlight Starter基础上支持在Spring Boot Actuator原生各种Endpoints支持以及Restlight独有的Endpoints。