Rainy 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Rainy 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
Rainy 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
Rainy 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
Rainy 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !

软件简介

Rainy的含义就是下雨,下雨就是从各种地方来的水汇入到大地的过程,所以Rainy做的事情也一样,就是把四处的文件汇总到某个大地服务器,比如你的静态资源。

在你上传的资源或者文档的时候可以帮你将上传到不同机器的文档汇总到某一台master机器上。

应用场景

中小型的静态资源同步;

比如,你部署了多台后端服务器,但是有个上传资源的地方,这种时候怎么让前端可以展示刚刚上传的资源呢?当然可以使用CMS,但是当我们还没有成长为一个大软件的时候,Rainy是一个不错的选择,通过把Rainy分别部署为Master跟Slave,可以方便的将Slave上面的资源同步到Master节点,这时候只要所有的静态资源访问都被导向到Master节点,那么自然上传的文件就是可以访问到的。

使用需求

  1. 要求JDK 1.7以上,因为使用了JDK 1.7的API,所以请使用1.7以上运行环境

  2. 使用maven管理依赖

  3. 依赖于Netty

项目运行方式

从代码运行 该项目为maven项目,下载代码之后直接导入到eclipse即可。启动的方式为下面的两种方式:

  • 启动Master

rainy.file.synchronization.server.MonitorServer
  • 启动Master

rainy.file.synchronization.client.FileSendClient
  • 直接从二进制运行 项目下面有个bin目录,下载后直接进入bin目录有bat文件可以让你运行服务器和client

项目集成方式

对于普通的java项目或者其他类型的项目,可以采用从二进制代码运行的方式来启动服务器即可。 Linux 可以拷贝bin目录,并使用下面的命令:

  • 启动服务器

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文件同步

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

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。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (4)

加载中
巴林的狗尾草软件作者
#Rainy# 话题为啥关联不上啊
2016/04/28 18:09
回复
举报
巴林的狗尾草软件作者
太帅了 #Rainy#
2016/04/28 18:10
回复
举报
巴林的狗尾草软件作者
#Rainy# 发布0.0.2-SNAPSHOT版本,欢迎试用,解决静态资源和日志文件汇总问题。 ps:今日更新,fixrolling日志文件名称错误的bug。 code:http://git.oschina.net/grom/rainy
2016/05/05 10:54
回复
举报
巴林的狗尾草软件作者
该评论暂时无法显示,详情咨询 QQ 群:912889742
更多评论
发表了资讯
2016/06/01 00:00

Rainy 0.2.4 版本发布

Rainy的含义就是下雨,下雨就是从各种地方来的水汇入到大地的过程,所以Rainy做的事情也一样,就是把四处的文件汇总到某个大地服务器,比如你的静态资源。 在你上传的资源或者文档的时候可以帮你将上传到不同机器的文档汇总到某一台master机器上。 本次更新: 重构服务端代码,将服务端代码使用command的格式进行重构,以增加后期扩展的灵活性。目前支持下面的几种command: FILE,TAIL,HEALTH 命令格式分别如下: FILE命令全格...

5
13
发表了资讯
2016/05/05 00:00

Rainy 0.0.2 发布,同步增加日志 Tail 汇总功能

Rainy 0.0.2 发布了,Rainy的含义就是下雨,下雨就是从各种地方来的水汇入到大地的过程,所以Rainy做的事情也一样,就是把四处的文件汇总到某个大地服务器,比如你的静态资源。 在你上传的资源或者文档的时候可以帮你将上传到不同机器的文档汇总到某一台master机器上。 本次更新为: 1. 增加对于动态增长的日志文件进行监控并同步输出到服务器的功能 a) 本地日志将会增量被同步到master b) 服务器日志以天为单位进行rolling,以...

3
13
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2016/04/27 10:23

[Rainy开发笔记]Rainy的来因

在日常的应用开发中一个很常见的场景就是文件的上传,如果我们只有一台服务器,那么往往问题比较小,只要把文件上传到某个应用服务器即可,静态资源的访问也使用类似于下图的方式进行,这是无论是仅仅使用应用服务器作为静态资源的负载,还是使用某些服务器如Nginix作为负载,只要约定好上传文件的路径和系统访问之间的关系即可,无须额外的配置和编码。 但是随着用户量的提升,我们的应用服务器,将会逐步的增加,那么静态资源...

0
0
2016/04/27 11:35

[Rainy开发笔记]使用RandomAccessFile实现的Tail

怎么实现一个tail,一开始的想法是在本地或者内存记录下当前读取到的文件的位置,然后每隔一定时间检测下看看是否有更新,想好了之后就准备开始写,但是按照习惯,能偷懒绝对不动手的原则首先google了一把,果不其然,网上已经有实现方案了,二话不说,拷贝过来进行修改。 思路就是我刚才的思路,但是接下来这个思路有个问题,就是轮询的效率并不高,而且读取不是实时的,因为我要做远程的这种文件同步,延迟性的tail肯定不可取...

0
0
发表了博客
2020/06/23 21:30

Prior-based Domain Adaptive Object Detection for Hazy and Rainy Conditions

目录 摘要 1、简介 2、相关工作 3、提出的方法 3.1、检测网络 3.2、Prior-adversarial训练 3.2、残差特征恢复模块 3.4、整体的损失 4、实验和结果 4.1、实验细节 4.2、适配到雾霾条件 4.3、适配雨场景 5、结论 摘要 恶劣的天气条件,如雾霾和雨水,会破坏捕获图像的质量,导致训练在干净图像上的检测网络在这些图像上表现不佳。为了解决这一问题,我们提出了一种无监督的基于先验的领域对抗目标检测框架,使检测器适应于雾蒙蒙和...

0
0
发表了博客
2020/08/22 16:01

AtCoder Beginner Contest 175 A Rainy Season 字符串+5种情况

AtCoder Beginner Contest 175 比赛人数8820 AtCoder Beginner Contest 175 A Rainy Season 字符串+5种情况 总目录详见https://blog.csdn.net/mrcrack/article/details/104454762 在线测评地址https://atcoder.jp/contests/abc175/tasks/abc175_a 题目大意:给定一个字符串,统计字母'R'的最大连续数量。 基本思路:一共有5种情况,如下: 情况1:RRR 3 情况2:RRS 2 情况3:SRR 2 情况4:RSS,SRS,SSR 1 情况5:SSS 0 AC代码如下: ...

0
0
发表了博客
2018/03/11 00:20

维特比算法(Viterbi)-实例讲解(暴力破解+代码实现)

1、简介   维特比算法是一个通用的求序列最短路径的动态规划算法,也可以用于很多其他问题,比如:文本挖掘、分词原理。既然是动态规划算法,那么就需要找到合适的局部状态,以及局部状态的递推公式。在HMM中,维特比算法定义了两个局部状态用于递推。   第一个局部状态是在时刻i隐藏状态为i所有可能的状态转移路径i1,i2.......it中的最大概率   第二个局部状态由第一个局部状态递推得到。 2、算法详解   (1)从点S出发...

0
0
发表了博客
2020/05/25 07:41

HMM模型和Viterbi算法

一、隐含马尔可夫模型(Hidden Markov Model) 1、简介   隐含马尔可夫模型并不是俄罗斯数学家马尔可夫发明的,而是美国数学家鲍姆提出的,隐含马尔可夫模型的训练方法(鲍姆-韦尔奇算法)也是以他名字命名的。隐含马尔可夫模型一直被认为是解决大多数自然语言处理问题最为快速、有效的方法。 2、马尔可夫假设   随机过程中各个状态St的概率分布,只与它的前一个状态St-1有关,即P(St|S1,S2,S3,…,St-1) = P(St|St-1)。   ...

0
0
发表了博客
2015/09/19 19:27

HMM——前向算法与后向算法

1. 前言 前向算法和后向算法主要还是针对HMM三大问题之一的评估问题的计算,即给定模型参数,计算观察序列的概率。文章不介绍过多公式,主要看两个例子 复习一下HMM的三大要素(以海藻(可观测)和天气(隐状态)为例): ①初始概率向量:当前时刻天气的可能性,属于先验概率 ②状态转移矩阵:从当前天气转移到下一个天气的可能性,比如P(雨天|晴天)即为晴天转移到雨天的概率 ③混淆矩阵:当前天气为某种天气的时候,海藻状态为...

0
0
发表了博客
2016/06/15 10:59

数据挖掘算法学习(二)weka简介

weka官方下载地址:http://www.cs.waikato.ac.nz/ml/weka/downloading.html weka简介: Weka的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),是一款免费的,非商业化(与之对应的是SPSS公司商业数据挖掘产品--Clementine )的,基于JAVA环境下开源的机器学习(machine learning)以及数据挖掘(data minining)软件。它和它的源代码可在其官方网站下载。WEKA作为一个公开的数据挖掘工作平台,集合了...

0
0
发表了博客
2018/05/02 15:48

R语言学习笔记—决策树分类

一、简介 决策树分类算法(decision tree)通过树状结构对具有某特征属性的样本进行分类。其典型算法包括ID3算法、C4.5算法、C5.0算法、CART算法等。每一个决策树包括根节点(root node),内部节点(internal node)以及叶子节点(leaf node)。 根节点:表示第一个特征属性,只有出边没有入边,通常用矩形框表示。 内部节点:表示特征属性,有一条入边至少两条出边,通常用圆圈表示。 叶子节点:表示类别,只有一条入边没有出...

0
0
发表了博客
2019/04/10 22:04

C4.5决策树分裂详解(离散属性和连续属性)

决策树构建过程: 1、将所有训练数据集放在根节点上; 2、遍历每种属性的每种分割方式,找到最好的分割点; 3、根据2中最好的分割点将根节点分割成多个子节点(大于等于2个); 4、对剩下的样本和属性重复执行步骤2、3,直到每个子节点中的数据都属于同一类为止。 C4.5算法: C4.5算法是采用信息增益率来进行节点的分裂的,公式为:, 其中, , 而, ,并且要求信息增益率越大越好。 下面举例具体计算,如下图为各种天气下是否打高尔...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
4 评论
22 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部