RedKale

##

RedKale 入门 Convert 组件 Service 组件 Source 组件 Net 组件 Watch 组件 Javadoc API Github 源码

### RedKale 介绍

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的结合、读写分离、数据库热切换、本地/远程部署、进程间缓存自动同步等功能。