摘要: golang中的日志不支持按照天分割,很多开源的日志包都是只支持按照文件大小分割日志,不太利于生产环境中的使用。因此我实现了timewriter,支持: 实现按照天为单位分割日志,可以完美支持golang的log、grpclog、gorm。 旧日志用gz格式压缩。 日志文件名字的前缀默认是进程名。 阅读全文
posted @ 2018-12-28 16:33 bytesmover 阅读(1912) 评论(0) 推荐(1) 编辑
  2024年3月11日
摘要: 1. setnx其实是set key nx,做分布式锁的问题是担心获取到锁的那个线程还没执行del得时候挂了,key会永久存在,可以给key加上expire,其实就是setnx key ex xxx nx 但如何确定expire多大呢?没法确定,所以一般在expire之前做一个续期操作,用独立线程做 阅读全文
posted @ 2024-03-11 16:29 bytesmover 阅读(5) 评论(0) 推荐(0) 编辑
  2024年2月29日
摘要: https://zhuanlan.zhihu.com/p/554812539?utm_id=0 1. 1:1:会有创建和销毁线程的开销 2. 1:N:饿死,或者一个阻塞后面的都不能执行 3. M:N: 1)word stealing: M偷其他M的P队列中的G 2)hand off:M阻塞了,要让出 阅读全文
posted @ 2024-02-29 15:44 bytesmover 阅读(4) 评论(0) 推荐(0) 编辑
  2024年2月20日
摘要: 固定时间窗 比如1秒钟限制访问100次,则用1秒作为时间窗,用个计数器,下个时间窗到了就把计数器置0;实现方式可以用一个线程定时1秒钟刷一次,但在某些系统中,可能会有很多个qps拦截器,这样会导致线程数很多,所以也可以改成记录上次时间窗的时间点,每次计数器+1之前算一下时间窗是否超过1秒了。 滑动窗 阅读全文
posted @ 2024-02-20 20:12 bytesmover 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 今天用C++实现了一个string类,包括构造函数、拷贝构造、赋值构造、流输出、移动构造、重载+号, 发现很多细节都没有考虑到,细节都在注释中,贴在这里作为备忘吧。 1 #include <iostream> 2 #include <cstring> 3 4 using namespace std; 阅读全文
posted @ 2024-02-20 12:36 bytesmover 阅读(1) 评论(0) 推荐(0) 编辑
  2022年3月25日
摘要: 解决跨区数据一致问题,如果数据库不支持同步,则在业务层做双读或者双写,双读和双写的使用场景不同 灌库在线数据库,为了减少在线压力,尽量的把压力转移到离线数据库来(例如hbase支持大批量的scan) 对于读和写的权衡,如果是读多写少,则需要保证读优先,写尽量不要影响读;如果是读少写多,则要尽量避免写 阅读全文
posted @ 2022-03-25 11:47 bytesmover 阅读(83) 评论(0) 推荐(0) 编辑
  2022年3月17日
摘要: 页结构 B+树结构 参考 https://www.cnblogs.com/chanmufeng/p/15992676.html https://www.cnblogs.com/chanmufeng/p/16012145.html 阅读全文
posted @ 2022-03-17 12:11 bytesmover 阅读(24) 评论(0) 推荐(0) 编辑
  2022年3月16日
摘要: 概述 异地多活,往往意味着夸机房读写延迟的增加,也就增加了读写失败的可能性,最终导致数据的延迟更长,同时,这种场景下也会影响在线系统的性能和时延。本文从数据低延迟、开发复杂度上考虑,总结了两种处理方式,分别是双写和双读,从而保证数据的最终一致性。对于异地多活的业务场景,往往也不需要保证强一致性,允许 阅读全文
posted @ 2022-03-16 15:02 bytesmover 阅读(1376) 评论(1) 推荐(0) 编辑
  2022年3月11日
摘要: 博弈的三方 广告主:希望每一次的展示或者点击付出最低的代价 平台方:充当了中间方,用流量来换广告,同时也要对广告做审核,避免一些不合法律道德的广告进入 流量方:一般是具体的媒体,例如抖音、百度搜索,希望自己的流量能带来最大的收益,同时也要把控各个广告展示的频率和场合 竞价 对于某个特定的媒体的某个广 阅读全文
posted @ 2022-03-11 21:51 bytesmover 阅读(475) 评论(0) 推荐(0) 编辑
  2022年1月9日
摘要: C++高并发场景下读多写少的优化方案 概述 一谈到高并发的优化方案,往往能想到模块水平拆分、数据库读写分离、分库分表,加缓存、加mq等,这些都是从系统架构上解决。单模块作为系统的组成单元,其性能好坏也能很大的影响整体性能,本文从单模块下读多写少的场景出发,探讨其解决方案,以其更好的实现高并发。 不同 阅读全文
posted @ 2022-01-09 02:59 bytesmover 阅读(1775) 评论(11) 推荐(2) 编辑
  2021年12月27日
摘要: 背景 广告系统中,算法模型预估需要根据广告的实时转化统计结果,才能做出更精准的预估;同时,支持多维度聚合查询(例如按照广告各个不同层级维度,按照时间不同粒度的维度),并跨大区合并。一开始的版本是基于mysql,但由于统计数据更新太频繁,异步定期从mysql捞统计结果,导致mysql经常出现活跃连接数 阅读全文
posted @ 2021-12-27 21:11 bytesmover 阅读(1717) 评论(0) 推荐(0) 编辑