1 问题描述

最近笔者在工作中遇到了这样一个问题:对于离线的数据/远端的数据,如何保证在处理过程中的数据安全。

服务器P是我们的业务服务器,负责处理各项业务。比如聊天服务器,处理各种聊天相关的逻辑;邮件服务器,处理和邮件相关的部分。

服务器P处理业务,是需要数据的,但一般而言,进程中存储的,一般只是在线用户的数据。对于不在线的用户来说,数据是存放在数据中心的(有可能是数据库,也有可能是缓存中心)等,总之是不在服务器P上的。

假定数据中心是服务器D,某个时刻,服务器P接到一个请求,要求对用户user1的数据进行修改。user1并不是一个在线用户,服务器P上没有user1的数据。

服务器P的处理逻辑如下:

1 服务器P收到请求,发现没有数据,向服务器D(数据中心)拉取数据,并等待数据到来。

2 服务器P拉取到数据,进行数据处理。

3 将处理后的数据发送回数据中心记录。

看上去逻辑没什么问题,但是,当服务器P处于拉取的过程中(已经发送了拉取协议,但是数据还没有取到),服务器P又收到了一条请求,要求对用户user1的数据进行修改。如果按照上面的处理逻辑,服务器P检测到没有数据,就再发起拉取协议的请求,从服务器D拉取数据,等待数据回来并做处理。

后果:第一次的数据处理后的数据,将会被覆盖掉,引发数据安全问题。


2 解决方案

方案的流程图如下图所示:

紫色部分是操作的发起者,它有可能是用户,有可能是运维人员等。

浅绿色部分是服务器P,是处理操作的地方。

橙色是服务器D,存放所有用户的数据。

服务器P新的处理逻辑如下:

1 服务器P收到操作请求,首先判断该数据是否有缓存(data_map里是否有该数据)。如果有,则直接进行处理;如果没有进入步骤2。

2 服务器P判断当前该数据是否处于拉取中。如果处于拉取状态,则忽略拉取,只是将操作放入到待处理的操作池(handler队列)中;如果不处于拉取状态,服务器P发起一个拉取,并将该数据的拉取状态设置为True,同时将操作放入到待处理的操作池中。

3 服务器P接收到数据中心返回的数据(data_store),通知操作池中所有关注此数据的操作。

4 操作池中的操作,将按照先入先出的顺序,依次对该数据进行处理。

5 将数据写回到数据中心,并根据条件(比如10分钟),将数据从data_map中移除。


3 总结

分布式服务器中,数据安全是很重要的部分,因此开发者对于这部分的逻辑,一定要多检测多验证,保证数据的安全性和一致性。

关注博主获取更多服务器相关的知识~

分布式服务器中的数据安全问题及其解决办法相关推荐

  1. hive数据倾斜的解决办法

    数据倾斜是进行大数据计算时常见的问题.主要分为map端倾斜和reduce端倾斜,map端倾斜主要是因为输入文件大小不均匀导致,reduce端主要是partition不均匀导致. 在hive中遇到数据倾 ...

  2. 分布式存储系统中的数据高效缓存方法

    点击上方蓝字关注我们 分布式存储系统中的数据高效缓存方法 杨青霖, 吴桂勇, 张广艳 清华大学计算机科学与技术系,北京 100084 摘要:针对典型分布式存储系统存在的写放大.I/O路径过长.响应时延 ...

  3. 服务器中了勒索病毒怎么办,服务器中了勒索病毒怎么解决,服务器中了勒索病毒怎么处理

    服务器中了勒索病毒怎么办,服务器中了勒索病毒怎么解决,服务器中了勒索病毒怎么处理 服务器中了勒索病毒是一个严重的问题,因为它会影响到服务器上托管的网站和应用程序,并可能导致数据丢失或泄露.勒索病毒通常 ...

  4. 10g的客户端从9i的服务器中导出数据时遇到上面的问题

    EXP-00056: 遇到 ORACLE 错误 6550 ORA-06550: 第 1 行, 第 41 列: PLS-00302: 必须说明 'SET_NO_OUTLINES' 组件 ORA-0655 ...

  5. 阿里云国际版如何将ECS云服务器中的数据备份到本地

    本文主要介绍如何将阿里云ECS实例中的数据备份到本地,方便您管理数据.下面来和87cloud一起了解阿里云国际版如何将ECS云服务器中的数据备份到本地: 详细信息 您可以将整个ECS的镜像导出到本地, ...

  6. layui数据表格中导出所有数据的简易解决办法

    layui数据表格中导出所有数据的简易解决办法 官方文档的困惑 解决办法 官方文档的困惑 首先要说明的是:layui在 table 的工具栏内置了数据导出按钮,如果你是用它内置的导出按钮来导出数据,是 ...

  7. 楚留香pc端连接服务器未响应,楚留香游戏pc端闪退怎么办_楚留香游戏中pc端闪退解决办法汇总...

    楚留香手游的内存相对其他小型游戏来说比较大,所以游戏的过程中容易出现pc端闪退的情况,楚留香游戏pc端闪退怎么办?快啦小编给大家带来楚留香游戏中pc端闪退解决办法汇总. 楚留香游戏中pc端闪退解决办法 ...

  8. 服务器越来越慢的原因及解决办法

    随着各种主机产品的推出,服务器出现的问题各式各样,由于虚拟主机都是同时运行,便会对服务器产生过大的压力,从而导致服务器的速度越来越缓慢,下面和大家分享一下服务器越来越慢的原因及解决办法. 1.虚拟主机 ...

  9. 服务器显示禁止设置多个ip地址,服务器禁止设置多个ip解决办法

    服务器禁止设置多个ip解决办法 内容精选 换一换 GAUSS-02161: "PGXC Node %s: cannot drop local node"SQLSTATE: 4260 ...

最新文章

  1. 面向对象方法综述(工具<方法<思维<价值观)
  2. c语言ctype中替换查找字符,c – std :: ctype是否总是按“C”语言环境对字符进行分类?...
  3. SAP SD基础知识之税(Taxes)
  4. 查看linux上面是否有安装redis,redis启动
  5. 开发日记-20190511 关键词 onStart()和onResume()存在的原因(猜测篇)
  6. C语言从青铜到王者——基础知识总结
  7. 关闭数据执行保护(DEP)
  8. Nginx安装及配置简介
  9. hdu4841 圆桌问题-vector容器模拟
  10. npy一维数组如何对给出的索引进行反选
  11. Android Studio发布项目到jcenter
  12. 广州坐标系转换大地2000_实用帖 | 从地方坐标系到2000国家大地坐标系的转换方法...
  13. 图SLAM:Noob的同时本地化和映射指南
  14. Google 2020 应用与游戏出海 6 月刊: 政策先行,护航应用远洋
  15. xcode8插件管理工具
  16. Linux下RTL8723BE无线网卡驱动问题解决方法
  17. esxi云虚拟服务器如何搭建,如何搭建esxi环境?
  18. useImperativeHandle使用实例
  19. ajax:php数组数据类型
  20. sql server 数字转大写

热门文章

  1. Flutter-Ink家族
  2. LaTex 文章正文footnote和表格的footnote合并计数
  3. 爬取知乎,通过数据传输接口
  4. Linux打字游戏程序代码,c语言shell打字游戏.pdf
  5. Matlab 彩色图片直方图均衡化处理 line()函数实现
  6. Win2012或Win2016安装网卡
  7. OperationException: CLIENT: CLIENT_ERROR cannot increment or decrement non-numeric value
  8. html5 lang属性都有哪些语言,HTML5中的lang属性,zh
  9. 总价合同、成本补偿合同、工料合同
  10. 15.7 项目:多线程 XKCD 下载程序