开源框架或组件
消息队列
Kafka、RabbitMQ、ActiveMQ等。
- Kafka:高吞吐量、分布式消息队列。
- RabbitMQ:支持多种协议、灵活的消息队列。
- ActiveMQ:支持JMS、持久化的消息队列。
BRPC
百度开源的RPC框架。
- 特点:高性能、易用、支持多种协议。
- 适用场景:分布式系统、微服务架构。
Redis
内存数据库,支持多种数据结构。
- 特点:高性能、支持持久化、丰富的数据结构。
- 适用场景:缓存、消息队列、排行榜。
Nginx
高性能HTTP服务器和反向代理服务器。
- 特点:高并发、低内存占用、模块化设计。
- 适用场景:Web服务器、反向代理、负载均衡。
Zookeeper
分布式协调服务。
- 特点:高可用、强一致性、支持临时节点。
- 适用场景:分布式锁、配置管理、服务发现。
应用场景
如何构建一个秒杀系统
高并发处理、限流、缓存、异步处理等。
- 高并发处理:使用负载均衡、分布式缓存、数据库分库分表。
- 限流:使用令牌桶、漏桶算法,防止系统过载。
- 缓存:使用Redis缓存热点数据,减轻数据库压力。
- 异步处理:使用消息队列、异步任务,减少请求响应时间。
如何构建一个大型高并发的应用(如网站)
负载均衡、分布式缓存、数据库分库分表、异步处理等。
- 负载均衡:使用Nginx、HAProxy分发请求,均衡服务器负载。
- 分布式缓存:使用Redis缓存热点数据,提高访问速度。
- 数据库分库分表:将数据分散到多个数据库、表中,提高性能。
- 异步处理:使用消息队列、异步任务,减少请求响应时间。
内存分配器了解下,如tcmalloc, jemalloc
tcmalloc:Google开源的高效内存分配器。
- 特点:高效、低延迟、减少内存碎片。
- 适用场景:高性能应用、服务器程序。
- 优点:
- 高效的内存分配和释放。
- 减少内存碎片。
- 低延迟,适用于高并发场景。
- 缺点:
- 在某些情况下,内存使用量较大。
- 不适用于所有应用场景。
jemalloc:Facebook开源的高效内存分配器。
- 特点:高效、低延迟、减少内存碎片。
- 适用场景:高性能应用、服务器程序。
- 优点:
- 更好的内存使用效率。
- 减少内存碎片。
- 适用于多线程环境。
- 缺点:
- 复杂性较高,配置和调优需要更多经验。
- 在某些情况下,性能可能不如tcmalloc。
区别:
- 内存使用效率:jemalloc在内存使用效率上通常优于tcmalloc,特别是在多线程环境下。
- 延迟:tcmalloc在低延迟方面表现更好,适用于高并发场景。
- 碎片管理:两者都能有效减少内存碎片,但实现方式不同,具体效果视应用场景而定。
- 配置和调优:jemalloc的配置和调优更复杂,需要更多经验,而tcmalloc相对简单。