选择服务器时首要判断业务瓶颈:CPU 密集、IO 密集还是网络密集。对于多数 Web/接口型高并发应用,优先考虑多核 CPU、较大内存和高带宽网络。建议在 tianyiidc 上选择具有高速网络(至少 1Gbps 端口或按需更高)、NVMe SSD 的实例,并优先选用支持弹性扩容的计费模式。
在规格上,初期可选 8 核 16G 内存以上的实例做压测基线;若并发以短连接为主,注意选择带有高并发网络栈优化的镜像或内核。若使用容器化,请为容器平台预留足够主机资源。
1) 选择支持增强网络性能的实例;2) 使用本地 NVMe 或高 IOPS 云盘以降低磁盘延迟;3) 为日志、监控、缓存单独分配资源,避免与应用争抢 CPU/IO。
网络是跨国访问的关键。优先使用 tianyiidc 提供的美国机房直连或 BGP 多线出口,开启 CDN 加速静态资源并就近接入。对 API 层可启用全球负载均衡(GSLB)或 Anycast,缩短用户到边缘的 RTT。
在服务器端要做 TCP 层优化:调整内核参数如 net.core.somaxconn、net.ipv4.tcp_tw_reuse、tcp_fin_timeout,以及扩大 epoll/线程池队列。可在 /etc/sysctl.conf 中加入合理配置并重载以提升并发连接数处理能力。
例如 sysctl 设置:net.core.somaxconn=65535;net.ipv4.tcp_fin_timeout=30;net.ipv4.tcp_tw_reuse=1。并在 Nginx 中配置 worker_processes 与 worker_connections 以提高并发连接上限。
高可用高并发的核心是“分层解耦、无状态与水平扩展”。将应用拆为前端负载均衡层、应用层、缓存层、数据库层和异步任务层;确保应用实例尽量无状态,状态数据存储在 Redis 或数据库中,便于横向扩容与故障替换。
使用负载均衡(如 Nginx、HAProxy 或云负载均衡)做健康检查与流量分发,结合自动伸缩策略在流量高峰期自动增减实例。对耗时操作走异步队列(如 RabbitMQ、Kafka 或云消息队列),避免阻塞请求线程。
1) 无状态服务 + 会话持久化到 Redis;2) 接口限流与熔断(如漏桶、令牌桶、熔断器 Hystrix 风格);3) 灰度发布与滚动更新以降低发布风险。
数据库通常是瓶颈。读多写少场景优先读写分离:主库写、从库读,并使用中间层读写路由。对写压力大的场景考虑分库分表或使用 sharding 中间件。对于强一致性要求的业务,结合事务与乐观锁设计。
缓存是提升 QPS 的利器:将热点数据放入 Redis 或 Memcached,并设计合适的过期策略与本地缓存降级策略。避免缓存击穿(使用互斥锁或提前更新)、缓存雪崩(加随机过期)与缓存穿透(使用布隆过滤器或空对象缓存)。
1) 使用主从复制 + 自动故障切换(例如 MHA、ProxySQL 或云 DB 的内置高可用);2) Redis 集群化部署并启用持久化策略与哨兵监控;3) 对慢查询建索引并做定期优化与归档。
监控覆盖指标包括:CPU、内存、磁盘 IO、网络带宽、应用响应时间、错误率、队列长度、数据库慢查询数等。建议部署 Prometheus + Grafana 或使用 tianyiidc 提供的云监控服务,并配置告警(短信/邮件/钉钉/Slack)。
自动扩容策略基于业务维度设定:CPU、QPS、响应时间或自定义指标触发扩容/缩容,并配合冷却时间与最大最小实例数。容灾方面设置跨可用区冗余、数据库异地备份与定期演练故障恢复流程。
1) 建立运行手册与故障排查 SOP,定期演练流量冲击;2) 使用蓝绿/滚动发布以降低灰度风险;3) 定期做压测(如使用 JMeter、Locust)验证规模化扩展效果并调整参数。