? ?RedKale (中文名: 紅菜苔,湖北武漢的一種特產蔬菜) 是基于Java 8全新的微服務框架, 包含HTTP、WebSocket、TCP/UDP、數據序列化、數據緩存、依賴注入等功能。 本框架致力于簡化集中式和微服務架構的開發,在增強開發敏捷性的同時保持高性能。
RedKale 有如下主要特點:?
????????1、大量使用Java 8新特性(接口默認值、Stream、Lambda、JDk8內置的ASM等)?
????????2、提供HTTP服務,同時內置JSON功能與限時緩存功能?
????????3、TCP層完全使用NIO.2,并統一TCP與UDP的接口?
????????4、提供分布式與集中式部署的無縫切換?
????????5、提供類似JPA功能,并包含數據緩存自動同步與簡潔的數據層操作接口?
????????6、可以動態修改已依賴注入的資源?
亮點一. 序列化與反序列化
????????Convert包是RedKale內一個獨立的組件, 用于數據的序列化與反序列化。包分三塊:基本包、JSON包、BSON(Binary Stream Object Notation)包。基本包可以用于擴展其他序列化格式(如: XML),其JSON性能是其他任何JSON框架不能媲美的,對于非常規的POJO類也提供了方便的自定義接口。BSON用于數據的二進制序列化與反序列化,支持很復雜的泛型數據,是SNCP協議的基礎。
亮點二. 輕量級HTTP
????????RedKale 的HTTP是基于異步NIO.2實現的,所提供的HttpResponse的輸出接口也是異步的,因此并不遵循JSR 340規范(Servlet 3.1)且也沒有實現JSP規范。 HTTP只提供四個對象:HttpContext、HttpRequest、HttpResponse、HttpServlet。 傳統Session則由數據層實現。RedKale提倡HTTP+JSON接口(無論網站、PC客戶端、APP移動端、第三方接口都可使用統一接口), 因此HTTP層內置了JSON序列化與反序列化接口,同時內置HTTP緩存機制。
??????RedKale 的WebSocket服務接口不同于JSR 340(Servlet 3.1), 除了提供基本的WebSocket功能, 還提供分布式與集中式部署, 當部署多個WebSocket進程時,通過配置文件可以實現WebSocket之間連接信息的數據同步。
亮點三. SNCP協議
????????SNCP(Service Node Communicate Protocol)是RedKale獨有的協議, 類似RMI與WebService的功能結合,主要用于進程間的數據傳輸。使用者通過配置文件可以輕易的將Service由本地模式變成遠程模式。遠程模式Service使用SNCP協議與其他進程的Service通信。使用者無需對遠程通信接口使用類似Mina的第三方包自行開發。SNCP是RedKale的核心功能,其微服務架構都是基于本地模式Service和遠程模式Service。
亮點四. DataSource
????????RedKale提供DataSource類對數據層進行操作,其功能類似JPA+Memcached。最大程度的簡化數據層的操作,免去SQL/JPQL語句的編寫。同時提供過濾查詢與JavaBean的結合、讀寫分離、數據庫熱切換、本地/遠程部署、進程間緩存自動同步等功能。