高并发,大量并发请求打到服务器,遇到头三个棘手的问题就是性能不够、服务压力大、临界值互斥
对于性能不够,我们分库分表、加缓存。
对于服务压力大,我们限流、加队列异步处理、拆分
对于临界值互斥,我们加锁保证原子性
加了缓存,就需要考虑缓存和数据库的一致性问题、还有缓存里数据的可靠性
加了队列中间件,就需要考虑消息可靠性、吞吐量、响应时间如何权衡。
加了锁,就需要考虑如果请求时原子执行的,性能不够该怎么办。
做了分库分表,就需要考虑分了之后用什么key来分、怎么查询、怎么写入
加了限流,被限制的请求怎么兜底
做了拆分,垂直拆分该考虑服务间降级限流熔断防雪崩、还有怎么路由、怎么搞分布式事务、分布式锁。水平拆分也需要考虑怎么路由,随机、轮询、加权、地域等等
还有监控和日志,日志多了成本低高、低了定位问题难。监控能及时发现问题,发现问题没有及时解决也会导致最终监控形如虚设。