lvs:负载均衡器比nginx性能更高
根据访问量和业务需求
lvs和nginx应用场景和内部机制不一样
lvs只解析到四层网络到ip,lvs重要的一点就是只建立连接,不建立握手,把请求中转到后端
nginx解析到七层到url
如果并发量不是特别高的话,nginx就够了
nginx使用的是代理的方式请求数据那么io就有瓶颈
lvs只是一个请求的转发,转发到后端服务器,建立握手的是后端服务器,后续的一些访问就是和服务器进行处理(像路由器,只是把请求接过来)
fasdfs角色介绍:
- Tracker主节点
- Storage从节点
主节点只能有一个;从节点可以有多个,从节点可以加入到分组里,(也就是说可以提供多个从节点的副本,来保存一份数据)
负责均衡是由主节点来确定的,在选择上传的服务器的时候,可以选择往哪一个storage里上传,默认的Tracker会把数据传进第一台的Storage,第二次上传会传到第二台,刚上传完的时候有一个复制的操作(就是说刚刚上传完到第一个Storage,就会触发复制往另外两个Storage复制数据,异步复制不会影响主线程);下载的时候,也是通过Tracker,定位文件具体在那个Storage上,如果定位的时候发现他有三个副本,那么可以根据不同的策略进行下载
每个group能存储的最大数据量,取决于Storage中可用空间最小的那台机器
fastdfs特性
文件名带有的信息:第一次上传的所存储的服务器的IP地址(是为了复制操作)、上传时间、校验码(文件的hash值),可以通过base64反向解析出来
文件不可用的两种情况:
1.同步中(根据文件名称获取ip到当时上传的Storage里面下载)
2.宕机
fastdfs使用
文件上传
浏览器上传文件到fastdfs,有两种方式:
1.Java开发客户端应用
2.nginx做代理 (配置fastdfs-nginx-module)
fastdfs缩略图
具体原理:大图传到java的处理器,然后裁剪,拿java的io裁剪,裁剪成一个小文件,传到服务器,原来的原始文件一起传
上传进度条:需要个服务器有点对点的连接,才能形成真实的进度