第 89 期:垃圾人定律

@Author : Lewis Tian (taseikyo@gmail.com)

@Link : github.com/taseikyo

@Range : 2024-11-17 - 2024-11-23

Weekly #89

readme | previous | next

本文总字数 4195 个,阅读时长约: 6 分 3 秒,统计数据来自:算筹字数统计

*Photo by Yusuf Onuk on Unsplash

Table of Contents

  • review

    • Instagram 的早期架构(英文)

    • 分片不等于分布式(英文)

  • tip

    • 如何查看 Linux 系统的安装时间(英文)

    • WSL 忘记 root 密码(Ubuntu)

  • share

    • 垃圾人定律

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、总体架构

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

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 🔝

毕业于宾夕法尼亚州大学心理学专业和耶鲁大学经济学专业的大卫·波莱在《垃圾车法则》一书中,把进入病态的垃圾情绪称为“垃圾车定律”,也叫“垃圾人定律”,意思是有的严重不良情绪的人就像一台“垃圾车”,他们到处跑来跑去,身上充满了负面情绪、垃圾情绪。

垃圾人定律形容存在很多负面垃圾情绪缠身的人,当他们身上的负能量不断堆积,就需要找个地方倾倒,有时候被人刚好碰上了,垃圾就往人身上丢。

“垃圾人”通常有4个表现:一点小事火冒三丈,控制不住脾气;喜欢计较小事,纠结无关紧要的细节,进而找茬生事;看什么都不顺眼,很容易被某些话语、现象激怒;对很多人都感到不满,一言不合就翻脸。

大卫·波莱通过自己的经历和故事,告诉人们应该避让“垃圾车”,避免他向你倾倒垃圾。他给出的办法比较好理解和操作。

他首先提到的是“惹不起,躲得起”,不值得与这样的人去争斗,自身表现“绅士”一些。他的表述是:“与垃圾车擦身而过,是幸福和成功的钥匙。”他提出:自身要少发牢骚,“在指责抱怨之前,扪心自问:发了牢骚能有什么益处?会改善我现在的境况吗?能让自己变得好受点儿吗?”要知道:喋喋不休的抱怨只会讨来别人的厌烦,使自己所处的环境更为不利。

在做到这些的基础上,如果能帮助别人停止倾倒垃圾,自然就更好了。想要做到这一点,很不容易,那就需要善于“寻找并专注于甚至放大他人的优点,传递正面的力量”。如有机会,等待并观察对方,待他心情良好时,尝试沟通(这一点主要适用于生活中难以规避的那些人)比如,你的生活、工作伙伴等等。即便你不喜欢那个人,但你仍须更多地了解他,只有这样,才能帮助他减少对你的情绪干扰。不过,他提到,也要清醒地认识到:生活中永远会有层出不穷的垃圾车。“每个人,在某个时刻都可能会成为垃圾车,这就是生活。”

在现实工作和生活中,每个人每时每刻都会有积极的或消极的情绪体验,有许多事儿可能会左右心情变化,情绪是人对客观事物是否符合自身需要与愿望的体验,是人的需要得到满足与否的反映。谁能真正做自己情绪的主人,谁就有更强的社会适应能力,也更容易掌握成功和幸福的机会。每个人都应该培养积极的人生态度,建立乐观的情绪,提升自我功能,去感受生活的美好。

readme | previous | next

最后更新于

这有帮助吗?