分布式服务器中的数据安全问题及其解决办法
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 总结
分布式服务器中,数据安全是很重要的部分,因此开发者对于这部分的逻辑,一定要多检测多验证,保证数据的安全性和一致性。
关注博主获取更多服务器相关的知识~
分布式服务器中的数据安全问题及其解决办法相关推荐
- hive数据倾斜的解决办法
数据倾斜是进行大数据计算时常见的问题.主要分为map端倾斜和reduce端倾斜,map端倾斜主要是因为输入文件大小不均匀导致,reduce端主要是partition不均匀导致. 在hive中遇到数据倾 ...
- 分布式存储系统中的数据高效缓存方法
点击上方蓝字关注我们 分布式存储系统中的数据高效缓存方法 杨青霖, 吴桂勇, 张广艳 清华大学计算机科学与技术系,北京 100084 摘要:针对典型分布式存储系统存在的写放大.I/O路径过长.响应时延 ...
- 服务器中了勒索病毒怎么办,服务器中了勒索病毒怎么解决,服务器中了勒索病毒怎么处理
服务器中了勒索病毒怎么办,服务器中了勒索病毒怎么解决,服务器中了勒索病毒怎么处理 服务器中了勒索病毒是一个严重的问题,因为它会影响到服务器上托管的网站和应用程序,并可能导致数据丢失或泄露.勒索病毒通常 ...
- 10g的客户端从9i的服务器中导出数据时遇到上面的问题
EXP-00056: 遇到 ORACLE 错误 6550 ORA-06550: 第 1 行, 第 41 列: PLS-00302: 必须说明 'SET_NO_OUTLINES' 组件 ORA-0655 ...
- 阿里云国际版如何将ECS云服务器中的数据备份到本地
本文主要介绍如何将阿里云ECS实例中的数据备份到本地,方便您管理数据.下面来和87cloud一起了解阿里云国际版如何将ECS云服务器中的数据备份到本地: 详细信息 您可以将整个ECS的镜像导出到本地, ...
- layui数据表格中导出所有数据的简易解决办法
layui数据表格中导出所有数据的简易解决办法 官方文档的困惑 解决办法 官方文档的困惑 首先要说明的是:layui在 table 的工具栏内置了数据导出按钮,如果你是用它内置的导出按钮来导出数据,是 ...
- 楚留香pc端连接服务器未响应,楚留香游戏pc端闪退怎么办_楚留香游戏中pc端闪退解决办法汇总...
楚留香手游的内存相对其他小型游戏来说比较大,所以游戏的过程中容易出现pc端闪退的情况,楚留香游戏pc端闪退怎么办?快啦小编给大家带来楚留香游戏中pc端闪退解决办法汇总. 楚留香游戏中pc端闪退解决办法 ...
- 服务器越来越慢的原因及解决办法
随着各种主机产品的推出,服务器出现的问题各式各样,由于虚拟主机都是同时运行,便会对服务器产生过大的压力,从而导致服务器的速度越来越缓慢,下面和大家分享一下服务器越来越慢的原因及解决办法. 1.虚拟主机 ...
- 服务器显示禁止设置多个ip地址,服务器禁止设置多个ip解决办法
服务器禁止设置多个ip解决办法 内容精选 换一换 GAUSS-02161: "PGXC Node %s: cannot drop local node"SQLSTATE: 4260 ...
最新文章
- 面向对象方法综述(工具<方法<思维<价值观)
- c语言ctype中替换查找字符,c – std :: ctype是否总是按“C”语言环境对字符进行分类?...
- SAP SD基础知识之税(Taxes)
- 查看linux上面是否有安装redis,redis启动
- 开发日记-20190511 关键词 onStart()和onResume()存在的原因(猜测篇)
- C语言从青铜到王者——基础知识总结
- 关闭数据执行保护(DEP)
- Nginx安装及配置简介
- hdu4841 圆桌问题-vector容器模拟
- npy一维数组如何对给出的索引进行反选
- Android Studio发布项目到jcenter
- 广州坐标系转换大地2000_实用帖 | 从地方坐标系到2000国家大地坐标系的转换方法...
- 图SLAM:Noob的同时本地化和映射指南
- Google 2020 应用与游戏出海 6 月刊: 政策先行,护航应用远洋
- xcode8插件管理工具
- Linux下RTL8723BE无线网卡驱动问题解决方法
- esxi云虚拟服务器如何搭建,如何搭建esxi环境?
- useImperativeHandle使用实例
- ajax:php数组数据类型
- sql server 数字转大写
热门文章
- Flutter-Ink家族
- LaTex 文章正文footnote和表格的footnote合并计数
- 爬取知乎,通过数据传输接口
- Linux打字游戏程序代码,c语言shell打字游戏.pdf
- Matlab 彩色图片直方图均衡化处理 line()函数实现
- Win2012或Win2016安装网卡
- OperationException: CLIENT: CLIENT_ERROR cannot increment or decrement non-numeric value
- html5 lang属性都有哪些语言,HTML5中的lang属性,zh
- 总价合同、成本补偿合同、工料合同
- 15.7 项目:多线程 XKCD 下载程序