最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

读发布!设计与部署稳定的分布式系统(第2版)笔记06_用户_世界观焦点

来源:博客园


(资料图片)

1.系统的人类用户天生就具备进行创造性破坏的本事

1.1.用户会消耗内存

1.2.用户会做奇怪和随机的事情

1.2.1.fuzzing工具箱、基于属性的测试或模拟测试

1.3.恶意用户总是存在的

1.3.1.灾祸总会发生,坏人肯定存在

1.4.用户会合伙对付你

2.难伺候的用户

2.1.通常就是想挣这些挑剔用户兜里的钱

2.2.提高用户转化率或许能让公司的损益表更好看些,但这确实给系统增加了实现难度

2.3.最好针对这些难伺候的用户积极地进行测试

2.3.1.确定系统开销最大的事务,然后将这些事务的份额增加1~3倍

2.3.2.系统平时承受的平均压力,肯定会小于上述负载测试产生的压力

2.3.3.单单构建系统并处理系统最昂贵的事务这一件事,就会在硬件上多花费10倍的成本

3.不受欢迎的用户

3.1.cookie是一种明智的选择

3.1.1.未加密的cookie数据可能会被恶意顾客操纵

3.1.2.安全性要求cookie不能包含实际数据,否则就必须加密

3.1.3.cookie开始用于小块数据,只能用持久cookie标记用户,或用临时cookie识别会话

3.2.恶意用户

3.2.1.真正有“才华”的黑客

3.2.1.1.高级持久威胁

3.2.2.脚本小子

3.2.2.1.数量庞大而非常危险

4.容量

4.1.是指在给定工作负载下,系统既能保持提供可接受的性能,又能承受得住的最大吞吐量

4.2.不断增长的用户流量最终将超过系统的容量

4.3.裂纹在压力的作用下总是会蔓延得更快

5.堆内存

5.1.放入会话的每个对象都位于内存中,占用着能为其他用户提供服务的宝贵字节

5.1.1.最好尽可能少地保留内存中的会话

5.1.2.对于放入会话的每一份数据,都要考虑它是否可能永远不会再使用

5.1.3.这些数据可能在接下来的30分钟里白白地占用内存,并使系统面临危险

5.2.如果情况非常糟糕,日志系统甚至可能无法记录错误

5.3.如果系统没有创建日志事件的内存,则不会记录任何内容

5.4.存在这种可能,所以除了日志文件抓取之外,应该还需要做外部监控

5.5.弱引用

5.5.1.能够在内存富裕时保存会话内容(也就是在内存中),在内存紧张时自动节约内存

5.5.2.垃圾收集器需要回收内存之前,弱引用都可以持有另一个对象,后者称为前者的有效载荷

5.5.2.1.当该对象的引用只剩下软引用时,则软引用就可以被回收

5.5.2.2.在创建弱引用对象时,可以将大型或昂贵的对象作为其有效载荷

5.5.2.3.垃圾回收对象都是有效载荷,而不是弱引用本身

5.5.3.C#中叫System.WeakReference

5.5.4.Java中叫java.lang.ref.SoftReference

5.5.5.Python中叫weakref

5.5.6.当内存不足时,垃圾收集器可以回收任何弱可达对象

5.5.7.弱引用是应对不断变化的内存环境的有用方式,但也确实增加了复杂性

6.堆外内存和主机外内存

6.1.将内存分配给不同的进程

6.1.1.不要将它放在堆内,即不要放在服务器进程的地址空间内,而是将其移交给其他进程

6.2.Memcached就是使用这种方法的一个很好的工具,它本质上是一个内存中的键-值存储,可以将其放在不同的机器上,也可以将其散布在多台机器上

6.3.Redis是将内存移出进程的另一个流行工具。它是一种快速的“数据结构服务器”,其定位介乎缓存和数据库之间

6.4.在可寻址的内存空间和内存访问延迟之间进行权衡

6.5.存储器层次根据大小和距离排列,寄存器是最快和最接近CPU的,其次是缓存,然后是局部存储器、磁盘、磁带等

6.6.网络变得相当快——访问“别人内存”的速度快于访问本地磁盘的速度

6.6.1.应用程序最好通过远程调用获取一个值,而不是从存储中读取值

6.6.2.局部存储器仍然比远程存储器更快

6.6.3.一对矛盾

7.服务器上的套接字

7.1.查看TCP数据包的格式,就能看到端口号长16位,这表示端口号最大只能到65535

7.2.互联网数字分配机构的建议范围是49152~65535

7.2.1.服务器最多可以打开16383个连接

7.2.2.可以将端口范围扩展为1024~65535

7.2.2.1.最多可以有64511个连接

7.3.虚拟IP地址

7.3.1.操作系统将多个IP地址绑定到同一个网络接口

7.3.2.每个IP地址都有自己的端口号范围

7.3.3.要处理上百万个连接,总共只需要16个IP地址

7.3.3.1.需要很多内核缓冲区

7.4.已经关闭的套接字

7.4.1.在应用程序代码关闭一个套接字后,TCP协议栈会多次改变其终结状态

7.4.2.TIME_WAIT

7.4.2.1.可以调小TIME_WAIT间隔,尽快恢复使用这些端口

7.4.3.bogon是指游荡的数据包

7.4.3.1.互联网上的bogon是一个真实但影响较小的问题

关键词: