方法论
心态
-
忌降维打击
-
忌脱离业务
-
忌不计成本
-
忌重复劳动
-
忌权威效应
估算方法
流量评估
这个接口每天有 10 亿次请求,假如每次请求的大小有 20KB(很容易达到),那么一天的流量就有 18TB 之巨。假如高峰请求 6w/s,我们部署了 10 台机器,那么每个 JVM 的流量就可以达到 120MB/s,这个速度算是比较快的了。
总体与单点
-
每天请求量*每次请求、响应大小 = 总流量
-
请求量峰值(根据业务情况按平均值的X倍)*每次请求、响应大小/机器、实例数 = 单点最大流量
存储评估
计算能力评估
内存评估
性能调优
-
系统容量(Capacity)
-
吞吐量(Throughput)
-
延迟(Latency)
优化层次
-
数据库优化
-
SQL 优化
-
数据库本身
-
分库分表
-
-
集群最优
- 水平扩容
-
硬件升级
- 对节点的硬件配置进行升级
-
代码优化
-
收集一些profile数据
-
服务治理
-
代码流程优化
-
-
并行优化
- 并行处理
-
JVM 优化
- 优化效果有限
-
操作系统优化
-
HugePage、Luma、“CPU 亲和性”
-
文件句柄的调整、网络参数的修改
-
技术架构规划方法论探索
原理性认识
架构
一个系统的基本组织,包括系统组件、组件之间和环境之间的相互关系,以及管理设计和演进的原则
框架
一个基本概念上的结构,用于去解决或处理复杂的问题,例如蓝图
技术架构(承接非功能特性)
-
技术视角,有具体化的实体支撑
-
架构元素之间有固定关系
针对性
针对非功能特性的要求
-
高可用架构主要应对故障引发的变化
-
分布式架构主要应对高负载,兼顾高可用
技术架构规划方法
步骤
1. 识别和理解业务的重要非功能特性
- 理解业务
行业、趋势、特点,识别业务关键特性
-
识别业务的关键指标(业务度量),尽可能量化
-
理解应用与数据的现状(也是约束条件)
2. 预测非功能特性的变化(多角度指标相互印证)
-
业务量变化预测
-
增长率预测
-
发展空间预测
-
考虑突发因素
-
3. 参考业界架构实践,确定架构和演进
-
参考当前技术架构
-
对标同类架构的非功能特性处理能力
-
综合考虑技术演进的影响