From d6e82eb8c19660cb5d471f45ae8a9d56f2e33476 Mon Sep 17 00:00:00 2001 From: redkale Date: Sat, 23 Dec 2023 15:20:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 17 ++ docs/agent-cluster.md | 2 + docs/agent-message.md | 2 + docs/agent-properties.md | 2 + docs/cached.md | 1 + docs/config.md | 455 ++++++++++++++++++++++++++++++++++ docs/convert-json.md | 2 + docs/convert-protobuf.md | 1 + docs/faql.md | 2 + docs/http.md | 1 + docs/images/hello-console.png | Bin 0 -> 88101 bytes docs/images/home-dir.png | Bin 0 -> 3727 bytes docs/quick-start.md | 62 +++++ docs/scheduled.md | 1 + docs/sncp.md | 1 + docs/source.md | 2 + docs/watch.md | 1 + 17 files changed, 552 insertions(+) create mode 100644 docs/agent-cluster.md create mode 100644 docs/agent-message.md create mode 100644 docs/agent-properties.md create mode 100644 docs/cached.md create mode 100644 docs/config.md create mode 100644 docs/convert-json.md create mode 100644 docs/convert-protobuf.md create mode 100644 docs/faql.md create mode 100644 docs/http.md create mode 100644 docs/images/hello-console.png create mode 100644 docs/images/home-dir.png create mode 100644 docs/quick-start.md create mode 100644 docs/scheduled.md create mode 100644 docs/sncp.md create mode 100644 docs/source.md create mode 100644 docs/watch.md 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 0000000000000000000000000000000000000000..8a939cf051044a38534c2da461d62d7aff2ae63a GIT binary patch literal 88101 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 literal 0 HcmV?d00001 diff --git a/docs/images/home-dir.png b/docs/images/home-dir.png new file mode 100644 index 0000000000000000000000000000000000000000..b648e525749b17c37f01be0bf2ebcad81dd408e7 GIT binary patch literal 3727 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 literal 0 HcmV?d00001 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