分类: 日常

51 篇文章

Docker 容器应用构建 deb 包
背景 我们的应用发布都是以镜像为基础,git打tag触发cicd,发布对应version的镜像。现在有个应用需要部署到客户内网中,如果以导出镜像的形式,再给客户部署,是比较繁琐的。并且无法做一些额外的工作,例如安装前的环境检测,卸载时删除镜像,以及更新等。当然这些都可以通过脚本实现,但不够优雅。而同事之前做过以linux安装包的形式发布容器应用,这…
Kafka 并发消费单个 partition
背景 kafka可以通过多个partition实现并发,但是针对单个partition,必须顺序提交。假如消息发送顺序为1,2,3,如果先提交3,会导致1,2被提交。所以不能并发执行后立即提交。 解决思路 记录接收消息的顺序到listA,然后并发执行,执行成功的消息,记录到setB。起个goroutine定时提交,顺序遍历listA,依次判断该消息…
玩玩NAS、软路由,搭建家庭影音系统
背景 我平时爱看一些高清电影,4k、HDR之类的,还有很多国内视频软件没有的电影。我媳妇也喜欢看剧,平时做饭的时候,都会用平板播放电视剧。所以我家对影音这块是有需求的。 之前觉得nas太重了,还调研过个人云存储:联想NAS A1调研,由于外网访问速度太低,最终没有入手。现在看来还好没有入手,那玩意没有docker,可玩性太低,特别是对于影音系统,需…
Golang 项目启动时维护数据库变更
前言 数据库变更管理是软件发布必不可少的环节,理想状态是只需发布一个镜像,就能更新应用和数据库。我们项目使用gorm来操作数据库,gorm是具有数据库迁移功能的,但是没有SQL脚本直观。另外我们的应用是同库多服务的微服务,还有些服务存在多个实例的情况,这就需要考虑数据竞争问题了。经过调研,最终选择了Github 10k star 的golang-m…
跳表:为什么Redis一定要用跳表来实现有序集合?
前言 时间复杂度O(logn)的二分查找很高效,但是依赖数组随机访问的特性,如果是链表,如何做到O(logn)? 跳表 原始链表查找时,需要遍历链表,时间复杂度就是O(n),光靠原始链表是不行的。 我们可以增加辅助链表,达到索引的作用,使用起来类似二叉搜索树。 查找时,从上往下,一层一层的查找,类似二叉搜索树。索引层可以继续增加,效率会得到提升。 …
打破信息茧房
前言 ​ 算法推荐,即利用算法和大数据,对用户进行画像以实现信息的个性化精准推送,目前在购物、社交、短视频、新闻分发等领域均已广泛实践。   “信息茧房”这一概念,最初是在桑斯坦的《信息乌托邦——众人如何生产知识》一书中提出的,意指在信息传播中,因公众自身的信息需求并非全方位的,公众只注意自己选择的和使自己愉悦的领域,久而久之,会将自身像蚕茧一般桎…
Deepin使用Wallpaper Engine的壁纸
前言 Wallpaper Engine大家都知道吧,动态壁纸界的扛把子,壁纸质量高,种类多,总有一款是你喜欢的。官方支持Windows、Mac,半年前适配了移动端,但是Linux却一直不支持,官方的意思是目前不打算适配Linux,原因如下: Linux的用户少,查看 Steam 硬件调查,会发现只有不到 1% 的 Steam 用户使用 Linux。…
服务器cpu高导致ssh无法连接
正文 近期ssh连不上服务器,找服务器厂商客服得知是cpu高导致的,但是没法看到进程信息,不清楚是哪个进程导致的。 分析了下,服务器上的应用都是docker部署的,而最近部署了监控服务赫兹跳动,就出现这个问题了。于是对该容器进行cpu资源限制,看看能否解决。 服务器是4核心的,通过--cpus 1限制监控服务容器最多使用“一核心”,也就是100%c…
A/B测试vs灰度测试vs蓝绿部署
A/B测试 简单来说,A/B测试是一种比较两个版本的测试,以确定哪个版本的性能更好。 在A/B测试中,部分用户会接收到“版本A”,其他用户则会接收“版本B”。 这是一个可控的过程。为了进行实验,用户组被分成两组。“A组”通常被称为“对照组”,继续接收现有的产品版本。而“B组”通常被称为“实验组”,根据待测量指标,收到不同的实验数据。 最后,比较两组…