几台服务器做一样的事情叫集群,要负载均衡用nginx进行负载分发
负载均衡有什么功能:从哪台服务器登录,之后就会一直访问那台服务器,所有请求先访问ngnix服务器,再由ngnix服务器分发到各个服务器,并且ngnix也有配置https证书的功能
DNS也有负载均衡的功能,一个域名分发给不同ip
先dns分发给ngnix,再由ngnix分发给服务器
前后端分离的好处,减轻后端负载压力,不用每次访问都要下载前端页面(不分离时,html页面为java代码生成故每次都要下载完整的html代码,图片、css、js文件等不需每次都下载),当前后端分离是,只需下载一次前端代码即可,后面都为后端接口访问,减轻了负载压力,且另一个好处是可以实现一套后端代码实现多端运行(前后端不分离就没有可外部调用的接口,分离之后的接口是独立出来的,亦可被APP端等平台访问使用)
用户–>dns–>nginx–>域名–>前端服务器–>用户下载前端页面–>dns–>nqinx–>后端接口
ngnix(C编写) tomcat(java编写)
ngnix每秒转发量可达百万级,效率比tomcat高
集群时数据库要分离到独立高性能服务器,防止宕机
数据库服务器具有主从配置(凡是和数据库相关的都有主从/主备机制)(主master、备slave)
配置好主从之后,在主服务器完成操作之后不会立即返回成功,而是会先向副服务器同步信息,同步完成后才返回操作成功,若其中一个操作失败都会返回操作失败
数据相关的不会出现集群,会采用分布式(合作完成任务,各自任务更不相同)
双哨兵监控机制(实现在主数据库崩坏时将副数据库切换为主数据库)
序列化和反序列化是毫秒级的
序列化:把对象转为字符串
反序列化:把字符串转为对象
慢是因为其中加了反射,反射是比较慢的
跨进程访问的也会慢
redis缓存什么样的内容:读多写少的内容
redis的数据淘汰策略,LRU算法(重要面试点)
cpu从内存读取数据和从磁盘中读取数据速度差数百万倍到数千万倍
但是redis只平均比数据库快了几十倍,是因为被网络IO限制下来的
所以redis只适合在内网使用,不适合在外网使用,在外网使用时和数据库效率差距不大
本地缓存是一个静态的hashmap结构