伪共享(false sharing)

并发编程无声的性能杀手

数据在内存中以 page 为单位存在;在cache 里以 cache line 为单位

伪共享:缓存系统以 cache line为单位存储,多线程修改互相独立的变量时,如果这些变量共享同一个cache line,就会无意中影响彼此的性能

扫码登陆

通过二维码,用可信任设备(如自己手机)控制不可信任设备上的登录行为

  • 更方便

    省去不便手动输入的设备(如电视)上输入的环节

  • 更安全

    避免在安全等级低的设备和环境(公共电脑、Web页面)输入密码

网站架构的伸缩性设计

1.1 不同功能物理分离实现伸缩

纵向分离

业务流程不同部分分离部署,实现伸缩

横向分离

不同业务模块分离部署,实现伸缩

1.2 单一功通过集群规模实现伸缩

应用服务器集群性和数据服务器集群伸缩,对数据状态管理的不同,技术实现有很大区别

一头牛拉不动车的时候,不要去寻找一头更强壮的牛,而是用两头牛来拉车

当我们在讨论架构时,该用什么姿势?

架构的本质

任何系统,自然情况下,都是从有序到无序

热力学第二定律,自然界一切自发过程都有方向性,孤立系统由有序变为无序,即它的熵不断增加,最终寂灭

但生物可以通过和外界交互,主动进行新陈代谢,制造 “负熵” 来保证自身有序,继续生存

同样,软件随着功能增多,调用量增长,逐渐碎片化,越来越无序,最终无法维护和扩展,所以系统在一段时间的野蛮生长后,也需要及时干预,避免越来越无序

架构的本质就是对系统进行有序化重构,不断减少系统的 “熵”,使系统不断进化

架构是如何实现无序到有序的? 基本的手段就是分和合,先把系统打散,然后重新组合

《深入理解计算机系统》

万丈高楼平地起,计算机系统就像程序员金字塔的地基。理解了计算机系统的构造原理,在写程序的道路上才能越走越远

道理很早就懂,一直没下定决心好好钻研,或许觉得日常工作中根本用不到这些,又或许是每次拿起书看到那些复杂的底层架构,看到存储器,寄存器,CPU,总线等等这些概念就头大

分布式数据库

业务场景变化带来业务量激增导致高性能需求

小额支付的流行:

以前超市十几块钱东西刷卡,收银员白眼

现在大街小巷的商户摊贩都支持扫码支付,没人跟你叽歪