Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

系统级的操作请使用队列

  很多程序设计的时候都没有考虑同时操作的情况,比如打开多个终端,同时使用 git pull 会怎样?以前一直很好奇这件事,后来试了下,只有一个终端成功,另一个由于文件权限问题产生了错误。这样的结果真的好么?我觉得对于这些系统级的操作应该考虑队列化。
  Web 是一个多用户平台,当一个项目部署到服务器上后,所有能访问这台服务器的用户都可以创建会话,都可以执行服务器程序。Web 应该是最容易造成多个用户在做同一件事的平台了。那么如果服务器程序中包含了一些系统级的操作怎么办呢?
  其实 git pull 这种东西还算比较安全的,因为它会因为权限问题而错误掉。有些命令可能根本不会错误,甚至两个命令同时执行可能造成死循环(比如边创建边删除)。所以,我觉得服务器端对这些情况应该先队列化,然后同步地处理。
  或者我们根本不应该允许「系统级操作」这样的东西直接存在,如果真有某些需求,应该将其写成系统服务,自带队列和锁之类的机制,然后提供 API 给 Web 服务调用。就像数据库一样把各种麻烦的事情处理掉了,程序使用数据库就只是与一个服务通信而已,根本不用在意同时做某个操作,甚至都不用考虑数据到底存储在哪台机器上。
  不过在大部分情况下,直接面向一般用户的东西不会也不该有太高级的系统级操作。但一些面向开发者或管理员的内部工具就会有,比如项目部署工具、数据库备份工具等。总之,如果有就应该考虑把危险操作队列处理避免多个会话同时操作时造成不可预料的结果。
网名:
54.226.58.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^