Java 防止在更新json文件时请求从json文件获取数据

Java 防止在更新json文件时请求从json文件获取数据,java,javascript,php,c,json,Java,Javascript,Php,C,Json,我们已经看到很多使用JSON文件的应用程序,但我有一个案例研究,我想得到解决方案 让我们看看 一个应用程序正在使用json文件,该文件接收来自数百万用户的请求,每秒完成数千个请求 JSON文件由管理面板每分钟、每秒或特定时间段更新一次 当接收到访问JSON文件的请求并同时从管理员处打开以进行更新时,JSON文件的行为会是什么(我已经了解到JSON文件将以可读模式获取) 让JSON文件使用一些脚本编写,它的过程比50%的文件更新时的行为快三分之一秒 当流程完成或部分更新时,将为任一文件提供新的书面

我们已经看到很多使用JSON文件的应用程序,但我有一个案例研究,我想得到解决方案

让我们看看

  • 一个应用程序正在使用json文件,该文件接收来自数百万用户的请求,每秒完成数千个请求

  • JSON文件由管理面板每分钟、每秒或特定时间段更新一次

  • 当接收到访问JSON文件的请求并同时从管理员处打开以进行更新时,JSON文件的行为会是什么(我已经了解到JSON文件将以可读模式获取)

  • 让JSON文件使用一些脚本编写,它的过程比50%的文件更新时的行为快三分之一秒

    当流程完成或部分更新时,将为任一文件提供新的书面内容?


  • 不用麻烦锁定,只要使用

    假设您在一个操作系统上运行,
    rename()
    是一个原子操作,创建一个新的文件,比如“/data/file/name.json.new”,完成后,重命名该文件。在C中,看起来是这样的:

    rename(“/data/file/name.json.new”、“/data/file/name.json”)


    这样,任何打开“/data/file/name.json”的进程都将始终看到一致的数据文件。

    实际上,根据您的描述,您需要一个在文件服务器端应用操作的服务

    不过,您应该避免承担创建、Readind、更新和删除()的责任,因为您在维护原子性、一致性、隔离性和持久性()等原则方面会遇到困难,而有一些系统为您这样做,即数据库管理系统。 简单地说,像您描述的场景应该是DBMS的责任,而不是您的责任

    您可能需要一个NoSQL DBMS,负责数据库的CRUD操作——它可以是基于JSON格式和其他形式的文件,始终保存ACID(或者几乎总是保存ACID,但这可能是您在搜索时会学到的东西)。这是一个很好的例子

    因为您提到了JSON,请考虑到传输数据和存储数据是另一回事。我建议您在请求和响应中使用JSON格式,但要探索存储中的其他选项。例如,即使是使用SQL的关系DBMS也可能对您有好处,这取决于您的需要。您可能只需要在接收或发送到每个客户机的任何位置以JSON格式形成(编码和解码)数据


    查看更多信息。

    您应该阅读读写锁。它们专门用于解决多个编写器之间的信息碰撞问题。不要将文件用作事务性存储。正如@eckes所说,不要使用文件。使用数据库,并将结果编码为json.Thank@尼克:这确实增强了我的编程方法。@MuhammadIrfan-这取决于你对文件编写过程的控制程度。你最初的问题并没有提供这些信息。您始终可以编写自己的服务器端代码来实现这一点,尽管这可能需要大量的工作,具体取决于您的配置。