高性能(响应时间,并发数,TPS)
- 浏览器静态资源缓存
- CDN缓存
- 反向代理服务器缓存
- 应用服务器本地缓存
- 分布式缓存服务器(Redis)
- 缓存数据预热
- 减少http请求(合并js,css,图片)
- http静态资源gzip压缩
- 资源复用(线程池,连接池)
- 异步处理 (消息队列)
- 多线程(线程安全:无状态对象,局部对象,加锁)
- 分布式(分层,分割)
- 集群
- 单数据库调优(索引,sql优化)
- 数据库主从读写分离(复制延迟,写压力)
- 数据库垂直分割(跨库join查询,跨库 单表越来越大)
- 数据库水平分割(跨库join查询, 添加移除节点,自增id,所有查询需要sharding clue,备份麻烦)
- NoSQL数据库
高可用
- 任何功能都要部署至少2台,防止单点(入口处的负载均衡服务器是单点,要用高端点的服务器)
- web应用服务器集群(通过入口负载均衡服务器进行自动failover,web应用服务器无状态话,sessoin由分布式缓存管理)
- 分布式服务集群(服务调用的客户端进行自动failover)
- 分布式缓存Redis主备复制(RedisCluster,RedisSentinel,Codis进行自动failover)
- 数据库主备复制(数据库代理服务器进行自动failover)
- 数据库数据冗余备份(NoSQL自带failover)
- 自动化发布(减少发布导致的宕机时间)
- 服务器分批部署重启(保证始终有一部分服务器在工作中)
可伸缩性
- web应用服务器集群
- 分布式服务集群
- 通过请求分发服务器路由,客户端从配置中心获取路由
- 常用路由算法:轮询,随机,最少连接
- 分布式缓存水平分割(一致性hash路由,presharding)
- 数据库水平分割(一致性hash路由,presharding)
- NoSQL数据库
来源:oschina
链接:https://my.oschina.net/u/1452390/blog/728026