背景 kafka可以通过多个partition实现并发,但是针对单个partition,必须顺序提交。假如消息发送顺序为1,2,3,如果先提交3,会导致1,2被提交。所以不能并发执行后立即提交。 解决思路 记录接收消息的顺序到listA,然后并发执行,执行成功的消息,记录到setB。起个goroutine定时提交,顺序遍历listA,依次判断该消息…
背景 我平时爱看一些高清电影,4k、HDR之类的,还有很多国内视频软件没有的电影。我媳妇也喜欢看剧,平时做饭的时候,都会用平板播放电视剧。所以我家对影音这块是有需求的。 之前觉得nas太重了,还调研过个人云存储:联想NAS A1调研,由于外网访问速度太低,最终没有入手。现在看来还好没有入手,那玩意没有docker,可玩性太低,特别是对于影音系统,需…
前言 数据库变更管理是软件发布必不可少的环节,理想状态是只需发布一个镜像,就能更新应用和数据库。我们项目使用gorm来操作数据库,gorm是具有数据库迁移功能的,但是没有SQL脚本直观。另外我们的应用是同库多服务的微服务,还有些服务存在多个实例的情况,这就需要考虑数据竞争问题了。经过调研,最终选择了Github 10k star 的golang-m…
前言 时间复杂度O(logn)的二分查找很高效,但是依赖数组随机访问的特性,如果是链表,如何做到O(logn)? 跳表 原始链表查找时,需要遍历链表,时间复杂度就是O(n),光靠原始链表是不行的。 我们可以增加辅助链表,达到索引的作用,使用起来类似二叉搜索树。 查找时,从上往下,一层一层的查找,类似二叉搜索树。索引层可以继续增加,效率会得到提升。 …
分布式系统的三大指标,Eric Brewer 说,这三个指标不可能同时做到。这个结论就叫做 CAP 定理。 Partition tolerance 分区容错性,多数分布式系统都分布在多个子网络,每个子网络就是一个区。分区容错的意思是,允许区间通信失败,也就是节点之间通信失败。强调节点的独立性。 分布式系统中,网络异常是很难避免的,因此可以认为 CA…
Http 1.0 存在的问题 无法复用链接:每个请求都需要建立TCP链接。 对头阻塞:第二个请求必须等第一个请求响应后才能发起。 Http 1.1 特性 默认使用长连接,可配置Keep-alive来控制连接时间 支持请求管道化,客户端可以发送多个请求,而不用等待前一个请求响应。 存在的问题 为了让客户端识别请求对应的响应,服务端响应时,必须按照请求…
前言 算法推荐,即利用算法和大数据,对用户进行画像以实现信息的个性化精准推送,目前在购物、社交、短视频、新闻分发等领域均已广泛实践。 “信息茧房”这一概念,最初是在桑斯坦的《信息乌托邦——众人如何生产知识》一书中提出的,意指在信息传播中,因公众自身的信息需求并非全方位的,公众只注意自己选择的和使自己愉悦的领域,久而久之,会将自身像蚕茧一般桎…
前言 Wallpaper Engine大家都知道吧,动态壁纸界的扛把子,壁纸质量高,种类多,总有一款是你喜欢的。官方支持Windows、Mac,半年前适配了移动端,但是Linux却一直不支持,官方的意思是目前不打算适配Linux,原因如下: Linux的用户少,查看 Steam 硬件调查,会发现只有不到 1% 的 Steam 用户使用 Linux。…
备份脚本 #!/bin/sh echo "---------------------------------------------------------------" echo "备份xxx的数据库,包含mysql、MongoDB" echo "并上传到阿里云oss,bucket: xxx&qu…
正文 近期ssh连不上服务器,找服务器厂商客服得知是cpu高导致的,但是没法看到进程信息,不清楚是哪个进程导致的。 分析了下,服务器上的应用都是docker部署的,而最近部署了监控服务赫兹跳动,就出现这个问题了。于是对该容器进行cpu资源限制,看看能否解决。 服务器是4核心的,通过--cpus 1限制监控服务容器最多使用“一核心”,也就是100%c…