Files
redkale/index.html
Redkale 3e10ab8dff
2017-11-28 09:03:51 +08:00

96 lines
11 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Redkale(中文名: 红菜苔,湖北武汉的一种特产蔬菜)是基于Java 8全新的微服务开源框架 包含HTTP、WebSocket、TCP/UDP、数据序列化、数据缓存、依赖注入等功能。
本框架致力于简化集中式和微服务架构的开发,在增强开发敏捷性的同时保持高性能。<br/>
Redkale 有如下主要特点: <br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1、大量使用Java 8新特性接口默认值、Stream、Lambda、JDk8内置的ASM等 <br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2、提供HTTP服务同时内置JSON功能与限时缓存功能 <br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3、TCP层完全使用NIO.2并统一TCP与UDP的接口 <br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4、提供分布式与集中式部署的无缝切换 <br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5、提供类似JPA功能包含数据缓存自动同步、分表分库与简洁的数据层操作接口 <br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6、支持依赖注入的资源的动态修改 <br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7、Servlet、Service、Source组件均支持异步接口 <br/>
</p>
<h3><a id="redkale_think" class="anchor" href="#" aria-hidden="true"></a>设计理念</h3>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;作为一个全新的微服务框架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/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;与主流框架比功能上Redkale显得很简单这体现了Redkale的简易性而并非是不足从一个良好的设计习惯或架构上来看有些常用功能是不需要提供的如Redkale的HTTP服务不支持HTTPS和JSPHTTPS比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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Convert包是Redkale内一个独立的组件 用于数据的序列化与反序列化。包分三块基本包、JSON包、BSON(Binary Stream Object Notation)包。基本包可以用于扩展其他序列化格式(如: XML)其JSON性能是其他任何JSON框架不能媲美的对于非常规的POJO类也提供了方便的自定义接口。BSON用于数据的二进制序列化与反序列化支持很复杂的泛型数据是SNCP协议的基础。</p>
<h3><a class="anchor" href="net.html#net_http" target="_blank" aria-hidden="true">亮点二. 轻量级HTTP</a></h3>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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="source.html#source_datasource" target="_blank" aria-hidden="true">亮点四. DataSource</a></h3>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Redkale提供DataSource类对数据层进行操作其功能类似JPA。最大程度的简化数据层的操作免去SQL/JPQL语句的编写。同时提供过滤查询与JavaBean的结合、读写分离、数据库热切换、本地/远程部署、数据分表分库、进程间缓存自动同步等功能。</p>
<h3><a class="anchor" href="net.html#net_sncp" target="_blank" aria-hidden="true">亮点四. 异步接口</a></h3>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://github.com/redkale" target="_blank" >Github 源码 &nbsp;&nbsp; https://github.com/redkale</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://gitee.com/redkale" target="_blank" >&nbsp;&nbsp;&nbsp;码云 源码 &nbsp;&nbsp; https://gitee.com/redkale</a><br/>
&nbsp;&nbsp;<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javadoc/index.html" target="_blank" >在线 Javadoc API</a></p>
<br/>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Redkale官网:&nbsp;&nbsp;<a href="https://redkale.org" target="_blank"><b>https://redkale.org</b></a></p>
<footer class="site-footer">
<span class="site-footer-owner">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;欢迎加入Redkale QQ群: 527523235</span>
</footer>
</section>
<script>
var _hmt = _hmt || [];
(function () {
var hm = document.createElement("script");
hm.src = "//hm.baidu.com/hm.js?b4e05d7de8b5f3401dd93e3c6b35ffa5";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
</body>
</html>