通常我们说负载, 指的大部分都是机器的负载. 但是对于系统的负载, 可能不仅仅包含机器的负载.
负载根据系统的不同主要维度也不太一样, 比如web服务器每秒请求次数、数据库的写入比率、聊天室同时活动的用户.
比如Twitter发推文, 每个用户关注者分布情况, 就是关键的负载参数.
负载增加后我们重点关注的是性能问题了. 根据系统的不同关注的角度也不一样.
比如在大数据系统中我们更关注吞吐量(每秒钟处理数或处理总时间), 而类似电子商务等在线系统通常更看重服务的响应时间.
即使所有请求相同, 也会因为网络抖动、进程调度、网络数据包丢失和GC、磁盘IO、刷脏页等因素会影响到响应时间.
通常我们会采用百分位数来进行系统性能评估, 搜集到响应信息将其从响应最快到最慢排序
约定可接受响应时长比如 200ms, 如果我们响应排序里面有百分之八十都在200ms以内, 那我们当前系统指标为 p80.
百分位数通常用于描述、定义服务质量目标(SLO)和服务质量协议(SLA)
通常我们发现随着时间、业务、人员的变化, 项目问题越来越大, 导致目前 “重构” 这个词成了公司的热词, 如何从一开始就避免重构的死循环呢.
一个业务系统必须完成预期多种需求, 包括功能性需求(大部分为产品需求) 和 一些非功能性需求.
即系统需要实现什么, 各种存储、检索、数据处理等.
常规如安全性、可靠性、合规性、可伸缩性、兼容性、可维护性等
通过上面罗列的一些隐性需求, 下次面对产品质疑排期的时候, 希望你可以硬起来.
《数据密集型应用系统设计》