广告投放设置reload与文件同步服务

投放设置可以存储为文件,也可以存储在数据库中,如果存储在文件中,当投放设置改变时需要重新reload投放设置。

一:投放设置reload方案
在后台服务程序中,比如是c++程序,投放设置会被定义为一个对象,当投放设置被改变时,需要创建一个新的对象,但是问题是什么时候释之前的这个对象,因为之前的对象可能还有某个线程在使用,还有如果投放设置一直在修改,那就可能有多个之前的对象。

解决reload有两种方式:
a:一种使用指针,当投放设置被修改时,创建一个新的指针,新进来的请求则使用新的投放设置对象,将老的指针保存在一个将要被删除的队列中,比如设置为1分钟之后删除,则在1分钟之内其他的线程还是可以使用老的指针的。
b:使用智能指针, 当投放设置被修改时,创建一个新的指针,并将新指针设置到智能指针对象中,新进来的请求则使用新的投放设置对象,如果之前已经拿到了老的对象的线程,则会使用老的对象,直到没有任何线程使用老对象时,老的对象会自动释放析构

二:文件同步
因为使用文件保存投放设置,文件同步服务就必不可少了。
当用户在界面操作修改投放设置的时候,前端将数据存储到数据库中,并触发客户端开始准备发送投放设置文件到投放机器。
a:如果文件内容短,则可以一次性发送。

b:当文件内容比较大的时候,则需要分多条发送。比如文件有100k,我们发送的最小数据段为1k,则可以分为100段来发送,每一段都有一个长度,还有总长度,以及md5和总的md5,还要包括这个是第几段即需要sequence id。服务端每次收到数据都要根据总长度判断是否已经接受完毕。每次如果接受到连续的段(比如sequence id为0,1,2)则存到临时文件中,假设这时候服务挂掉了,重启服务之后可以继续断点续传。


最初发表于网易博客,现转移至csdn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值