第 89 期:垃圾人定律
@Author : Lewis Tian (taseikyo@gmail.com)
@Link : github.com/taseikyo
@Range : 2024-11-17 - 2024-11-23
Weekly #89
本文总字数 4195 个,阅读时长约: 6 分 3 秒,统计数据来自:算筹字数统计。

*Photo by Yusuf Onuk on Unsplash
Table of Contents
algorithm 🔝
review 🔝
从 2010 年 10 月到 2011 年 12 月,Instagram 在仅仅一年的时间内从 0 到 1400 万用户,期间仅有 3 位工程师。
他们通过遵循3个关键原则并拥有可靠的技术堆栈来做到这一点。
保持事情非常简单
不要重新发明轮子
尽可能使用经过验证的技术
Keep things very simple.
Don’t re-invent the wheel.
Use proven, solid technologies when possible.
Instagram 早期是租用 AWS 的 EC2 服务器。
1、前端
Instagram 2010 发布,,而 Swift 于 2014 才发布,所以可以假设 Instagram 是使用 Objective-C 和 Uikit 等其他内容组合编写的。

2、负载均衡
Instagram 使用了亚马逊的弹性负载平衡器,他们有 3 个 NGINX 实例。

3、后端
Instagram 的应用程序服务器使用了 Django,它是用 Python 编写的,将 Gunicorn 作为 WSGI 服务器。
WSGI(Web Server Gateway Interface)将请求从Web服务器转发到Web应用程序。
Instagram 使用 Fabric 在许多实例上同时同时运行命令。

4、数据库
Postgress
5、图片存储
Amazon S3 & Cloudfront
6、缓存
redis & memcached
redis 用来存储 图片 ID 到用户 ID 的映射,memcached 用来缓存数据库读到的数据

7、push 推送 & 异步任务
push 通知是使用 PYAPN 发送的。PYAPNS 是一种开源的,通用的 Apple Push Notification Service(APNS)提供商。
异步任务使用 Gearman, Gearman 用于多个异步任务,例如向所有用户的关注者推出活动(如发布的新照片)

8、监控报警
Instagram 使用 Sentry(开源 Django 应用程序)实时监视 Python 错误
Munin 用于绘制整个系统范围的指标并提醒异常。Instagram 有一堆自定义的 Munin 插件来跟踪应用程序级别的指标,例如每秒发布的照片
pingdom 用于外部服务监控
Pagerduty 用于处理事件和通知
9、总体架构

2. 分片不等于分布式(英文)
分片是一种在几个独立数据库实例上分配与访问数据的技术。该方法通过将原始数据分成多片来利用水平可扩展性,然后将其分布在多个数据库实例上。

1、分片数据库
每个分片解决方案都一个关键组件,该组件可能有不同名字: coordinator, router, or director

它将客户端请求映射到特定的分片,然后将其映射到相应的数据库实例。
如果客户端要将新记录插入到购物车中,则请求首先转到 coordinator 。 coordinator 将记录的主要键映射到其中一个分片,然后将请求转发到负责该分片的数据库实例:

2、分布式数据库
与分片数据库解决方案一样,分布式数据库也采用类似的分片技术来分配与访问数据,这些数据和负载在一组数据库节点上分发。但是,与分片解决方案不同,分布式数据库不依赖于协调器组件。
分布式数据库建立在没有共享的体系结构上,该架构没有协调员:

集群中的所有节点彼此都知道,通过直接通信,每个节点可以将客户端请求路由到适当的分片所有者。此外,他们可以执行和协调多节点事务。当扩展到更多节点时,群集会自动重新平衡并分裂分片。节点维护数据的冗余副本(基于配置的复制因子),即使某些节点失败,也可以继续操作而无需停机。
tip 🔝
使用 stat / | awk '/Birth: /{print $2 " " substr($3,1,5)}'
命令即可查看安装 Linux 系统的确切日期:
taseikyo at Polaris in /mnt/d/Github/arts (w89)
$ stat / | awk '/Birth: /{print $2 " " substr($3,1,5)}'
2024-12-07 19:30
如果想简单点,直接用 stat /
命令并查看“Birth”行:
taseikyo at Polaris in /mnt/d/Github/arts (w89●●)
$ stat /
File: /
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 8,32 Inode: 2 Links: 22
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2025-03-22 12:52:45.883003957 +0800
Modify: 2025-03-22 12:52:44.703003950 +0800
Change: 2025-03-22 12:52:44.703003950 +0800
Birth: 2024-12-07 19:30:24.000000000 +0800
另一个方法是 fsname=$(df / | tail -1 | cut -f1 -d' ') && tune2fs -l $fsname | grep 'created'
,但是需要先切换为 root 用户:
root@Polaris:/mnt/d/Github/arts# fsname=$(df / | tail -1 | cut -f1 -d' ') && tune2fs -l $fsname | grep 'created'
Filesystem created: Sat Dec 7 19:30:24 2024
下面是各种发行版自己的命令:
Debian / Ubuntu
sudo head -n1 /var/log/installer/syslog
Fedora / Rocky Linux / AlmaLinux
sudo rpm -qi basesystem | grep -i "install date"
Arch Linux
head -n1 /var/log/pacman.log
1、问题描述
Windows 下的 WSL(Ubuntu)忘记了 root 密码,无法使用管理员权限。
2、解决方法
关闭 Ubuntu 窗口。
打开 Windows 的 Powershell 或 cmd, 以 root 默认登陆 WSL。
wsl -u root
修改密码
passwd
输入密码,确认密码,修改成功。
share 🔝
1. 垃圾人定律
毕业于宾夕法尼亚州大学心理学专业和耶鲁大学经济学专业的大卫·波莱在《垃圾车法则》一书中,把进入病态的垃圾情绪称为“垃圾车定律”,也叫“垃圾人定律”,意思是有的严重不良情绪的人就像一台“垃圾车”,他们到处跑来跑去,身上充满了负面情绪、垃圾情绪。
垃圾人定律形容存在很多负面垃圾情绪缠身的人,当他们身上的负能量不断堆积,就需要找个地方倾倒,有时候被人刚好碰上了,垃圾就往人身上丢。
“垃圾人”通常有4个表现:一点小事火冒三丈,控制不住脾气;喜欢计较小事,纠结无关紧要的细节,进而找茬生事;看什么都不顺眼,很容易被某些话语、现象激怒;对很多人都感到不满,一言不合就翻脸。
大卫·波莱通过自己的经历和故事,告诉人们应该避让“垃圾车”,避免他向你倾倒垃圾。他给出的办法比较好理解和操作。
他首先提到的是“惹不起,躲得起”,不值得与这样的人去争斗,自身表现“绅士”一些。他的表述是:“与垃圾车擦身而过,是幸福和成功的钥匙。”他提出:自身要少发牢骚,“在指责抱怨之前,扪心自问:发了牢骚能有什么益处?会改善我现在的境况吗?能让自己变得好受点儿吗?”要知道:喋喋不休的抱怨只会讨来别人的厌烦,使自己所处的环境更为不利。
在做到这些的基础上,如果能帮助别人停止倾倒垃圾,自然就更好了。想要做到这一点,很不容易,那就需要善于“寻找并专注于甚至放大他人的优点,传递正面的力量”。如有机会,等待并观察对方,待他心情良好时,尝试沟通(这一点主要适用于生活中难以规避的那些人)比如,你的生活、工作伙伴等等。即便你不喜欢那个人,但你仍须更多地了解他,只有这样,才能帮助他减少对你的情绪干扰。不过,他提到,也要清醒地认识到:生活中永远会有层出不穷的垃圾车。“每个人,在某个时刻都可能会成为垃圾车,这就是生活。”
在现实工作和生活中,每个人每时每刻都会有积极的或消极的情绪体验,有许多事儿可能会左右心情变化,情绪是人对客观事物是否符合自身需要与愿望的体验,是人的需要得到满足与否的反映。谁能真正做自己情绪的主人,谁就有更强的社会适应能力,也更容易掌握成功和幸福的机会。每个人都应该培养积极的人生态度,建立乐观的情绪,提升自我功能,去感受生活的美好。
最后更新于
这有帮助吗?