高性能
📌 CDN
内容分发网络,这里的内容主要指静态资源。
CDN的作用就是将静态资源分发至多个不同地方以实现就近访问,加快访问,减轻服务器负担;类似京东就近仓库发货。
全站加速,区别于CDN,既可加速静态资源又可加速动态资源,不同云服务商叫法不同。
📌 负载均衡
🚁 服务端负载均衡
包括软件、硬件。
硬件负载均衡,通过专门的硬件设备(比如F5、A10、Array)实现,好用但贵。
软件负载均衡通过软件实现,在工作中,通常使用Nginx做七层负载均衡,LVS(Linux Virtual Server)做四层负载均衡。
🔧 七层负载均衡
OSI模型第七层,也就是应用层,主要协议是HTTP。
核心是报文内容层面的负载均衡,执行第七层负载均衡的设备通常被称为反向代理服务器。
常用的方案:DNS解析和反向代理。
DNS解析
用户请求域名的时候,DNS服务器采用轮询算法返回IP地址,实现轮询版负载均衡。
反向代理
Nginx,常用的反向代理服务器,隐藏了真实服务器IP地址。
客户端发送请求,由反向代理服务器去选择目标服务器,获取数据后再返回给客户端。
📌 消息队列
作用
- 异步处理,如购票成功后发短信
- 限流
- 降低系统耦合
- 实现分布式事务
- 顺序保证
- 延时/定时处理
- 即时通讯
- 数据流处理
带来的问题
- 系统可用性降低
- 系统复杂性提高
- 一致性问题
🚁 如何测试消息队列
通过JMeter AMQP Publisher组件(需要安装插件),持续往测试环境队列发消息
1.看消息能否随着时间逐步被处理
2.检查资源:内存和磁盘空间是否居高不下(high watermark默认是40%)
Tip
rabbitmq-熔断隔离: 系统间通信时,防止故障传播,导致系统崩溃。
具体过程: 监控某个服务的请求失败率,达到一定阈值,触发熔断,阻断故障请求。属于处理消息堆积的一种方式。
🚁 Kafka对比传统消息队列(如RabbitMQ)
场景 | Kafka | RabbitMQ |
---|---|---|
典型场景 | 日志采集、实时数据分析、事件溯源 | 任务队列、微服务通信、事务性消息 |
优势场景 | 高吞吐量、数据持久化、流式计算集成 | 低延迟、复杂路由、企业级消息传递 |
劣势场景 | 低延迟敏感场景(如高频交易) | 海量数据堆积、需长期存储的场景 |
参考资料: