- 高性能:如果我们发现这个接口tps和响应时间没有达到我们的要求怎么办。
A:数据存储方面:我们会想数据库有没有分库、分表、有没有做主从,有没有读写分离、字段是否有加索引、是否存在慢 sql,数据库引擎是否选用合适、是不是用了事务;
其次我们会想到是不是引用了分布式缓存、缓存 key 大小是否合适,失效时间是否设置合理,会不会大量缓存穿透、有没有引入本地缓存。
B:业务方面:是否有大量的计算、能否异步处理。是否需要引入线程池或者 MQ 来异步处理任务。有没有必要将接口进行垂直拆分和水平拆分、将接口粒度变小。
C:其他方面:nginx 层面做缓存、加机器、用 ssd,资源放 cdn,多机房部署、资源文件预加载。
- 高可用:如何保证服务高可用,需要从几个维度来实现:
A:消除单点,基于高可用第二位。
B:能做集群的全部做集群。譬如 Redis 集群、mysql集群、MongoDB副本集。
C:能做读写分离的都做读写分离。
D:异地多机房部署,接入 GSLB
E:必须有限流、降级机制。
F:监控。高可用的保证,基于第一位。
文章来源:
https://blog.csdn.net/gitchat/article/details/78705978