当前位置: 首页 > news >正文

android 网站模板软件开发外包服务

android 网站模板,软件开发外包服务,网站中英文转换js,网页制作要多少钱一 为什么要使用分布式文件系统 单机时代 初创时期由于时间紧迫#xff0c;在各种资源有限的情况下#xff0c;通常就直接在项目目录下建立静态文件夹#xff0c;用于用户存放项目中的文件资源。如果按不同类型再细分#xff0c;可以在项目目录下再建立不同的子目录来区分…一 为什么要使用分布式文件系统 单机时代 初创时期由于时间紧迫在各种资源有限的情况下通常就直接在项目目录下建立静态文件夹用于用户存放项目中的文件资源。如果按不同类型再细分可以在项目目录下再建立不同的子目录来区分。例如 resources\static\file 、 resources\static\img 等。 注意 优点便利使用方便。 缺点文件越多存放越混乱。 独立文件服务器 随着公司业务不断发展将代码和文件放在同一服务器的弊端就会 越来越明显。为了解决上面的问题引入独立图片服务器 流程 项目上传文件时首先通过ftp或者ssh将文件上传到图片服务器的某个目录下再通过Ngnix或者Apache来访问此目录下的文件返回一个独立域名的图片URL地址前端使用文件时就通过这个URL地址读取。 分布式文件系统 业务继续发展单台服务器存储和响应也很快到达了瓶颈新的业务需要文件访问具有高响应性、高可用性来支持系统。 优点 扩展能力: 毫无疑问扩展能力是一个分布式文件系统最重要的特点高可用性: 在分布式文件系统中高可用性包含两层一是整个文件系统的可用性二是数据的完整和一致性弹性存储: 可以根据业务需要灵活地增加或缩减数据存储以及增删存储池中的资源而不需要中断系统运行。 缺点 系统复杂度稍高需要更多服务器 二 FastDFS概述 1 简介 FastDFS是一个开源的轻量级分布式文件系统。它解决了大数据量存储和负载均衡等问题。特别适合以中小文件建议范围4KB file_size 500MB为载体的在线服务如相册网站、视频网站等等。 FastDFS特性 文件不分块存储上传的文件和OS文件系统中的文件一一对应支持相同内容的文件只保存一份节约磁盘空间下载文件支持HTTP协议可以使用内置Web Server也可以和其他Web Server配合使用支持在线扩容支持主从文件 分布式文件服务提供商 阿里的OSS七牛云存储百度云储存 2 核心概念 FastDFS服务端有三个角色跟踪服务器tracker、存储服务器 storage和客户端client。 tracker 跟踪服务器主要做调度工作起负载均衡的作用。在内存中记录集群中所有存储组和存储服务器的状态信息是客户端和数据服务器交互的枢纽。 storage 存储服务器又称存储节点或数据服务器文件和文件属性 meta data都保存到存储服务器上。Storage server直接利用 OS的文件系统调用管理文件。 client 客户端作为业务请求的发起方通过专有接口使用TCP/IP协议与跟踪器服务器或存储节点进行数据交互。FastDFS向使用者提供基本文件访问接口比如upload、download、append、delete 等以客户端库的方式提供给用户使用。 group 组 也可称为卷。 同组内服务器上的文件是完全相同的 同一组内的storage server之间是对等的 文件上传、 删除等操作可以在任意一台storage server上进行 。 流程 Tracker相当于FastDFS的大脑不论是上传还是下载都是通过 tracker来分配资源客户端一般可以使用Ngnix等静态服务器来调用或者做一部分的缓存存储服务器内部分为卷或者叫做组卷于卷之间是平行的关系可以根据资源的使用情况随时增加卷内服务器文件相互同步备份以达到容灾的目的。 3 上传机制 首先客户端请求Tracker服务获取到存储服务器的ip地址和端口然后客户端根据返回的IP地址和端口号请求上传文件存储服务器接收到请求后上传文件并且将文件内容写入磁盘并返回给客户端 file_id、路径信息、文件名等信息客户端保存相关信息上传完毕。 内部机制如下 1、选择Tracker server 当集群中不止一个Tracker server时由于Tracker之间是完全对等的关系客户端在upload文件时可以任意选择一个trakcer。 2、选择Storage server 当选定Group后Tracker会在Group内选择一个Storage Server给 客户端 3、选择Storage path 当分配好Storage Server后客户端将向Storage发送写文件请求 Storage将会为文件分配一个数据存储目录。 注意 剩余存储空间最多的优先。 4、生成Fileid 选定存储目录之后Storage会为文件生一个Fileid由Storage Server Ip、文件创建时间、文件大小、文件crc32和一个随机数拼接而成然后将这个二进制串进行base64编码转换为可打印的字符串。 5、生成文件名 当文件存储到某个子目录后即认为该文件存储成功接下来会为 该文件生成一个文件名文件名由group、存储目录、两级子目录、fileid、文件后缀名由客户端指定主要用于区分文件类型 拼接而成。 4 下载机制 客户端带上文件名信息请求Tracker服务获取到存储服务器的ip地址和端口然后客户端根据返回的IP地址和端口号请求下载文件存储服务器接收到请求后返回文件给客户端。 内部机制如下 client询问tracker下载文件的storage参数为文件标识组名和文件名tracker返回一台可用的storageclient直接和storage通讯完成文件下载 三 FastDFS环境搭建_Linux 下载安装gcc yum install gcc-c perl-devel pcre-devel openssl-devel zlib-devel wget下载FastDFS直接通过xftp上传 V6.06.tar.gz下载FastDFS依赖直接通过xftp上传 V1.0.43.tar.gz 解压缩依赖tar包 tar -zxvf V1.0.43.tar.gz -C /usr/local tar -zxvf V6.06.tar.gz -C /usr/local编译并安装libfastcommon cd /usr/local/libfastcommon-1.0.43/./make.sh ./make.sh install编译并安装FastDFS cd /usr/local/fastdfs-6.06 ./make.sh ./make.sh install进入etc目录下复制配置文件 cd /etc/fdfs/ cp client.conf.sample client.conf cp storage.conf.sample storage.conf cp tracker.conf.sample tracker.conf创建tracker服务 创建tracker目录 mkdir -p /data/fastdfs/tracker修改配置文件 vim /etc/fdfs/tracker.conf#启用配置文件 disabledfalse #设置 tracker的端口号 port22122 #设置 tracker的数据文件和日志目录需预先创建 base_path/data/fastdfs/tracker #设置 http 端口号 #指的是在tracker服务器上启动http服务进程如:apache或者nginx 启动时所监听的端口 http.server_port8888 启动tracker服务 /etc/init.d/fdfs_trackerd start检查tracker服务 netstat -lntup |grep fdfstcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 1476/fdfs_trackerd 创建storage服务 创建storage目录 mkdir -p /data/fastdfs/base mkdir -p /data/fastdfs/storage修改配置文件 vim /etc/fdfs/storage.conf#启用配置文件 disabledfalse #组名根据实际情况修改 group_namegroup1 #设置storage 的端口号 port23000 #设置storage 的日志目录需预先创建 base_path/data/fastdfs/base #存储路径个数需要和 store_path 个数匹配 store_path_count1 #存储路径 store_path0/data/fastdfs/storage #tracker 服务器的 IP 地址和端口号 tracker_server192.168.66.100:22122 #设置storage上启动的http服务的端口号如安装的nginx的端口号 http.server_port8888 启动storage服务 /etc/init.d/fdfs_storaged start查看storage服务 netstat -lntup |grep fdfstcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 1476/fdfs_trackerd tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 1466/fdfs_storaged修改Client配置文件 vim /etc/fdfs/client.confconnect_timeout30 network_timeout60 # 日志路径 base_path/data/fastdfs/client # 追踪服务器的IP有多个服务器可以另一行 tracker_server192.168.66.100:22122    创建日志目录 mkdir -p /data/fastdfs/client查看启动的服务 ps -ef | grep fdfs四 FastDFS指令 上传指令 指令参数 fdfs_upload_file config_file local_filename [storage_ip:port] [store_path_index]参数含义 配置文件路径本地文件路径[storage_ip:port] 可选参数[store_path_index] 可选参数 指令使用 [roottracker fdfs]# fdfs_upload_file /etc/fdfs/client.conf 上传的文件路径注意 上传文件后会返回文件在FastDFS中的唯一文件标识即卷名 文件名 下载指令 指令参数 fdfs_download_file config_file file_id [local_filename] [download_offset download_bytes]参数含义 配置文件路径文件在FastDFS中的唯一文件标识即卷名文件名[local_filename] 文件下载地址download_offset:可选参数文件下载开始时间download_bytes:可选参数文件下载的字节数 指令使用 [roottracker fdfs]# fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKhygVwnUUOAcgYHCCZp2Ahsb3g964.rpm查看文件信息指令 指令参数 fdfs_file_info config_file file_id参数含义 配置文件路径文件在FastDFS中的唯一文件标识即卷名文件名 指令使用 [roottracker fdfs]# fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/wKhygVwnUUOAcgYHCCZp2Ahsb3g964.rpm删除指令 指令参数 fdfs_delete_file config_file file_id参数含义 配置文件路径文件在FastDFS中的唯一文件标识即卷名文件名 指令使用 [roottracker fdfs]# fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKhygVwnUUOAcgYHCCZp2Ahsb3g964.rpm注意:删除指令使用后文件在该卷中的所有备份都会被删除因为卷内的存储节点会相互同步故慎用。 五 SpringBoot操作FastDFS 由GitHub大牛tobato在原作者YuQing与yuqih发布的JAVA客户端基础上进行了大量重构工作并于GitHub上发布了FastDFSClient1.26.5。 主要特性 对关键部分代码加入了单元测试便于理解与服务端的接口交易提高接口质量将以前对byte硬解析风格重构为使用对象注解的形式尽量增强了代码的可读性支持对服务端的连接池管理支持上传图片时候检查图片格式并且自动生成缩略图在SpringBoot当中自动导入依赖 实战开发 导入FastDFS依赖jar dependencygroupIdcom.github.tobato/groupIdartifactIdfastdfs-client/artifactIdversion1.26.5/version/dependency配置SpringBoot的入口类 package com.lxx.fdfsdemo;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 FdfsdemoApplication {public static void main(String[] args) {SpringApplication.run(FdfsdemoApplication.class, args);}}配置springboot的application.yml配置文件 # 分布式文件系统FDFS配置 fdfs:so-timeout: 1501connect-timeout: 601thumb-image: # 缩略图生成参数width: 150height: 150tracker-list: #TrackerList参数,支持多个- 192.168.66.100:22122 上传文件操作与文件下载的操作 SpringBootTest class FdfsdemoApplicationTests {Autowiredprivate FastFileStorageClient fastFileStorageClient;//测试springboot环境下的javaAPI对分布式文件系统的上传文件的操作Testpublic void testUpload() throws FileNotFoundException {//获取本地文件File file new File(G:\\666.png);//创建传输文件的输入流FileInputStream fileInputStream new FileInputStream(file);//文件上传// 参数一传输文件内容的输入流// 参数二文件的size// 参数三文件扩展名// 参数四描述文件的元数据// 返回值上传文件在存储节点的唯一标识(卷名文件名)//StorePath storePath fastFileStorageClient.uploadFile(fileInputStream, file.length(), png, null);//将卷名与文件名一起打印System.out.println(storePath.getFullPath());//将卷名与文件名分别打印System.out.println(storePath.getGroup() | storePath.getPath());}//测试springboot环境下的javaAPI对分布式文件系统的下载文件的操作Testpublic void testDownload() throws IOException {//下载文件// 参数一文件处于存储节点的卷名// 参数二文件在存储节点的文件名// 参数三下载的回调函数// 返回值文件内容的字节数组byte[] bytes fastFileStorageClient.downloadFile(group1, M00/00/00/wKhCZGQPkj6AAIAHAAAUlrX9mjc722.png, new DownloadByteArray());//创建文件输出流指定输出位置及文件名FileOutputStream fileOutputStream new FileOutputStream(G:\\mei.jpg);//使用文件输出流将文件内容字节数组写出fileOutputStream.write(bytes);//刷新输出流fileOutputStream.flush();//关闭输出流fileOutputStream.close();}}六 文件上传_SpringBoot基于FastDFS实现 RestController public class UploadToFastDFSController {//fastdfs存储节点的客户端对象Autowiredprivate FastFileStorageClient fastFileStorageClient;PostMapping(/fileUpload)public void uploadMoreImage(MultipartFile[] files) {String path ;//判断是否上传图片if (files ! null files.length ! 0) {//遍历上传图片for (MultipartFile multipartFile : files) {//获取上传文件名String filename multipartFile.getOriginalFilename();//获取最后一个“.”的下标并获取从这个下标的下一个下标开始后的字符作为文件后缀String fileSuffix filename.substring(filename.lastIndexOf(.) 1);StorePath storePath null;try {//上传文件storePath fastFileStorageClient.uploadFile(multipartFile.getInputStream(),multipartFile.getSize(),fileSuffix,null);} catch (IOException e) {e.printStackTrace();}//打印返回的文件在存储节点的唯一标识System.out.println(storePath.getFullPath());}}} }form actionfileUpload methodpost enctypemultipart/form-datainput typefile namefiles/ br/input typefile namefiles/ br/input typesubmit valueUpload/ /form七 FastDFS集成Nginx Nginx服务器是一个高性能的web服务器与反向代理服务器 FastDFS集成Nginx的2个原因 为分布式文件系统提供Http服务支持 通过Nginx的web服务代理访问分布式文件系统的存储节点从而实现通过http请求访问存储节点资源。 注意 src 属性值图像文件的 URL。也就是引用该图像的文件的的绝对 路径或相对路径。 解决复制延迟问题 由于FastDFS的同卷的存储节点之间需要同步当文件尚未同步完 成时访问请求到达改节点获取的数据将是未同步完的不完整数据即为复制延迟问题。通过Nginx检测请求的存储节点的数据 若该存储节点的数据尚未同步完成则将请求转发至数据的原存储节点从而解决复制延迟问题。 环境搭建 下载Fastdfs的Nginx模块包(直接通过xftp上传 解压到/usr/local下 V1.22.tar.gztar -zxvf V1.22.tar.gz -C /usr/local下载Nginx软件包(直接通过xftp上传 解压到/usr/local下 nginx-1.19.2.tar.gztar -zxvf nginx-1.19.2.tar.gz -C /usr/local安装Nginx依赖文件 yum install -y gcc gcc-c zlib zlib-devel openssl openssl-devel pcre pcre-devel gddevel epel-release配置Nginx服务器 cd /usr/local/nginx-1.19.2#建立Makefile文件检查Linux系统环境以及相关的关键属性。 ./configure --add-module/usr/local/fastdfs-nginx-module-1.22/src#编译项目主要将gcc源代码编译成可执行的目标文件 make#根据上一步骤编译完成的数据安装到预定的目录中。 make install注意 –add-module为nginx添加一个fastdfs-nginx-module模块值为该模块在当前系统的路径 –prefix指定nginx安装位置 将Fastdfs软件包里面的http.conf和mime.types拷贝到/etc/fdfs 目录下 cp /usr/local/fastdfs-6.06/conf/mime.types /etc/fdfs/ cp /usr/local/fastdfs-6.06/conf/http.conf /etc/fdfs/配置Nginx的fastdfs模块并编辑文件 #拷贝文件 cp /usr/local/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs/vim mod_fastdfs.conf#保存日志目录 base_path/data/fastdfs/storage #tracker 服务器的 IP 地址以及端口号 tracker_server192.168.66.100:22122 #文件url中是否有group名 url_have_group_name true #存储路径 store_path0/data/fastdfs/storage #设置组的个数 group_count 1 #然后在末尾添加分组信息目前只有一个分组就只写一个 [group1] group_namegroup1 storage_server_port23000 store_path_count1 store_path0/data/fastdfs/storage配置Nginx vim /usr/local/nginx/conf/nginx.confserver {listen 80;server_name localhost;location ~ /group[1-3]/M00 {alias /data/fastdfs/storage/data;ngx_fastdfs_module;}}启动Ningx服务 # 进入sbin目录 [roottracker nginx]# cd sbin/ # 启动服务 -c指定配置文件 [roottracker sbin]# ./nginx -c /usr/local/nginx/conf/nginx.conf查看服务启动情况 [roottracker sbin]# ps -ef | grep nginx启动追踪服务与存储节点服务 [roottracker sbin]# fdfs_trackerd /etc/fdfs/tracker.conf start [roottracker sbin]# fdfs_storaged /etc/fdfs/storage.conf start上传图片测试 将图片上传至linux系统后使用指令上传至分布式文件系统 [rootlocalhost opt]# fdfs_upload_file /etc/fdfs/client.conf /opt/666.jpg group1/M00/00/00/wKhCZGQPp9uADn32ABU3jnny8Mc041.jpg通过浏览器远程访问 http://192.168.66.100/group1/M00/00/00/wKhCZGQPp9uADn32ABU3jnny8Mc041.jpg
http://www.w-s-a.com/news/777255/

相关文章:

  • 免费微信微网站模板下载不了优化人员配置
  • wordpress 导航网站主题画流程图的网站
  • 皮卡剧网站怎样做排名网
  • 网站开发 兼职哪个网站是做安全教育
  • 商品展示类网站怎么用群晖nas做网站
  • 长腿蜘蛛wordpresssem优化推广
  • 中国铁路建设监理协会官方网站深圳福田区怎么样
  • 互联网网站开发发展wordpress文章自定义栏目
  • 众筹网站平台建设工信部网站备案系统
  • 网站301重定向代码wordpress 加子目录
  • 淄博网站制作优化推广asp做学生信息网站
  • 海口招商建设有限公司网站淮安哪有专业做网站的公司
  • 喀什哪有做网站的国内正规seo网络推广
  • 网站设计初步规划公司网页打不开是什么原因
  • 深圳企业网站建设推广服务php做的商城网站设计论文
  • 韩雪冬网站手机网站开发 宽度
  • 奉贤专业做网站新手怎么做企业网站
  • 做网站用哪几个端口 比较好手机号网站源码
  • 手机免费代理ip网站那个旅游网站做攻略最好
  • 西安做网站找哪家公司好苏州专业网站建设开发
  • dedecms如何做网站网站设计实施方案
  • 网站建设合约品牌设计有哪些
  • 织梦企业门户网站宝塔搭建wordpress网站
  • 网站为什么没有排名了11月将现新冠感染高峰
  • 网站开发维护专员岗位职责辽阳企业网站建设
  • 做外国订单有什么网站网站设计论文提纲
  • 商城网站建设报价方案导师让做网站
  • 清远市企业网站seo联系方式动易官方网站
  • 手机上怎么做能打开的网站一级域名和二级域名跨域
  • 网站首页效果图wordpress 在线教育