# SeverSynchronization **Repository Path**: aliothstar/sever-synchronization ## Basic Information - **Project Name**: SeverSynchronization - **Description**: 一个自动化的服务器状态监测和文件同步解决方案,以确保服务器的稳定性和数据的完整性。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-09-24 - **Last Updated**: 2023-10-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目背景: ​ 随着公司业务的扩张,公司拥有了一批云服务器,这些服务器是我们业务的核心基础设施。我们需要确保这些服务器的稳定性,并能够及时将本地的数据文件同步到这些服务器上。这些云服务器在接收到数据后,还需要进行进一步的处理和存储,以支持公司的数据分析和业务需求。 ​ 然而,小张作为负责这项任务的员工,每次手动执行这些操作既耗时又繁琐。为了提高工作效率,我们需要设计并实现一个自动化的程序,以协助小张完成这些任务。 # 项目目的: ​ 项目的主要目标是开发一个自动化的服务器状态监测和文件同步解决方案,以确保服务器的稳定性和数据的完整性。 # 阶段一: ==需求:== 服务器列表会放到一个`server.txt`文件中,请从`server.txt`文件中读取到服务器列表并发送`http`请求确定服务器上的接收文件服务是否正常,并在控制台显示检测结果。 1. `Three.java`实现 > 对`json`文件里存放的服务器ip、网址进行检测,先判断是什么地址,根据地址发送请求返回状态码和请求时间,根据状态码判断服务器是否正常。 image-20230927210910313 2. `ServerMonitor.java`实现 > 代码实现了一个测试服务器可用性的功能。它通过持续地从文件中读取服务器URL,并为每个URL创建一个`ServerTester`对象,然后将这些对象提交到线程池中进行异步执行。 > > `ServerTester`类是一个内部类,实现了`Callable`接口,并实现了`call()`方法作为线程执行的入口点。在`call()`方法中,它调用了`checkServiceAvailability()`方法来检查服务器的可用性,并记录了开始时间和结束时间,以计算出响应时间。然后,根据服务器的可用性将相应的信息打印出来,最后返回服务器的可用性结果。 > > 在主方法中,通过不断循环读取服务器URL,并为每个URL创建一个`ServerTester`对象来进行测试。同时,使用线程池来管理这些测试任务的执行,最多同时执行10个任务。每完成一个阶段的测试后,会打印出测试的总次数和相应的信息,并等待一段时间后开始下一个阶段的测试。 f8de633d0ad08661e56435b607b977e 3. `ServerChecker.java`实现 > > > 通过输入流读取文件中的服务器地址,定义线程池,将发送请求检测服务器是否正常的任务通过submit()方法提交至线程池运行检测,每一轮检测结束重新读取文件中的服务器地址,实现实时检测。 > > 运用面向对象的封装思想,提高代码可读性及重用性。 image-20230927214603626 4. `needtest01.java`实现 > `main`:执行服务线程,设置休眠时间,运行次数 > > 服务主要任务:解析`json`文件;创建分支线程,并设置分支线程所需要的`name`、`url`属性,并创建分支线程通过`FutureTask`获取是否成功的返回值进行统计 > > 服务分支任务:处理获取属性,通过`Socket`进行请求数据与读取响应码,通过响应字段,计算访问速度。 - 测试文件:存储网站名称,网站地址、域名、IP image-20230927213422221 - 运行截图 输出网站名称 网站地址、域名、IP 运行响应码 读取速度:字节/秒 image-20230927213302137 # 阶段二: 需求: ​ 由于`JSON`格式数据表示能力更强,所以现将服务器文件列表更改为`info.json`文件,并在里面添加了**服务器管理员的邮箱**信息及**同步文件列表**信息。现需要将程序升级为读取`JSON`文件中的服务器列表来检测服务器状态,并在控制台显示检测结果。若服务器状态异常请在控制台输出异常服务器信息。若服务器状态正常,请将需要同步的数据文件通过**多个线程**发送到每台服务器上。