首页   注册   登录

luw2007

V2EX 第 69558 号会员,加入于 2014-08-01 14:36:23 +08:00
面试题:设计一个活跃用户过滤器
程序员  •  luw2007  •  83 天前  •  最后回复来自 luw2007
6
Python 2018 rpc 最佳实践是什么
Python  •  luw2007  •  2018-06-02 19:36:24 PM  •  最后回复来自 luw2007
4
微信 oauth2 第三方登陆工单
全球工单系统  •  luw2007  •  2017-04-27 23:10:10 PM  •  最后回复来自 luw2007
1
macbook 电池维护终极大法
Apple  •  luw2007  •  2016-01-13 20:36:48 PM  •  最后回复来自 luw2007
6
语音计算器
奇思妙想  •  luw2007  •  2016-01-14 13:17:34 PM  •  最后回复来自 814084764
5
通过挖矿的方式整理和分享资源
奇思妙想  •  luw2007  •  2015-07-21 11:36:20 AM
n9c.net 准备做分享站点,大家给起一个中文名, 谢谢
  •  1   
    问与答  •  luw2007  •  2015-07-21 11:27:59 AM  •  最后回复来自 neilwong
    2
    mac 一条命令同步时间 use ntpdate
    macOS  •  luw2007  •  2015-06-01 12:03:59 PM
    没有双拼输入法怎么破
    MacBook Pro  •  luw2007  •  2015-03-22 20:27:41 PM  •  最后回复来自 luw2007
    7
    luw2007 最近回复了
    @lhx2008 ttl 设置短点,比如。 让内存里面维护的少一点对象。
    或者换策略,allkey-lru 呢?
    压缩数据呢?
    每条数据接近 1k 大小,压缩掉 20%看看。
    @Breadykid 大叔一个。
    看业务,按照你需要的业务时间设置超时时间, 比如抢锁多长时间,可以设置成具体需要的时间, 比如 1 分钟或者 5 分钟。
    这只是记录进度,如果需要保存进度信息。还需要存储到 mysql 中。
    问题:布式下的导入进度条获取,限制同一数据表同一时间只能导入一次,需要记录导入进度,解决并发和服务不稳定引发的问题

    解决:
    同一数据表同一时间只能导入一次。使用分布式锁就可以解决。
    服务不稳定,这块只要保证存储稳定就行( redis/mysql )

    领导的 mysql 方案,使用建表的方式来解决分布式锁的方式目前不太建议使用在高并发的后端服务。主要是性能太差。
    同事的 zookeeper 方案,使用 zk 来做分布式锁。这个方案本身没有问题。不过考虑 zk 的部署,业务代码编写并非很容易,建议可以用来扩展思路,尝试实现一个来提高个人技术水平。
    目前常规的做法都是使用 redis 加个锁,然后实时更新锁就行了。


    容错性低的方案一:
    1. 使用 SET NX 设置分布式锁。
    set table_name 0 EX 3600 NX

    table_name 表示表名
    0 表示进度为 0
    3600 表示到期时间。这里的到期时间需要根据业务自行调整,建议大于业务每批次的处理时间。最好等于业务表导入最小间隔。

    2. 如果抢不到锁表示其他业务正在处理导入,当前线程退出或者休眠后重试。
    3. 抢到锁的线程批量处理业务并实时更新进度
    set table_name N EX 3600 XX

    N 数字,表示当前进度

    4. 处理完之后,可以删除当前 key,或者设置到期时间为下次需要运行的时间。

    缺点:
    1. redis 分布式锁的方案虽然简单,但是并不安全。如果存储不稳定,暂时没有特别完善的方案。 关键词:” redis 分布式锁的安全性“

    2. 更新进度,直接按照 table_name 设置,可能出现当前线程卡住很长时间。这段时间中当前的锁过去后,别的线程重新设置锁。然后两个线程同时写一个 key,导致进度出现问题。

    可行性:
    由于没有足够的信息,无法确认方案是否满足业务需求。不过根据你领导的方案可以推断,上面这个方案在设置比较合理的到期时间之后应该问题不大。

    思考题:
    可以从 key 入手,设计一个容错性高的方案。
    82 天前
    回复了 guojam 创建的主题 求职 求求 dalao 看一下简历有什么不足的地方
    大二还早。公司招实习是希望干活的。大二可以被剥削的时间太短。

    在学校参加开源项目,acm。
    大三暑期找短暂实习再找实习工作不迟。
    82 天前
    回复了 npe 创建的主题 问与答 请教一个高并发竞争资源问题
    优惠券不会比 12306 复杂。 优惠券提前生成,乱序放到 redis 的列表里面,或者 MQ 里面。

    redis 列表可以按照用户 hash,这样可以减少一次锁。并且可以拆分到多个 redis 中,增加 qps ( 1w qps 用不到)。
    拿到优惠券之后,就同步记录用户流水,并更新优惠券状态。 如果更新成功再记录流水。

    如果需要同步快速返回,可以将更新优惠券状态改成异步处理,但是到账也是异步。

    如果 qps 达不到要求还要减少 io。可以以 redis 数据为准,则还可以减少用户流水的记录(存在优惠券丢失的情况,更新 redis 成功,写 mysql 失败。需要业务逻辑去补充这类数据)。
    82 天前
    回复了 coxier 创建的主题 分享创造 TinyPNG IDEA 插件释放你的右手
    其实我还想说。为什么不替换成 webp 呢?
    82 天前
    回复了 coxier 创建的主题 分享创造 TinyPNG IDEA 插件释放你的右手
    编译 release 之前加个钩子。 处理图片和其他资源。
    刚毕业没两年经验少吧。用普涨的薪水挽留你只是常规操作。
    留下不涨到币 offer 高,没什么意义。反而导致以后涨薪升职的机会变少。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1404 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 26ms · UTC 17:09 · PVG 01:09 · LAX 10:09 · JFK 13:09
    ♥ Do have faith in what you're doing.