This commit is contained in:
@@ -24,11 +24,11 @@
|
||||
</section>
|
||||
|
||||
<section class="main-content">
|
||||
<h3><a id="convert_intro" class="anchor" href="#" aria-hidden="true"><span class="octicon octicon-link"></span></a>Convert 组件介绍</h3>
|
||||
<h3><a id="convert_intro" class="anchor" href="#" aria-hidden="true"></a>Convert 组件介绍</h3>
|
||||
|
||||
<p> Convert 是一个比较独立的组件,仅依赖于util包。提供Java对象的序列化与反序列化功能。支持JSON(JavaScript Object Notation)、BSON(Binary Stream Object Notation)两种格式化。 两种格式使用方式完全一样,其性能都大幅度超过其他JSON框架。同时JSON内置于HTTP服务中,BSON也是SNCP协议数据序列化的基础。<br/></p>
|
||||
|
||||
<h3><a id="convert_study" class="anchor" href="#" aria-hidden="true"><span class="octicon octicon-link"></span></a>Convert 快速上手</h3>
|
||||
<h3><a id="convert_study" class="anchor" href="#" aria-hidden="true"></a>Convert 快速上手</h3>
|
||||
<p> 本介绍仅以JSON为例(BSON与JSON使用方式雷同)。其操作类主要是JsonConvert,配置类主要是JsonFactory、ConvertColumn。JsonFactory采用同ClassLoader类似的双亲委托方式设计。</br></p>
|
||||
<p> JsonConvert 序列化encode方法:</p>
|
||||
|
||||
@@ -394,7 +394,7 @@
|
||||
<p> 由上可以看出,Convert的自定义配置完全符合面向对象思想,提倡在JavaBean内部去自定义非常规的构造函数或Decode、Encode方法,通过Factory显式配置的方式通常用于非自己定义的数据类(如 java.io.File)。</p>
|
||||
<br/>
|
||||
|
||||
<h3><a id="convert_bson_struct" class="anchor" href="#" aria-hidden="true"><span class="octicon octicon-link"></span></a>BSON的协议格式</h3>
|
||||
<h3><a id="convert_bson_struct" class="anchor" href="#" aria-hidden="true"></a>BSON的协议格式</h3>
|
||||
<p> BSON类似Java自带的Serializable, 其格式如下: <br/>
|
||||
1). 基本数据类型: 直接转换成byte[] <br/>
|
||||
2). SmallString(无特殊字符且长度小于256的字符串): length(1 byte) + byte[](utf8); 通常用于类名、字段名、枚举。 <br/>
|
||||
|
||||
48
index.html
48
index.html
@@ -25,45 +25,39 @@
|
||||
|
||||
<section class="main-content">
|
||||
<h3>
|
||||
<a id="welcome-to-github-pages" class="anchor" href="#" aria-hidden="true"><span class="octicon octicon-link"></span></a>RedKale 介绍</h3>
|
||||
<a id="welcome-to-github-pages" class="anchor" href="#" aria-hidden="true"></a>RedKale 介绍</h3>
|
||||
|
||||
<p> RedKale (中文名: 红菜苔,湖北武汉的一种特产蔬菜) 是基于Java 8全新的微服务框架, 包含HTTP、WebSocket、TCP/UDP、数据序列化、数据缓存、依赖注入等功能。
|
||||
其功能相当于 Tomcat + Mina + Struts + Spring + Hibernate + RMI + JSON + Memcached 的综合体。 <br/>
|
||||
本框架致力于简化集中式和微服务架构的开发,在增强开发敏捷性的同时保持高性能。<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、功能强大 但体积不到1.5M,且不依赖任何第三方包 <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/>
|
||||
</p>
|
||||
|
||||
<h3>
|
||||
<a class="anchor" href="#designer-templates" aria-hidden="true"><span class="octicon octicon-link"></span></a>亮点一. 轻量级HTTP</h3>
|
||||
|
||||
<p> 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缓存机制。</p>
|
||||
<h3><a class="anchor" href="convert.html" target="_blank" aria-hidden="true">亮点一. 序列化与反序列化</a></h3>
|
||||
|
||||
<h3>
|
||||
<a class="anchor" href="#creating-pages-manually" aria-hidden="true"><span class="octicon octicon-link"></span></a>亮点二. 分布式WebSocket</h3>
|
||||
<p> Convert包是RedKale内一个独立的组件, 用于数据的序列化与反序列化。包分三块:基本包、JSON包、BSON(Binary Stream Object Notation)包。基本包可以用于扩展其他序列化格式(如: XML),其JSON性能是其他任何JSON框架不能媲美的,对于非常规的POJO类也提供了方便的自定义接口。BSON用于数据的二进制序列化与反序列化,支持很复杂的泛型数据,是SNCP协议的基础。</p>
|
||||
|
||||
<p> RedKale 的WebSocket接口不同于JSR 340(Servlet 3.1), 除了提供基本的WebSocket功能, 还提供分布式与集中式部署, 当部署多个WebSocket进程时,通过配置文件可以实现WebSocket之间连接信息的数据同步。</p>
|
||||
|
||||
<h3>
|
||||
<a class="anchor" href="#authors-and-contributors" aria-hidden="true"><span class="octicon octicon-link"></span></a>亮点三. SNCP协议</h3>
|
||||
<h3><a class="anchor" href="net.html#net_http" target="_blank" aria-hidden="true">亮点二. 轻量级HTTP</a></h3>
|
||||
|
||||
<p> SNCP(Service Node Communicate Protocol)是RedKale独有的协议, 类似RMI与WebService的功能结合,主要用于进程间的数据传输。使用者通过配置文件可以轻易的将Service由本地模式变成远程模式。远程模式的Service使用SNCP协议与其他进程的Service通信。使用者无需对远程通信接口使用类似mina的第三方包自行开发。</p>
|
||||
<p> 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缓存机制。<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="#support-or-contact" aria-hidden="true"><span class="octicon octicon-link"></span></a>亮点四. DataSource</h3>
|
||||
|
||||
<p> RedKale提供DataSource类对数据层进行操作,其功能类似JPA+Memcached。与JPA相比各有优缺点。 <br/>
|
||||
优点: <br/>
|
||||
1、Datasource中的内存缓存会自动与其他同服务的进程之间同步。 <br/>
|
||||
2、简易的查询接口,即时复杂的过滤查询都无需写SQL语句。 <br/>
|
||||
3、可以DataSource与业务逻辑层分开, 独立成类似Memcached的内存数据源。 <br/>
|
||||
4、读写分离。动态切换数据库连接配置。 <br/>
|
||||
缺点: <br/>
|
||||
1、不提供复杂的关联表操作与查询。 </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独有的协议, 类似RMI与WebService的功能结合,主要用于进程间的数据传输。使用者通过配置文件可以轻易的将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="source.html#source_datasource" target="_blank" aria-hidden="true">亮点四. DataSource</a></h3>
|
||||
|
||||
<p> RedKale提供DataSource类对数据层进行操作,其功能类似JPA+Memcached。最大程度的简化数据层的操作,免去SQL/JPQL语句的编写。同时提供过滤查询与JavaBean的结合、读写分离、数据库热切换、本地/远程部署、进程间缓存自动同步等功能。</p>
|
||||
|
||||
<footer class="site-footer">
|
||||
<span class="site-footer-owner"><a href="https://github.com/wentch/redkale">RedKale</a> © <a href="https://github.com/wentch">wentch</a> 欢迎加入RedKale技术交流QQ群: 527523235</span>
|
||||
|
||||
8
net.html
8
net.html
@@ -24,10 +24,10 @@
|
||||
</section>
|
||||
|
||||
<section class="main-content">
|
||||
<h3><a id="net_intro" class="anchor" href="#" aria-hidden="true"><span class="octicon octicon-link"></span></a>Net 组件介绍</h3>
|
||||
<h3><a id="net_intro" class="anchor" href="#" aria-hidden="true"></a>Net 组件介绍</h3>
|
||||
<p> Net 组件是基于AIO(NIO.2)的一套TCP/UDP的网络框架,且只提供异步接口。org.redkale.net 是所有网络协议服务的基础包。RedKale内置HTTP和远程模式Service依赖的SNCP(Service Node Communicate Protocol)协议的实现包。RedKale启动的<b><server></b>节点服务都是基于Net组件实现的协议。下面详细介绍 <a href="#net_http">HTTP服务</a> 和 <a href="#net_sncp">SNCP协议</a>。</p>
|
||||
|
||||
<h3><a id="net_http" class="anchor" href="#" aria-hidden="true"><span class="octicon octicon-link"></span></a>HTTP 服务</h3>
|
||||
<h3><a id="net_http" class="anchor" href="#" aria-hidden="true"></a>HTTP 服务</h3>
|
||||
<p> RedKale自实现的HTTP服务接口并不遵循Java EE规范JSR 340(Servlet 3.1),RedKale提倡的是HTTP+JSON的服务接口方式因此没有实现JSP规范,HTTP+JSON服务接口几乎适合所有类型的客户端(PC应用程序、PC Web、微信H5、移动APP、移动Web)开发。其与JSR 340(Servlet 3.1)的主要区别如下:<br/>
|
||||
1、内置参数的JSON反序列化和响应结果的序列化接口。<br/>
|
||||
2、对数值型的参数和header值提供简易接口。<br/>
|
||||
@@ -639,7 +639,7 @@
|
||||
<span class="o">}</span>
|
||||
<span class="o">}</span></pre></div>
|
||||
|
||||
<h3><a id="net_sncp" class="anchor" href="#" aria-hidden="true"><span class="octicon octicon-link"></span></a>SNCP 协议</h3>
|
||||
<h3><a id="net_sncp" class="anchor" href="#" aria-hidden="true"></a>SNCP 协议</h3>
|
||||
<p>
|
||||
SNCP(Service Node Communicate Protocol)协议是RedKale独有的一种传输协议,用于进程之间的通信,即请求方的<a href="service.html#service_remote" target="_blank">远程模式Service</a>与响应方的Service之间的通信。可以看成是RMI(远程接口调用)的同款,主要区别在于RedKale里SNCP几乎是透明的,写一个普通的Service通过配置即可实现远程调用,而不需要专门针对远程写接口。SNCP服务的配置与HTTP差不多,只是SNCP不需要Servlet,SncpServlet是通过Service动态生成的。<br/>
|
||||
SNCP的数据包分包头和包体。包头描述请求的Service信息,请求包的包体描述参数的<a href="convert.html#convert_bson_struct" target="_blank">BSON值</a>,响应包的包体描述回调的参数对象和结果对象的<a href="convert.html#convert_bson_struct" target="_blank">BSON值</a>。<br/>
|
||||
@@ -660,7 +660,7 @@
|
||||
包体数据结构为 ([参数序号][参数BSON值])* N + [0][结果对象BSON]。 其中参数序号从1开始,只有当Service的方法存在<a href="service.html#service_dyncall" target="_blank">@DynCall回调</a>才会有参数<a href="convert.html#convert_bson_struct" target="_blank">BSON值</a>,序号为0表示为结果对象的<a href="convert.html#convert_bson_struct" target="_blank">BSON值</a>。若方法为<font color="blue">void</font>返回类型,则不存在结果对象<a href="convert.html#convert_bson_struct" target="_blank">BSON值</a>。
|
||||
</p>
|
||||
|
||||
<h3><a id="net_diy" class="anchor" href="#" aria-hidden="true"><span class="octicon octicon-link"></span></a>自定义协议</h3>
|
||||
<h3><a id="net_diy" class="anchor" href="#" aria-hidden="true"></a>自定义协议</h3>
|
||||
<p> 协议的网络框架包含五种对象: <br/>
|
||||
Context : 协议上下文对象 <br/>
|
||||
Request : 服务请求对象 <br/>
|
||||
|
||||
10
redkale.html
10
redkale.html
@@ -24,7 +24,7 @@
|
||||
</section>
|
||||
|
||||
<section class="main-content">
|
||||
<h3><a id="redkale_start" class="anchor" href="#" aria-hidden="true"><span class="octicon octicon-link"></span></a>RedKale 功能</h3>
|
||||
<h3><a id="redkale_start" class="anchor" href="#" aria-hidden="true"></a>RedKale 功能</h3>
|
||||
|
||||
<p> RedKale虽然只有1.xM大小,但是麻雀虽小五脏俱全。既可作为服务器使用,也可当工具包使用。作为独立的工具包提供以下功能:<br/>
|
||||
1、convert包提供JSON的序列化和反序列化功能,类似Gson、Jackson。 <br/>
|
||||
@@ -35,7 +35,7 @@
|
||||
6、ResourceFactory提供轻量级的依赖注入功能, 类似Google Guice。 <br/>
|
||||
</p>
|
||||
|
||||
<h3><a id="redkale_server" class="anchor" href="#" aria-hidden="true"><span class="octicon octicon-link"></span></a>RedKale 服务器</h3>
|
||||
<h3><a id="redkale_server" class="anchor" href="#" aria-hidden="true"></a>RedKale 服务器</h3>
|
||||
<p> RedKale作为服务器的目录如下: <br/>
|
||||
<b>bin</b> : 存放启动关闭脚本(start.sh、shutdown.sh、start.bat、shutdown.bat) <br/>
|
||||
<b>conf</b> : 存放服务器所需配置文件:<br/>
|
||||
@@ -63,7 +63,7 @@
|
||||
6、启动进程本身的监听服务。 <br/>
|
||||
</p>
|
||||
|
||||
<h3><a id="redkale_dev" class="anchor" href="#" aria-hidden="true"><span class="octicon octicon-link"></span></a>基于RedKale的开发与调试</h3>
|
||||
<h3><a id="redkale_dev" class="anchor" href="#" aria-hidden="true"></a>基于RedKale的开发与调试</h3>
|
||||
<p> 基于RedKale创建一个Java应用程序工程(即使是Web项目也不要创建Java-Web工程),引用redkale.jar 并创建RedKale所需的几个目录和文件。一个普通的Web项目只需要编写业务层的Service和接入层的HttpServlet的代码。数据库DataSource通过配置文件进行设置。<br/>
|
||||
编写完代码可以通过启动脚本进行调试, 也可以在IDE设置项目的主类为 org.redkale.boot.Application 或者工程内定义主类进行启动调试:
|
||||
</p>
|
||||
@@ -83,7 +83,7 @@
|
||||
<span class="o">}</span></pre></div>
|
||||
<p> Application.singleton 运行流程与通过bin脚本启动的流程基本一致,区别在于singleton运行时不会启动Server和Application自身的服务监听。RedKale提倡接入层(Servlet)与业务层(Service)分开,Service在代码上不能依赖于Servlet,因此调试Service自身逻辑时不需要启动接入层服务(类似WebSocket依赖Servlet的功能除外)。 </p>
|
||||
|
||||
<h3><a id="redkale_deploy" class="anchor" href="#" aria-hidden="true"><span class="octicon octicon-link"></span></a>RedKale 架构部署</h3>
|
||||
<h3><a id="redkale_deploy" class="anchor" href="#" aria-hidden="true"></a>RedKale 架构部署</h3>
|
||||
<p> 通常一个系统会分为三层:接入层、业务层、数据层。对应到RedKale的组件是: Servlet、Service、Source。大部分系统提供的是HTTP服务,为了方便演示RedKale从集中式到分布式的变化,以一个简单的HTTP服务作为范例。<br/>
|
||||
开发一个极简单的小论坛系统。包含三个模块: <br/>
|
||||
用户模块 UserSerivice: 提供用户注册、登录、更新资料等功能, UserServlet作为接入层。<br/>
|
||||
@@ -428,7 +428,7 @@
|
||||
</p>
|
||||
<br/>
|
||||
|
||||
<h3><a id="redkale_confxml" href="#" aria-hidden="true"><span class="octicon octicon-link"></span></a>appplication.xml 配置说明</h3>
|
||||
<h3><a id="redkale_confxml" href="#" aria-hidden="true"></a>appplication.xml 配置说明</h3>
|
||||
<div class="highlight"><pre><span class="cp"><?xml version="1.0" encoding="UTF-8"?></span>
|
||||
<span class="c"><!-- </span>
|
||||
<span class="c"> 文件说明:</span>
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
</section>
|
||||
|
||||
<section class="main-content">
|
||||
<h3><a id="service_intro" class="anchor" href="#" aria-hidden="true"><span class="octicon octicon-link"></span></a>Service 组件介绍</h3>
|
||||
<h3><a id="service_intro" class="anchor" href="#" aria-hidden="true"></a>Service 组件介绍</h3>
|
||||
|
||||
<p> Service 是RedKale最核心的组件,依赖于Convert、SNCP协议、Resource依赖注入。Service主要处理业务逻辑和操作数据层,是微服务架构中的单一原子服务。每一个Service实例分两种模式: <b>本地模式</b>和<b>远程模式</b>。其模式由 conf/application.xml 文件来配置。使用者在调用过程中通常不需要区分当前Service实例是哪种模式。<br/>
|
||||
为了能确保本地模式与远程模式自由切换,对Service的实现类有一定的约束: <br/>
|
||||
@@ -33,7 +33,7 @@
|
||||
RedKale进程启动时扫描可加载的Service实现类,根据配置文件配置的模式采用JDK 8内置的ASM技术动态生成相应的Service临时类进行实例化,并注册到ResourceFactory同其他Service、Servlet依赖注入。
|
||||
</p>
|
||||
|
||||
<h3><a id="service_local" class="anchor" href="#" aria-hidden="true"><span class="octicon octicon-link"></span></a>Service 本地模式</h3>
|
||||
<h3><a id="service_local" class="anchor" href="#" aria-hidden="true"></a>Service 本地模式</h3>
|
||||
<p> 以一个简单的UserService类范例来说明动态生成的两种模式临时类。UserService提供查询用户、注册、登陆、修改用户名功能:</br></p>
|
||||
|
||||
<div class="highlight"><pre><span class="kd">public</span> <span class="kd">class</span> <span class="nc">UserService</span> <span class="kd">implements</span> <span class="n">Service</span> <span class="o">{</span>
|
||||
@@ -171,7 +171,7 @@
|
||||
</pre></div>
|
||||
<p> 如上配置,若当前进程所在IP是192.168.10.111,则UserService采用本地模式加载。执行register方法时, 先本地执行超类的register,然后远程执行同组的进程(192.168.10.112、192.168.10.113),最后远程执行异组的进程(192.168.20.121、192.168.20.122、192.168.30.131、192.168.30.132)。若当前进程所在IP是192.168.10.100,则UserService采用远程模式加载。需要注意的一点是,每个IP所在的服务必须开通SNCP协议服务以便能接收远程的调用请求。</p>
|
||||
|
||||
<h3><a id="service_remote" class="anchor" href="#" aria-hidden="true"><span class="octicon octicon-link"></span></a>Service 远程模式</h3>
|
||||
<h3><a id="service_remote" class="anchor" href="#" aria-hidden="true"></a>Service 远程模式</h3>
|
||||
<p> 动态生成的远程模式UserService:</p>
|
||||
<div class="highlight"><pre><span class="nd">@Resource</span><span class="o">(</span><span class="n">name</span> <span class="o">=</span> <span class="s">""</span><span class="o">)</span>
|
||||
<span class="nd">@SncpDyn</span><span class="o">(</span><span class="n">remote</span> <span class="o">=</span> <span class="kc">true</span><span class="o">)</span>
|
||||
@@ -284,7 +284,7 @@
|
||||
</pre></div>
|
||||
<p> 生成远程模式Service时发现参数带有@DynCall注解的方法,在远程调用返回结果时会进行回调处理。</p>
|
||||
|
||||
<h3><a id="service_async" class="anchor" href="#" aria-hidden="true"><span class="octicon octicon-link"></span></a>Service 异步调用</h3>
|
||||
<h3><a id="service_async" class="anchor" href="#" aria-hidden="true"></a>Service 异步调用</h3>
|
||||
<p> 远程模式不仅对@DynCall注解进行处理,而且对方法含有 <b>java.nio.channels.CompletionHandler</b> 的参数也进行异步特殊处理。异步调用对远程模式非常有意义,可以减少同步方式对当前线程的占用时间。也给Source组件的异步调用提供了基础。</p>
|
||||
<div class="highlight"><pre> <span class="nd">@Override</span>
|
||||
<span class="kd">public</span> <span class="o"><</span><span class="n">T</span><span class="o">></span> <span class="kt">void</span> <span class="nf">update</span><span class="o">(</span><span class="kd">final</span> <span class="n">CompletionHandler</span><span class="o"><</span><span class="n">Void</span><span class="o">,</span> <span class="n">T</span><span class="o">[]></span> <span class="n">handler</span><span class="o">,</span> <span class="nd">@DynAttachment</span> <span class="kd">final</span> <span class="n">T</span><span class="o">...</span> <span class="n">values</span><span class="o">)</span> <span class="o">{</span>
|
||||
|
||||
@@ -24,11 +24,11 @@
|
||||
</section>
|
||||
|
||||
<section class="main-content">
|
||||
<h3><a id="source_intro" class="anchor" href="#" aria-hidden="true"><span class="octicon octicon-link"></span></a>Source 组件介绍</h3>
|
||||
<h3><a id="source_intro" class="anchor" href="#" aria-hidden="true"></a>Source 组件介绍</h3>
|
||||
|
||||
<p> Source 主要为数据源提供简易的操作接口,使底层的具体数据源(传统数据库、文件系统、内存数据库、Memcached/Redis缓存)对上层是透明的。其提供两种类型的数据源:DataSource 和 CacheSource。DataSource 为数据库或内存数据库,提供类似JPA、Hibernate的接口与功能。CacheSource 为缓存数据提供类似Memcached、Redis的接口和功能。两者也提供了异步接口(基于<a href="service.html#service_remote" target="_blank">远程模式Service</a>)。<br/></p>
|
||||
|
||||
<h3><a id="source_datasource" class="anchor" href="#" aria-hidden="true"><span class="octicon octicon-link"></span></a>DataSource 入门</h3>
|
||||
<h3><a id="source_datasource" class="anchor" href="#" aria-hidden="true"></a>DataSource 入门</h3>
|
||||
<p>
|
||||
JPA虽然已经提供了简洁成熟的数据库操作接口,但当数据、业务量很庞大的时候就显得捉襟见肘,与JPA相比,DataSource有以下几个特点:<br/>
|
||||
1、简易的过滤查询接口,但仅支持简单的表关联查询。 <br/>
|
||||
@@ -146,7 +146,7 @@
|
||||
</pre></div>
|
||||
<p> 如上@FilterGroup 的value 必须是[OR]或者[AND]开头,没有标记@FilterGroup的字段等价于标记了@FilterGroup(value = "[AND]")。[AND]、[OR]后面的字符串为GROUP_NAME,默认的GROUP_NAME为空字符串。如上"[OR]a"可以直接使用"[OR]",有多个[OR]或者[AND]则需要加上不同的NAME。</p>
|
||||
|
||||
<h3><a id="source_cachesource" class="anchor" href="#" aria-hidden="true"><span class="octicon octicon-link"></span></a>CacheSource 入门</h3>
|
||||
<h3><a id="source_cachesource" class="anchor" href="#" aria-hidden="true"></a>CacheSource 入门</h3>
|
||||
<p> CacheSource同Memcached类似,像一个带有过期功能地Map容器,存放key-value数据。常见的使用场景就是存放HTTP的Session信息。RedKale把用户会话信息数据当做业务数据处理,而不是接入层的数据。WebSocket的连接态数据也是用CacheSource存储。key为WebSocket的groupid,value为WebSocket服务端节点的IP地址列表。</p>
|
||||
<div class="highlight"><pre><span class="kd">public</span> <span class="kd">class</span> <span class="nc">UserService</span> <span class="kd">implements</span> <span class="n">Service</span> <span class="o">{</span>
|
||||
|
||||
@@ -179,7 +179,7 @@
|
||||
<span class="o">}</span></pre></div>
|
||||
<p> 以上是个简单的范例,用于用户模块存放sessionid。</p>
|
||||
|
||||
<h3><a id="source_confxml" href="#" aria-hidden="true"><span class="octicon octicon-link"></span></a>persistence.xml 配置说明</h3>
|
||||
<h3><a id="source_confxml" href="#" aria-hidden="true"></a>persistence.xml 配置说明</h3>
|
||||
<div class="highlight"><pre><span class="c"><!-- 其配置算是标准的JPA配置文件的缩略版 --></span>
|
||||
<span class="nt"><persistence></span>
|
||||
<span class="c"><!-- 系统基本库 --></span>
|
||||
|
||||
@@ -16,6 +16,10 @@ a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.anchor {
|
||||
color: #90139E;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
<section class="main-content">
|
||||
<h3>
|
||||
<a id="welcome-to-github-pages" class="anchor" href="#welcome-to-github-pages" aria-hidden="true"><span class="octicon octicon-link"></span></a>Watch 组件介绍</h3>
|
||||
<a id="welcome-to-github-pages" class="anchor" href="#welcome-to-github-pages" aria-hidden="true"></a>Watch 组件介绍</h3>
|
||||
|
||||
<p>敬请期待…… <br/>
|
||||
</p>
|
||||
|
||||
Reference in New Issue
Block a user