当前位置: 首页 > 知识库问答 >
问题:

使用java写一个图片服务器,怎么设计多台服务器备份和恢复?

严承允
2023-10-24

有个需求说是为了防止一台服务器上的图片被删,要求提供照片多服务器备份能力、
提供多服务器恢复能力。就是一个主服务器接收完图片上传后,从服务器(不确定多少台)要同步文件,然后主服务器文件删了后找不到文件要从这些同步的服务器恢复文件。该怎么去设计

共有3个答案

慕承恩
2023-10-24

这个要利用多个服务器做数据高可用,通常是要用分布式的存储系统(集群)。
使用集群的好处是,当集群内的节点挂掉之后,数据一般不会丢失,因为集群内其他节点会有冗余。

但是这个只要文件对象被删除了,在集群中的数据还是会被删除掉的,没有恢复。

我觉得,删除操作可以改成逻辑删除,服务器本地的文件资源不删除或者延迟删除。后端存储系统选择就多了,那么用本地存储或者存储系统都行。

假设这个业务一定要物理删除文件,我可能会考虑直接用第三方程序去监控文件的修改和新增的状态,同步文件到其他服务器。删除的文件的操作只在主服务器上操作。

郤立果
2023-10-24

可以考虑通过引入分布式存储的构件来解决,比如通过引入minio集群、HDFS等,通过构件自己的分布式策略来处理文件备份的需求。比如使用HDFS集群,可以先根据实际的业务需求评估要有多少节点,每个文件创建多少副本,这样你在向集群上传文件时,集群会自己在多个节点上创建文件副本,你的主服务只需要从整个集群中存取文件,不需要考虑如何做负载均衡、如何备份等等。

南门鸿哲
2023-10-24

使用阿里云、腾讯云等云存储就好了。自动多地区备份,可以开启文件多版本,安全、高可以,价格还便宜。

如果一定要自己实现,可以搜索一下分布式存储服务,用开源代码搭建自己的分布式存储中心,然后将文件上传到存储中心。比如说像:minIO、Ceph

 类似资料:
  • 问题内容: 我有一个程序可以向服务器发送ping请求。该列表很大,如果无法访问,则需要花费时间才能进入下一个列表。 我希望对于每个,它都应创建一个新线程并同时处理所有这些线程。 这是代码: 如何使此代码对所有s 执行ping操作? 问题答案: 如果没有别人的建议,怎么办呢? 我有三个类-是我的主类,是每个线程执行的任务,并且有结果代码(我们还可以添加一些其他信息,状态消息等)。 平平行 PingT

  • 本文向大家介绍服务器之间文件备份方案、如何把服务器文件自动备份到另外一台服务器?,包括了服务器之间文件备份方案、如何把服务器文件自动备份到另外一台服务器?的使用技巧和注意事项,需要的朋友参考一下 很多单位都有文件服务器备份的需求,并且常常是把一个服务器的文件自动备份到另外一台文件服务器 。如何实现呢? 一、Windows文件服务器自动备份的方法 Windows文件服务器自动备份的最简单方法是安装专

  • Netty 实现的 echo 服务器都需要下面这些: 一个服务器 handler:这个组件实现了服务器的业务逻辑,决定了连接创建后和接收到信息后该如何处理 Bootstrapping: 这个是配置服务器的启动代码。最少需要设置服务器绑定的端口,用来监听连接请求。 通过 ChannelHandler 来实现服务器的逻辑 Echo Server 将会将接受到的数据的拷贝发送给客户端。因此,我们需要实现

  • 我正在使用谷歌服务帐户将MySQL备份从我们的网络服务器推送到谷歌云端硬盘,使用谷歌API PHP客户端脚本设置为cron作业。 我现在想在多个网络服务器上运行相同的脚本,我不知道如何正确配置服务号,应该吗? > 是否在所有服务器上使用相同的服务帐户和服务帐户密钥/凭据? 或者使用相同的服务帐户,但为每个服务器添加服务帐户密钥/凭据? 还是为每台服务器设置单独的服务帐户?

  • 问题内容: 我正在将一些后端转换为模块,并在设置开发环境配置时感到困惑。我在Eclipse中使用Java,但未在Maven中使用Java。架构非常简单: 前端模块为默认模块。基本的GAE / GWT应用程序。将项目放入任务队列。 后端模块处理任务队列。 使用旧的后端体系结构,一个调试配置将启动开发服务器,该服务器将为GWT DevMode UI 和 后端任务处理提供服务。 问题的症结在于DevMo

  • 我尝试使用Java中的Sockets连接到多个客户端。一切似乎都正常,但问题是,服务器只监听第一个客户端。如果有多个客户端,服务器可以向它们发送所有消息,但他可以只监听来自第一个客户端的消息。我尝试了所有这些(我从昨天开始就遇到了这个问题)。所以我很确定,错误一定在“ClientListener”类中。 说明:有一个客户端列表(用于与字符串通信的连接)。在GUI中有一个列表,我可以在其中选择要与哪