Rainy的含义就是下雨,下雨就是从各种地方来的水汇入到大地的过程,所以Rainy做的事情也一样,就是把四处的文件汇总到某个大地服务器,比如你的静态资源。 在你上传的资源或者文档的时候可以帮你将上传到不同机器的文档汇总到某一台master机器上。 本次更新: 重构服务端代码,将服务端代码使用command的格式进行重构,以增加后期扩展的灵活性。目前支持下面的几种command: FILE,TAIL,HEALTH 命令格式分别如下: FILE命令全格式为,FILE#{filePath}#{BASE64CONTENT} TAIL格式为:TAIL#{FILENAME}#{BASE64CONTENT} HEALTH格式为:HEALTH#{整个文件夹内的文件结构图} 其中FILE命令用于向服务器发送一个小文件。 TAIL命令向服务器的某个文件发送追加的消息。 HEALTH命令,用于在启动的时候进行整个文件系统的完整性校验。 ps:相信大家应该已经可以发觉到其实#Rainy#可以只是启动服务端然后用来作为简单的文件上传器,使用FILE命令即可奥。 HEALTH默认为关闭模式,打开该模式之后,将会进行每个客户端对服务端的校验,如果服务端发觉某个文件不存在,则会打印日志(自动同步还没做)。你现在可以选择手动copy或者scp一下。 应用场景 中小型的静态资源同步; 比如,你部署了多台后端服务器,但是有个上传资源的地方,这种时候怎么让前端可以展示刚刚上传的资源呢?当然可以使用CMS,但是当我们还没有成长为一个大软件的时候,Rainy是一个不错的选择,通过把Rainy分别部署为Master跟Slave,可以方便的将Slave上面的资源同步到Master节点,这时候只要所有的静态资源访问都被导向到Master节点,那么自然上传的文件就是可以访问到的。 使用需求 要求JDK 1.7以上,因为使用了JDK 1.7的API,所以请使用1.7以上运行环境 使用maven管理依赖 依赖于Netty 项目运行方式 从代码运行 该项目为maven项目,下载代码之后直接导入到eclipse即可。启动的方式为下面的两种方式: 启动Master 1 rainy.file.synchronization.server.MonitorServer 启动Master 1 rainy.file.synchronization.client.FileSendClient 直接从二进制运行 项目下面有个bin目录,下载后直接进入bin目录有bat文件可以让你运行服务器和client 项目集成方式 对于普通的java项目或者其他类型的项目,可以采用从二进制代码运行的方式来启动服务器即可。 Linux 可以拷贝bin目录,并使用下面的命令: 启动服务器 1 nohup java -cp .:netty-all-5.0.0.Alpha1.jar:commons-codec-1.9.jar:synchronization-0.0.2-SNAPSHOT.jar rainy.file.synchronization.server.MonitorServer & 启动Slave文件同步 1 nohup java -cp .:netty-all-5.0.0.Alpha1.jar:commons-codec-1.9.jar:synchronization-0.0.2-SNAPSHOT.jar rainy.file.synchronization.client.FileSendClient & 启动Slave 文件tail 1 nohup java -cp .:netty-all-5.0.0.Alpha1.jar:commons-codec-1.9.jar:synchronization-0.0.2-SNAPSHOT.jar rainy.file.synchronization.client.FileTailerSendClient & 对于任意配置文件的修改,请修改bin下面的rainy.properties即可 对于web项目 如果你需要自己决定哪台服务器作为master请自己编写代码并调用上面的FileSendClient和MonitorServer即可。 如果你不想自己决定,那么可以通过APP类进行启动。 master的决定方式参照如下顺序, 首先根据你定义的rainy.properties中的rainy.master.serverName来检查本机的servername是否一致,如果一致则为master。 如果不一致,那么将会获取本机所有的网卡信息,并对比IP,如果IP中有一个跟你的serverName一致,那么则为master, 如果以上都不满足则为slave。 项目地址: http://git.oschina.net/grom/rainy Rainy 0.2.4 版本发布下载地址