102 lines
12 KiB
HTML
102 lines
12 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en-us">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<title>Redkale(红菜苔)--基于Java 8全新的微服务开源框架 - Redkale官网</title>
|
||
<meta name="keywords" content="Redkale,redkale,java,微服务,架构"/>
|
||
<meta name="description" content="Redkale(红菜苔)是基于Java 8全新的微服务开源框架"/>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<link rel="stylesheet" type="text/css" href="stylesheets/stylesheet.css" media="screen">
|
||
</head>
|
||
<body>
|
||
<section class="page-header">
|
||
<a href="index.html" class="project-name">Redkale</a>
|
||
<h2 class="project-tagline"></h2>
|
||
<a href="redkale.html" class="btn">Redkale 入门</a>
|
||
<a href="convert.html" class="btn">Convert 组件</a>
|
||
<a href="service.html" class="btn">Service 组件</a>
|
||
<a href="source.html" class="btn">Source 组件</a>
|
||
<a href="net.html" class="btn">Net 组件</a>
|
||
<a href="watch.html" class="btn">Watch 组件</a>
|
||
<a href="plugins.html" class="btn">Redkale 插件</a>
|
||
<a href="articles.html" class="btn">技术文章</a>
|
||
</section>
|
||
|
||
<section class="main-content">
|
||
<h3><a id="redkale_intro" class="anchor" href="#" aria-hidden="true"></a>Redkale 介绍</h3>
|
||
|
||
<p> Redkale(中文名: 红菜苔,湖北特产蔬菜)是基于Java 8全新的微服务开源框架, 包含HTTP、WebSocket、TCP/UDP、数据序列化、数据缓存、依赖注入等功能。
|
||
本框架致力于简化集中式和微服务架构的开发,在增强开发敏捷性的同时保持高性能。<br/>
|
||
Redkale 有如下主要特点: <br/>
|
||
1、大量使用Java 8新特性(接口默认值、Stream、Lambda、JDk8内置的ASM等) <br/>
|
||
2、提供HTTP服务,同时内置JSON功能与限时缓存功能 <br/>
|
||
3、TCP层完全使用NIO.2,并统一TCP与UDP的接口 <br/>
|
||
4、提供分布式与集中式部署的无缝切换 <br/>
|
||
5、提供类似JPA功能,包含数据缓存自动同步、分表分库与简洁的数据层操作接口 <br/>
|
||
6、支持依赖注入的资源的动态修改 <br/>
|
||
7、Servlet、Service、Source组件均支持异步接口 <br/>
|
||
</p>
|
||
|
||
<h3><a id="redkale_think" class="anchor" href="#" aria-hidden="true"></a>设计理念</h3>
|
||
<p> 作为一个全新的微服务框架,Redkale在接口定义上使用了Java 8大量的新语法,接口有默认实现、接口带静态方法、重复注解等特性,同时在设计上与主流框架有很大不同。Redkale是按组件形式设计的,而非以容器为主,几乎每个子包都是能提供独立功能的组件。如Tomcat是按容器设计的,所有web资源/配置由Tomcat控制,开发者很能难控制到Tomcat内部,而Redkale的HTTP服务只是个组件,开发者既可以自己启动和配置HttpServer,也可以把Redkale当成容器通过Redkale进程来初始化服务。Spring的Ioc容器也是如此,Redkale提供的依赖注入仅通过ResouceFactory一个类来控制,非常轻量,并且可动态更改已注入的资源。Spring提倡控制反转思想,而自身的容器却让开发者很难控制。Redkale是一个既能以组件形式也能以容器形式存在的框架。从整体上看,Redkale的架构分两层:接口和默认实现。开发者若想替换掉Redkale内置的HTTP服务而使用符合JavaEE规范的HttpServlet, 可以采用自定义协议基于JSR 340(Servlet 3.1)来实现自己的HTTP服务;若想使用Hibernate作为数据库操作,可以写一个自己的DataSource实现类;JSON的序列化和反序列化也可以使用第三方的实现;Memcached或Redis也可以作为另一个CacheSource的实现替换Redkale的默认实现。这其实包含了控制反转的思想,让框架里的各个组件均可让开发者控制。<br/>
|
||
与主流框架比,功能上Redkale显得很简单,这体现了Redkale的简易性,而并非是不足,从一个良好的设计习惯或架构上来看,有些常用功能是不需要提供的,如Redkale的HTTP服务不支持HTTPS和JSP,HTTPS比HTTP多了一层加密解密,这种密集型的计算不是Java的专长,通常提供HTTP服务的架构不会将Java动态服务器放在最前端,而是在前方会放nginx或apache,除了负载均衡还能静动分离,因此HTTPS的加解密应交给nginx这样的高性能服务器处理。Redkale再提供HTTPS服务就显得鸡肋。JSP其实算是一个落后的技术,现在是一个多样化终端的时代,终端不只局限于桌面程序和PC浏览器,还有原生App、混合式App、微信端、移动H5、提供第三方接口等各种形式的终端,这些都不是JSP能方便兼顾的,而HTTP+JSON作为通用性接口可以避免重复开发,模版引擎的功能加上各种强大的JS框架足以取代JSP。Redkale在功能上做了筛选,不会为了迎合主流而提供,而是以良好的设计思想为指导。这是Redkale的主导思维。</p>
|
||
|
||
|
||
<h3><a class="anchor" href="convert.html" target="_blank" aria-hidden="true">亮点一. 序列化与反序列化</a></h3>
|
||
|
||
<p> Convert包是Redkale内一个独立的组件, 用于数据的序列化与反序列化。包分三块:基本包、JSON包、BSON(Binary Stream Object Notation)包。基本包可以用于扩展其他序列化格式(如: XML),其JSON性能是其他任何JSON框架不能媲美的,对于非常规的POJO类也提供了方便的自定义接口。BSON用于数据的二进制序列化与反序列化,支持很复杂的泛型数据,是SNCP协议的基础。</p>
|
||
|
||
|
||
<h3><a class="anchor" href="source.html#source_datasource" target="_blank" aria-hidden="true">亮点二. DataSource</a></h3>
|
||
|
||
<p> Redkale提供DataSource类对数据层进行操作,其功能类似JPA。最大程度的简化数据层的操作,免去SQL/JPQL语句的编写。同时提供过滤查询与JavaBean的结合、读写分离、数据库热切换、本地/远程部署、数据分表分库、进程间缓存自动同步等功能。<br/>
|
||
CacheSource是缓存的统一接口,像JDBC接口定义,不管是内存模式还是Memcached、Redis或其他缓存系统, 只要提供对应的实现就可使用,每个接口都提供同步和异步两种方式。</p>
|
||
|
||
|
||
<h3><a class="anchor" href="net.html#net_http" target="_blank" aria-hidden="true">亮点三. HTTP协议</a></h3>
|
||
|
||
<p> HTTP组件是基于异步NIO.2实现的,HttpRequest的输入与HttpResponse的输出均是异步操作,HttpRequest内置JSON参数的获取和文件上传功能,HttpResponse提供数据对象和文件的数据,同时集成了REST ,因此并不遵循JSR 340规范(Servlet 3.1)且也没有实现JSP规范。 HTTP Server只提供四个对象:HttpContext、HttpRequest、HttpResponse、HttpServlet。 传统Session则由数据层实现。Redkale提倡HTTP+JSON接口(网站、PC客户端、APP移动端、第三方接口均可统一接口), 故内置了JSON序列化与反序列化接口,同时内置HTTP缓存机制。<br/>
|
||
Redkale 的<a href="net.html#net_ws" target="_blank">WebSocket服务</a>接口不同于JSR 340(Servlet 3.1), 除了提供基本的WebSocket功能, 还提供分布式与集中式部署, 当部署多个WebSocket进程时,通过配置文件可以实现WebSocket之间连接信息的数据同步。</p>
|
||
|
||
|
||
<h3><a class="anchor" href="net.html#net_sncp" target="_blank" aria-hidden="true">亮点四. SNCP协议</a></h3>
|
||
|
||
<p> SNCP(Service Node Communicate Protocol)是Redkale独有的RPC协议, 主要用于进程间的数据传输,支持泛型和子类的数据转换。开发人员通过配置文件可以轻易的将Service由<a href="service.html#service_local" target="_blank">本地模式</a>变成<a href="service.html#service_remote" target="_blank">远程模式</a>。<a href="service.html#service_remote" target="_blank">远程模式Service</a>使用SNCP协议与其他进程的Service通信。开发人员无需对远程通信接口使用类似Mina的第三方包进行开发。SNCP是Redkale的核心功能,其微服务架构都是基于<a href="service.html#service_local" target="_blank">本地模式Service</a>和<a href="service.html#service_remote" target="_blank">远程模式Service</a>。</p>
|
||
|
||
|
||
<h3><a class="anchor" href="net.html#net_sncp" target="_blank" aria-hidden="true">亮点五. WATCH协议</a></h3>
|
||
|
||
<p> WATCH协议其实就是HTTP协议,主要用于进程的微服务和监控管理。接口以HTTP形式提供, Redkale自带部分常规的Watch功能,如动态更新DataSource配置,动态加载Service、Servlet、Filter,查看Server基本信息等。开发者也可自定义WatchService进行监控或管理操作。</p>
|
||
|
||
|
||
<h3><a class="anchor" href="net.html#net_sncp" target="_blank" aria-hidden="true">亮点六. 异步接口</a></h3>
|
||
|
||
<p> Net、Service、DataSource、CacheSource都支持异步接口,<a href="service.html#service_local" target="_blank">本地模式</a>、<a href="service.html#service_remote" target="_blank">远程模式</a>的Service均支持。</p>
|
||
|
||
<h3><a id="redkale_code" class="anchor" href="#" aria-hidden="true"></a>Java 源码</h3>
|
||
<p> <a href="https://gitee.com/redkale" target="_blank" ><b> 码云 源码 https://gitee.com/redkale</b></a><br/><br/>
|
||
<a href="https://github.com/redkale" target="_blank" >Github 源码 https://github.com/redkale</a><br/>
|
||
<br/>
|
||
<a href="javadoc/index.html" target="_blank" >在线 Javadoc API</a></p>
|
||
|
||
<br/>
|
||
<p> Redkale官网: <a href="https://redkale.org" target="_blank"><b>https://redkale.org</b></a></p>
|
||
|
||
<footer class="site-footer">
|
||
<span class="site-footer-owner"> 欢迎加入Redkale QQ群: 527523235</span>
|
||
</footer>
|
||
|
||
</section>
|
||
|
||
<script>
|
||
var _hmt = _hmt || [];
|
||
(function () {
|
||
var hm = document.createElement("script");
|
||
hm.src = "//hm.baidu.com/hm.js?aee2e6e1addaf28cd4e21e2d5a509123";
|
||
var s = document.getElementsByTagName("script")[0];
|
||
s.parentNode.insertBefore(hm, s);
|
||
})();
|
||
</script>
|
||
</body>
|
||
</html>
|