diff --git a/README.md b/README.md index 790f6ab47..a06518096 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,23 @@     作为一个全新的微服务框架,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的默认实现。这其实包含了控制反转的思想,让框架里的各个组件均可让开发者控制。     与主流框架比,功能上Redkale显得很简单,这体现了Redkale的简易性,而并非是不足,从一个良好的设计习惯或架构上来看,有些常用功能是不需要提供的,如Redkale的HTTP服务不支持JSP, JSP其实算是一个落后的技术,现在是一个多样化终端的时代,终端不只局限于桌面程序和PC浏览器,还有原生App、混合式App、微信端、移动H5、提供第三方接口等各种形式的终端,这些都不是JSP能方便兼顾的,而HTTP+JSON作为通用性接口可以避免重复开发,模版引擎的功能加上各种强大的JS框架足以取代JSP。Redkale在功能上做了筛选,不会为了迎合主流而提供,而是以良好的设计思想为指导。这是Redkale的主导思维。 +## 文档目录 +* [快速入门](docs/quick-start.md) +* [基本Cache API](docs/CacheAPI.md) +* [通过CacheManager注解创建```Cache```实例](docs/CreateCache.md) +* [通过注解实现方法缓存](docs/MethodCache.md) +* [配置详解](docs/Config.md) +* [高级Cache API](docs/AdvancedCacheAPI.md) +* Redis支持(redis客户端任选一即可) + * [使用jedis客户端连接redis](docs/RedisWithJedis.md) + * [使用lettuce客户端连接redis](docs/RedisWithLettuce.md) + * Spring data redis (文档待写) +* [内存缓存```LinkedHashMapCache```和```CaffeineCache```](docs/Embedded.md) +* [统计](docs/Stat.md) +* [Builder](Builder.md):未使用Spring4(或未使用Spring)的时候,或通过Builder手工构造```Cache``` +* [开发者文档](docs/DevNote.md) +* [FAQ](docs/FAQ.md) +       详情请访问:    https://redkale.org       基本文档:    https://redkale.org/articles.html diff --git a/docs/agent-cluster.md b/docs/agent-cluster.md new file mode 100644 index 000000000..d484e34cb --- /dev/null +++ b/docs/agent-cluster.md @@ -0,0 +1,2 @@ +# 集群中心 +文档完善中…… diff --git a/docs/agent-message.md b/docs/agent-message.md new file mode 100644 index 000000000..661f148f0 --- /dev/null +++ b/docs/agent-message.md @@ -0,0 +1,2 @@ +# 消息中心 +文档完善中…… \ No newline at end of file diff --git a/docs/agent-properties.md b/docs/agent-properties.md new file mode 100644 index 000000000..9b0362b55 --- /dev/null +++ b/docs/agent-properties.md @@ -0,0 +1,2 @@ +# 配置中心 +文档完善中…… diff --git a/docs/cached.md b/docs/cached.md new file mode 100644 index 000000000..f1c8470a4 --- /dev/null +++ b/docs/cached.md @@ -0,0 +1 @@ +文档完善中…… \ No newline at end of file diff --git a/docs/config.md b/docs/config.md new file mode 100644 index 000000000..c9b8232c2 --- /dev/null +++ b/docs/config.md @@ -0,0 +1,455 @@ +# 配置说明 +# application.xml配置: +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +# source.properties配置: +```properties + +# CacheSource @Resource(name="usersession") +# type可以不用设置,框架会根据url判断使用哪个CacheSource实现类 +redkale.cachesource.usersession.type = org.redkalex.cache.redis.RedisCacheSource +# 最大连接数 +redkale.cachesource.usersession.maxconns = 16 +# 节点地址 +redkale.cachesource.usersession.nodes = redis://127.0.0.1:6363 +# 节点密码 +redkale.cachesource.usersession.password = 12345678 +# 节点db +redkale.cachesource.usersession.db = 0 + +#简化写法: 可以不用.node[0], 将参数都合并到url中 +redkale.cachesource.usersession.url = redis://user:123456@127.0.0.1:6363?db=0 + + +# DataSource @Resource(name="platf") +# type可以不用设置,框架会根据url判断使用哪个DataSource实现类,默认值: org.redkale.source.DataJdbcSource +redkale.datasource.platf.type = org.redkale.source.DataJdbcSource +# 是否开启缓存(标记为@Cacheable的Entity类),值目前只支持两种: ALL: 所有开启缓存。 NONE: 关闭所有缓存, 非NONE字样统一视为ALL +redkale.datasource.platf.cachemode = ALL +# 是否自动建表当表不存在的时候, 目前只支持mysql、postgres, 默认为false +redkale.datasource.platf.table-autoddl = false +# 用户 +redkale.datasource.platf.user = root +# 密码 +redkale.datasource.platf.password = 12345678 +# 多个URL用;隔开,如分布式SearchSource需要配多个URL +redkale.datasource.platf.url = jdbc:mysql://127.0.0.1:3306/platf?allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&serverTimezone=UTC&characterEncoding=utf8 +# 最大连接数,默认值:CPU数 +redkale.datasource.platf.maxconns = 16 +# 包含的SQL模板,相当于反向LIKE,不同的JDBC驱动的SQL语句不一样,Redkale内置了MySQL的语句 +redkale.datasource.platf.contain-sqltemplate = LOCATE(#{keystr}, #{column}) > 0 +# 包含的SQL模板,相当于反向LIKE,不同的JDBC驱动的SQL语句不一样,Redkale内置了MySQL的语句 +redkale.datasource.platf.notcontain-sqltemplate = LOCATE(#{keystr}, #{column}) = 0 +# 复制表结构的SQL模板,Redkale内置了MySQL的语句 +redkale.datasource.platf.tablenotexist-sqlstates = 42000;42S02 +# 复制表结构的SQL模板,Redkale内置了MySQL的语句 +redkale.datasource.platf.tablecopy-sqltemplate = CREATE TABLE IF NOT EXISTS #{newtable} LIKE #{oldtable} + + +# DataSource 读写分离 +redkale.datasource.platf.read.url = jdbc:mysql://127.0.0.1:3306/platf_r?allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&serverTimezone=UTC&characterEncoding=utf8 +redkale.datasource.platf.read.user = root +redkale.datasource.platf.read.password = 12345678 + +redkale.datasource.platf.write.url = jdbc:mysql://127.0.0.1:3306/platf_w?allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&serverTimezone=UTC&characterEncoding=utf8 +redkale.datasource.platf.write.user = root +redkale.datasource.platf.write.password = 12345678 +``` + +# logging.properties配置: +```properties + +handlers = java.util.logging.ConsoleHandler,java.util.logging.FileHandler +.handlers = java.util.logging.ConsoleHandler,java.util.logging.FileHandler + +############################################################ +.level = FINE + +sun.level = INFO +java.level = INFO +javax.level = INFO +com.sun.level = INFO + +#java.util.logging.FileHandler.level = FINE + +java.util.logging.FileHandler.limit = 20M +java.util.logging.FileHandler.count = 100 +java.util.logging.FileHandler.encoding = UTF-8 +java.util.logging.FileHandler.pattern = ${APP_HOME}/logs-%tY%tm/log-%tY%tm%td.log +#java.util.logging.FileHandler.unusual 属性表示将 WARNING、SEVERE 级别的日志复制写入单独的文件中 +java.util.logging.FileHandler.unusual = ${APP_HOME}/logs-%tY%tm/log-warnerr-%tY%tm%td.log +#需要屏蔽消息内容的正则表达式 +java.util.logging.FileHandler.denyregx = +java.util.logging.FileHandler.append = true + +#java.util.logging.ConsoleHandler.level = FINE + +#将日志写进SearchSource, 必须指定source资源名,在source.properties中定义 +#java.util.logging.SearchHandler.source = platfsearch +#指定写进SearchSource的表名,默认值为log-record +#java.util.logging.SearchHandler.tag = log-${APP_NAME}-%tY%tm%td +``` diff --git a/docs/convert-json.md b/docs/convert-json.md new file mode 100644 index 000000000..f9443a3b7 --- /dev/null +++ b/docs/convert-json.md @@ -0,0 +1,2 @@ +# Json序列化 +文档完善中…… \ No newline at end of file diff --git a/docs/convert-protobuf.md b/docs/convert-protobuf.md new file mode 100644 index 000000000..f1c8470a4 --- /dev/null +++ b/docs/convert-protobuf.md @@ -0,0 +1 @@ +文档完善中…… \ No newline at end of file diff --git a/docs/faql.md b/docs/faql.md new file mode 100644 index 000000000..68db728ce --- /dev/null +++ b/docs/faql.md @@ -0,0 +1,2 @@ +# FAQ +文档完善中…… \ No newline at end of file diff --git a/docs/http.md b/docs/http.md new file mode 100644 index 000000000..f1c8470a4 --- /dev/null +++ b/docs/http.md @@ -0,0 +1 @@ +文档完善中…… \ No newline at end of file diff --git a/docs/images/hello-console.png b/docs/images/hello-console.png new file mode 100644 index 000000000..8a939cf05 Binary files /dev/null and b/docs/images/hello-console.png differ diff --git a/docs/images/home-dir.png b/docs/images/home-dir.png new file mode 100644 index 000000000..b648e5257 Binary files /dev/null and b/docs/images/home-dir.png differ diff --git a/docs/quick-start.md b/docs/quick-start.md new file mode 100644 index 000000000..5bc448a71 --- /dev/null +++ b/docs/quick-start.md @@ -0,0 +1,62 @@ + +# 安装 +使用maven: +```xml + + org.redkale + redkale + 2.8.0 + +``` +如果工程需要用到Redis、Kafka、Elasticsearch、SQL模板、模板引擎等,可使用redkale的官方插件: +```xml + + org.redkalex + redkale-plugins + 2.8.0 + +``` + +# 创建工程 +在IDE中使用ant或maven方式创建工程,增加redkale的依赖。下载解压 + +    ![home](images/home-dir.png) + +并覆盖到工程目录下。 +* bin: 存放启动/关闭脚本(start.sh、shutdown.sh、redkale.sh等) +* conf : 存放服务器所需配置文件: +*      application.xml:   服务配置文件 (必需); +*      logging.properties:日志配置文件 (可选); +*      source.properties: 数据库配置文件 (可选); +* lib : 存放服务所依赖jar +* logs : logging.properties配置中默认的日志存放目录。 + + +# Hello World + +演示工程, 编写HelloService: +```java +package org.redkalex.example; + +import org.redkale.net.http.*; +import org.redkale.service.Service; + +@RestService(automapping = true) +public class HelloService implements Service { + + public String sayHello() { + return "Hello World!"; + } + + public String hi(String name) { + return "Hi, " + name + "!"; + } +} +``` +运行结果: + +    ![console](images/hello-console.png) + +# 进一步阅读 +* 详细的配置说明看[这里](config.md)。 +* 数据源[这里](source.md) diff --git a/docs/scheduled.md b/docs/scheduled.md new file mode 100644 index 000000000..f1c8470a4 --- /dev/null +++ b/docs/scheduled.md @@ -0,0 +1 @@ +文档完善中…… \ No newline at end of file diff --git a/docs/sncp.md b/docs/sncp.md new file mode 100644 index 000000000..f1c8470a4 --- /dev/null +++ b/docs/sncp.md @@ -0,0 +1 @@ +文档完善中…… \ No newline at end of file diff --git a/docs/source.md b/docs/source.md new file mode 100644 index 000000000..15ea37cbf --- /dev/null +++ b/docs/source.md @@ -0,0 +1,2 @@ +# 数据源 +文档完善中…… \ No newline at end of file diff --git a/docs/watch.md b/docs/watch.md new file mode 100644 index 000000000..f1c8470a4 --- /dev/null +++ b/docs/watch.md @@ -0,0 +1 @@ +文档完善中…… \ No newline at end of file