目录
SpringBoot操作FastDFS
复习:
SpringBoot操作FastDFS
由GitHub大牛tobato在原作者YuQing与yuqih发布的JAVA客户端基 础上进行了大量重构工作,并于GitHub上发布了FastDFS-Client1.26.5。
主要特性
1 对关键部分代码加入了单元测试,便于理解与服务端的接口交易,提高接口质量
2 将以前对byte硬解析风格重构为使用对象+注解的形式,尽量增强了代码的可读性
3 支持对服务端的连接池管理
4 支持上传图片时候检查图片格式,并且自动生成缩略图
5 在SpringBoot当中自动导入依赖
实战开发
导入FastDFS依赖jar
<dependency>
<groupId>com.github.tobato</groupId>
<artifactId>fastdfs-client</artifactId>
<version>1.26.5</version>
</dependency>
配置SpringBoot的入口类
package com.demo;
import com.github.tobato.fastdfs.FdfsClientConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.EnableMBeanExport;
import org.springframework.context.annotation.Import;
import org.springframework.jmx.support.RegistrationPolicy;
//==========================================
=========================
//获取带有连接池的FastDFS Java客户端
@Import(FdfsClientConfig.class)
// 解决jmx重复注册bean的问题
@EnableMBeanExport(registration =
RegistrationPolicy.IGNORE_EXISTING)
//==========================================
=========================
@SpringBootApplication
public class FastdfsSpringbootDriverApplication {
public static void main(String[] args) {
SpringApplication.run(FastdfsSpringbootDriverApplication.class, args);
}
}
配置springboot的application.yml配置文件
============================================
=======================
# 分布式文件系统FDFS配置
============================================
=======================
fdfs:
so-timeout: 1501
connect-timeout: 601
thumb-image: #缩略图生成参数
width: 150
height: 150
tracker-list: #TrackerList参数,支持多个
- 192.168.66.100:22122
- 192.168.66.101:22122
上传文件操作
/**
* 测试springboot环境下的javaAPI对分布式文件系统的上传文件的操作
* @throws FileNotFoundException
*/
@Test
public void testUpload() throws FileNotFoundException {
//获取本地文件
File file = new File("G:\\图片\\mei.jpg");
//创建传输文件的输入流
FileInputStream fileInputStream = new FileInputStream(file);
//文件上传:参数一:传输文件内容的输入流;
参数二:文件的size;参数三:文件扩展名;参数四:描述文件的元数据;返回值:上传文件在存储节点的唯一标识(卷名+文件名)
StorePath storePath = fastFileStorageClient.uploadFile(fileInputStream, file.length(), "jpg", null);
//将卷名与文件名一起打印
System.out.println(storePath.getFullPath());
//将卷名与文件名分别打印
System.out.println(storePath.getGroup()+" | "+storePath.getPath());
}
文件下载的操作
/**
* 测试springboot环境下的javaAPI对分布式文件系统的下载文件的操作
* @throws IOException
*/
@Test
public void testDownload() throws IOException {
//下载文件:参数一:文件处于存储节点的卷名;参数二:文件在存储节点的文件名;参数三:下载的回调函数;返回值:文件内容的字节数组
byte[] bytes = fastFileStorageClient.downloadFile("group1","M00/00/00/wKhCZWICJcqAftV0AAChCwXlPdE133.jpg", new DownloadByteArray());
//创建文件输出流,指定输出位置及文件名
FileOutputStream fileOutputStream = new FileOutputStream("G:\\mei.jpg");
//使用文件输出流将文件内容字节数组写出
fileOutputStream.write(bytes);
//刷新输出流
fileOutputStream.flush();
//关闭输出流
fileOutputStream.close();
}
复习:
Nginx场景实践_Nginx高可用
什么是高可用?
高可用HA(High Availability)是分布式系统架构设计中必须考虑 的因素之一,它通常是指,通过设计减少系统不能提供服务的时 间。如果一个系统能够一直提供服务,那么这个可用性则是百分之 百,但是天有不测风云。所以我们只能尽可能的去减少服务的故障。
解决的问题
在生产环境上很多时候是以 Nginx 做反向代理对外提供服务,但 是一天Nginx难免遇见故障,如:服务器宕机。当 Nginx 宕机那么 所有对外提供的接口都将导致无法访问。虽然我们无法保证服 务器百分之百可用,但是也得想办法避免这种悲剧,今天我们 使用 keepalived 来实现 Nginx 的高可用。
双机热备方案
这种方案是国内企业中最为普遍的一种高可用方案,双机热备其实 就是指一台服务器在提供服务,另一台为某服务的备用状态,当一 台服务器不可用另外一台就会顶替上去。
实时效果反馈
1. Nginx 双机热备方案主要解决什么问题。
A 安全问题
B nginx单点故障问题
C 性能问题
D 并发问题
Nginx场景实践_LVS负载均衡
LVS是一个开源的软件,可以实现传输层四层负载均衡。LVS是 Linux Virtual Server的缩写,意思是Linux虚拟服务器。
目标:
通过 LVS 达到的负载均衡技术和 Linux 操作系统实现一个高性能高可用的 Linux 服务器集群,它具有良好的可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的性能。
LVS的八种调度算法
1 、轮叫调度 rr
2 、加权轮叫 wrr
3 、最少链接 lc
4 、加权最少链接 wlc
5 、基于局部性的最少连接调度算法 lblc
6 、复杂的基于局部性最少的连接算法 lblcr
7 、目标地址散列调度算法 dh
8 、源地址散列调度算法 sh
实时效果反馈
1. LVS是一个开源的软件,可以实现____四层负载均衡。
A 应用层
B 链路层
C 传输层
D 会话层
2. 下列不属于LVS负载均衡算法的是____。
A 轮叫调度 rr
B 加权轮叫 wrr
C 最少链接 lc
D ip_hash