V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
VensonEEE
V2EX  ›  程序员

分布式系统,资源同步设计

  •  
  •   VensonEEE · 2019-09-09 15:10:43 +08:00 · 2304 次点击
    这是一个创建于 1930 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有个古老的项目,拉到了大客户资源,需要翻新装修。需求如下:

    • 1.原项目 asp.net 语言,需要支持横向扩容,oracle 热备定库,nginx 搞定了集群、redis 搞定 session。
    • 2.文件问题一直很糟心,大部分的图片都需要实时显示,单独资源服务架构又要做一层热负载,会使结构变的复杂。
    • 3.现需要同步每个项目中的资源文件夹进行同步,可以接受低延迟。windows 服务器有 DFS 可以实现,却需要 DC,配置 DC 真复杂,且机器多了之后可靠性并不好。
    • 4.目前只能设计一个单独的文件服务了,调用接口上传,传完服务调用其他机器的接口通知下载。这个事儿还没弄。
    • 5.各位大佬有没有更合适的方案或者造好的轮子推荐啊,语言 java、C#都可接受。
    5 条回复    2019-09-10 10:18:29 +08:00
    BuffDog
        1
    BuffDog  
       2019-09-09 16:48:51 +08:00
    这边情况非常类似,交流一下?
    misaka19000
        2
    misaka19000  
       2019-09-09 16:53:42 +08:00
    为啥不用对象存储?
    jimrok
        3
    jimrok  
       2019-09-09 22:22:02 +08:00
    去中心化的好像只有 gossip 协议来传递同步信息,java 的库应该有不少。依靠 gossip,其他节点应该知道要同步数据。把资源映射到若干 bucket 上(一致性 hash )。然后请求下载时,节点检查 bucket 是否同步了这个资源,如果没有同步,将请求发送给原始上传服务器,这里怎么知道资源会在哪个服务器上?查一下 redis 最近的写入信息,或者根据一致性 hash,算出来应该是哪个节点。
    VensonEEE
        4
    VensonEEE  
    OP
       2019-09-10 09:24:23 +08:00
    @BuffDog 目前准备把集群信息写进数据库,每个机器装个 ftp-server,收到上传的时候同步,每个服务器都传一份。

    @misaka19000 不想和具体的云绑定,图片放对象存储 原项目也会有比较大的改动。

    @jimrok 研究了一下,挺麻烦,这类的软件生态对 windows 基本没有支持。感谢大佬。
    opengps
        5
    opengps  
       2019-09-10 10:18:29 +08:00
    我有篇博客比较接近,不知道是否有参考价值: https://www.opengps.cn/Blog/View.aspx?id=238
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1098 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 18:57 · PVG 02:57 · LAX 10:57 · JFK 13:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.