专栏首页三丰SanFeng无锁编程(七) - 实战

无锁编程(七) - 实战

数据与进程对等的处理

场景:某服务需要支持海量用户,在一台物理机器上运行了多个进程/线程。对于数据应该如何处理以保证安全快速的访问数据呢?

解决方案:“分”

分号段

分进程

分端口

分库分表

单一生产者与单一消费者

场景:

网络接入进程与逻辑处理进程通过共享内存通讯。我们要如何进行设计?

通常的实现:读写加锁

示例:无锁内存队列的实现

append_data(srcbuf, buflen)
int usedSize = (m_head->size + m_head->endPos – m_head->beginPos) % m_head->size;
int leftSize = m_head->size – usedSize;
if (leftSize < buflen) return -1;
_copy_to_queue();
Int newpos = ….;
m_head->endPos = newpos;
take_data(dstbuf, buflen)
if (m_head->beginPos == m_head->endPos) return -1;
_copy_from_queue();
_do_copy_data();
int newpos = ….;
m_head->beginPos = newpos;

进程运行中重新加载配置(双缓存)

场景:

1、 进程需要可以动态加载配置,我们需要怎么做?

2、 进一步,如果配置非常复杂,各个配置具有一定的依赖性,配置检查错误的话加载配置将会失败。我们如何设计才能安全、动态、无锁的加载配置?

通常的实现:

重启进程

发送信号

创建管理端口

示例1:直接访问共享内存

示例2:双配置缓冲区的实现

代码:

cfg_t* get_cur_cfg
return cfg_list + cur_idx;
load_cfg
int another = 1 – cur_idx;
_load_cfg(cfg_list + another);
cur_idx = another;

版权声明:本文为博主原创文章,未经博主允许不得转载。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 分布式系统组件之配置中心

    配置中心概述: 在分布式系统中,配置中心是一个基本的组件,它为散布在不同机器上的服务提供配置文件的通知,读取,更新服务,一般对配置中心的设计要点如下: 1) 配...

    三丰SanFeng
  • 无锁编程(六) - seqlock(顺序锁)

    seqlock(顺序锁) 用于能够区分读与写的场合,并且是读操作很多、写操作很少,写操作的优先权大于读操作。 seqlock的实现思路是,用一个递增的整型数表...

    三丰SanFeng
  • zookeeper监控告警

    一、ZooKeeper简介 ZooKeeper作为分布式系统中重要的组件,目前在业界使用越来越广泛,ZooKeeper的使用场景非常多,以下是几种典型的应用场景...

    三丰SanFeng
  • Android平台相机接口的应用

    第一部分、前述: Android作为Google移动互联网战略的重要组成部分,将进一步推进“随时随地为每个人提供信息”这一企业目标的实现。Google的目标是让...

    庞小明
  • 一款脑洞大开的表格可视化神器

    今天跟大家介绍一款任坤大神写的新包——formattable。 这个包的功能很简单,但是却很具创意性,它颠覆了R语言data.frame数据表的呈现方式,允许在...

    数据小磨坊
  • 移动OA实施满意度:整体表现尚可 培训仍需加强

    昨天我们分析了移动OA售前满意度,今天我们来分析一下移动OA实施服务的满意度情况,针对实施服务满意度的评价,企业用户目前的关注点主要包括“整体实施计划的专业性、...

    人称T客
  • 干货丨windows内核www漏洞利用手法(修改版)

    前言:Gcow安全团队复眼小组致力于对漏洞的挖掘和研究,并且对于二进制和web漏洞方面都有所研究,有独立挖掘漏洞和独立复现漏洞的能力,本篇文章由Gcow安全团队...

    用户1631416
  • 在MV上建立触发器实验

    用户1148526
  • 基于通用jar、动态配置、组件编排的会员任务中心系统设计

    为更好帮助商家的会员快速成长,保持用户活性,完善用户的成长体系,有赞用户中心-会员成长团队基于现有的业务场景,设计了一套较完备任务中心系统。同时也有很多通用技术...

    有赞coder
  • 软件测试进阶之2——沉下心来思考

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    MyJie

扫码关注云+社区

领取腾讯云代金券