Java web主机上的多处理

Java web主机上的多处理,java,web-services,multiprocessing,Java,Web Services,Multiprocessing,我有一个java动态web应用程序。我正在为我的android应用程序公开RESTful Web服务 问题是有一些服务可以进行数据库更新。现在,我想在公共域上托管应用程序。我想知道在web主机上并行处理是如何工作的 比如说,我的服务/updateDB更新数据库。现在,如果有两个用户同时访问同一个服务,那么这两个用户是否会同时运行,因为这将导致数据不一致。整个事情到底是如何运作的 我需要注意代码中的同步吗?为什么要使用这种数据库? 某些数据库引擎已经有了允许在另一个请求重写数据之前完成事务的机制。

我有一个java动态web应用程序。我正在为我的android应用程序公开RESTful Web服务

问题是有一些服务可以进行数据库更新。现在,我想在公共域上托管应用程序。我想知道在web主机上并行处理是如何工作的

比如说,我的服务
/updateDB
更新数据库。现在,如果有两个用户同时访问同一个服务,那么这两个用户是否会同时运行,因为这将导致数据不一致。整个事情到底是如何运作的


我需要注意代码中的同步吗?

为什么要使用这种数据库? 某些数据库引擎已经有了允许在另一个请求重写数据之前完成事务的机制。大多数web开发人员不必担心这一点,因为应用服务器(websphere、weblogic)和数据库(Mysql、Oracle)会为您处理这些事情

(我将为您过度简化此过程。) 对webservice的请求可能会在DB上执行一个或多个操作。这些操作可以聚集在一起并称为事务。交易可以包括以下一个或多个插入、更新、删除等。例如,新客户为您的Web服务注册。发生以下操作,这些操作可被视为事务

  • 在客户表中插入新的客户用户名和密码
  • 在地址表中插入客户地址
  • 更新汇总表中的客户总数
  • 上述所有操作都可以作为一个事务完成。如果其中任何操作失败,则所有操作都将自动恢复。类似地,如果两个客户同时注册,那么数据库也会注意不要相互过度写入

    我们可以对数据库进行配置,以确保每个事务都应在另一个事务弄脏一行数据之前完成

    在数据库中,它们被称为ACID属性

    • A-原子性-每个事务都必须完成,如果事务中有任何内容失败,则不要完成该事务,并恢复该事务中以前的每个操作
    • C-一致性-确保发生的每个事务始终以预定义的方式更新数据库。e、 g.每次客户注册后,确保执行其中的所有操作
    • I-隔离-如果传入多个请求,那么它们将分别在数据库上执行
    • D-持续性-事务完成后,所做的更改应永久保留
    例如,带有InnoDB引擎的Mysql数据库支持这一点。还有其他数据库也支持这一点

    你可以在这里读更多

    这是数据库中一个非常广泛的主题

    编程语言有API,可以帮助您以这种方式编写代码。但最基本的收获是数据库和应用服务器将为您完成大部分工作。您只需确保设计代码结构以识别事务并适当地提交它们)

    Java和其他编程语言知道数据库中的ACID属性,并将帮助您实现这一目标

    在这里阅读更多关于如何使用Java实现上述目标的信息。

    类似地,其他语言也有类似的功能和API


    在google中搜索
    “java数据库事务”
    “数据库事务”

    基本上,如果我的web应用部署在tomcat上。我有MySQL,那么我真的不需要担心两个人是否在同一时刻访问应用程序(假设他们都在更改数据库中的相同值)。是的,你是对的。请务必阅读与数据库相关的其他注意事项,如打开和关闭连接、连接池等。它们都很重要,将帮助您构建可扩展的健壮应用程序。