FastDFS【SpringBoot操作FastDFS、复习】(三)-全面详解(学习总结---从入门到深化)_服务器

目录

SpringBoot操作FastDFS

复习:

SpringBoot操作FastDFS

FastDFS【SpringBoot操作FastDFS、复习】(三)-全面详解(学习总结---从入门到深化)_网络_02

 由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高可用

FastDFS【SpringBoot操作FastDFS、复习】(三)-全面详解(学习总结---从入门到深化)_运维_03

 什么是高可用?

高可用HA(High Availability)是分布式系统架构设计中必须考虑 的因素之一,它通常是指,通过设计减少系统不能提供服务的时 间。如果一个系统能够一直提供服务,那么这个可用性则是百分之 百,但是天有不测风云。所以我们只能尽可能的去减少服务的故障。

FastDFS【SpringBoot操作FastDFS、复习】(三)-全面详解(学习总结---从入门到深化)_spring_04

解决的问题

在生产环境上很多时候是以 Nginx 做反向代理对外提供服务,但 是一天Nginx难免遇见故障,如:服务器宕机。当 Nginx 宕机那么 所有对外提供的接口都将导致无法访问。虽然我们无法保证服 务器百分之百可用,但是也得想办法避免这种悲剧,今天我们 使用 keepalived 来实现 Nginx 的高可用。 

双机热备方案 

这种方案是国内企业中最为普遍的一种高可用方案,双机热备其实 就是指一台服务器在提供服务,另一台为某服务的备用状态,当一 台服务器不可用另外一台就会顶替上去。

实时效果反馈

1. Nginx 双机热备方案主要解决什么问题。

A 安全问题 

B nginx单点故障问题

C 性能问题

D 并发问题

Nginx场景实践_LVS负载均衡 

FastDFS【SpringBoot操作FastDFS、复习】(三)-全面详解(学习总结---从入门到深化)_运维_05

LVS是一个开源的软件,可以实现传输层四层负载均衡。LVS是 Linux Virtual Server的缩写,意思是Linux虚拟服务器。 

目标:

通过 LVS 达到的负载均衡技术和 Linux 操作系统实现一个高性能高可用的 Linux 服务器集群,它具有良好的可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的性能。 

FastDFS【SpringBoot操作FastDFS、复习】(三)-全面详解(学习总结---从入门到深化)_服务器_06

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