客户端 ——> 任务服务器 ——> 应用服务器
任务服务器,需有两台或两台以上的任务服务器,心跳机制校验。
应用服务器的负载均衡:
1.任务服务器暴露一个HTTP接口给应用服务器,当应用服务器空闲的时候就到任务服务器里取任务。
2.应用服务器可以暴露一个HTTP协议的接口给任务服务器,任务服务器使用该接口获取应用服务器的CPU,内存,IO等负载相关量是否高,从而决定把任务分配给当前负载低的应用服务器
应用服务器可以根据业务等进行分割
应用服务器 ——> DAL层,数据库服务器 ——> 数据库
应用服务器 ——> Cache层,多个redis
缓存层:
1.为了减轻数据库压力,一些热点数据可以存在缓存数据库中,减少数据库的访问量
2.当修改数据的时候,应用服务器通过DAL层直接修改数据库,然后DAL层会把数据同步到缓存数据库,应用服务器只从缓存数据库中取数据,而不会直接修改它
数据库:
1.当读写操作很多的时候,数据库分为主从数据库,由于业务中很多时候都是读操作比写操作多,因此写功能的数据库比读功能的数据库要少
2.当主数据库被改写之后,需要对从数据进行同步,这时候可以主流数据库的replication机制进行同步。这个机制通过日志文件来工作的
3.当数据库大到一定程度的时候,为了改善数据库并发,需要对数据库进行分区
垂直分库:按照一定的逻辑,把表分散到不同的库中,如用户表一个库,业务表一个库等等
水平分库:把一个库分成N个,每个库都有其他中所有的表,数据平分
服务器性能四大杀手:
1.数据拷贝,可用缓存避免
2.环境切换,主要是线程之间的切换
3.内存分配,可用内存池改进
4.锁竞争,尽量避免