分布式项目结构
分布式思想:
1.将大型项目按照特定的规则拆分,减少项目架构的耦合性
和单体架构的区别:
1.报错并不受干扰(单体受)
2.结构清晰,较好维护
3.开发复杂,添加繁琐
结构分布的jar包和工具API如何管理
定义一个父类工程,统一定义版本,其他分布式项目继承父类工程
Nginx反向代理服务器
反向代理服务器位于用户与目标服务器之间,用户在访问反向代理服务器就可以获得目标服务器资源,介于HTTP\HTTPS\SMTP\POP3等协议
1.反向代理服务器介于用户和真实的服务器之间
2.用户以为反向代理服务器就是真实的服务器
3.用户不需要了解服务器到底是谁
4.反向代理服务器保护了真实服务器信息
5.反向服务器是服务端代理
正向代理
是基于客户端代理
用户明确知道要访问的是谁
保护了用户的信息
一般网络通讯采用的是向代理
nginx
nginx是高性能HTTP和反向代理的web服务器
是一种轻量型的web服务器
1.内存少
2.并发能力高
3.健康检查
4.稳定性高
nginx就是通过在网上购买的域名,通过反向代理访问至本地的地址的中间件
nginx负载均衡策略
1.轮询,轮着来
2.权重,设置权重,那个高,那个记录大
3.IPHASH,将访问用户id进行哈希运算,分配后,这个ip固定在一个位置
面试题:
1.nginx如何处理http请求?
使用反应器模式,主事件循环等待系统发出准备事件信号,这样就可以从套接字取数据,将实例放入缓冲区等待处理,一个线程上万并发
2.如何使用未定义服务器名称阻止处理请求?
server-name 为空字符串
3.主线程和守护线程分别是什么
主:读取以及评估配置维持
守护:处理请求
4.-s
可执行文件
为什么要区分动静分离;
需要处理的为动,不需要处理为静。减少服务器压力
数据库优化策略
数据库备份
数据库分为冷备份和热备份
冷备份为人工操作,费时费力,并且可能导致数据丢失
热备份为系统操作,可以达到实时备份,保证数据的尽可能不丢失
热备份的原理:
数据库主库执行更新操作,会将更新内容写入二进制日志文件,写入二进制的过程是一个异步过程,从库开启IO线程读取二进制日志文件,写入到临时存储日志中
从库开启sql 线程读取中继日志中信息,同步到从库中
数据库主从结构
默认的情况下可以直接将数据库作为主数据库嘛?不可以,需要开启数据库二进制文件
基于数据库出现的中间件Mycat
基于分布式数据库出现的解决方案
在中间件没出现之前,实现读写分离,要在程序端实现,这样程序和数据库耦合太高不利于维护。
Mycat中间件可以实现主从结构读写分离,让程序只关注中间件地址,而不需要了解数据库底层运作
mycat拆分
水平拆分:将大表通过抽取模板,按照条件拆分,把一个大表拆成若干个小表
分布式数据存储中间件如mycat的核心流程是什么?
垂直拆分:将单表,或是有关联的表或是有关联的表放在一个数据库,把原有的数据库拆分成若干个小数据库
全局表:字典类数据表
分片表:基于条件筛选的表
ER表:和分片表有外键关系的表
答:sql解析 ->数据源分配 -> 请求响应 -> 结果整合
数据库高可用
高可用,就是当服务器法伤宕机现象时,可以自动实现程度的故障迁移
