SpringBoot微服务电商项目开发实战 --- 分布式文件系统实现
SpringBoot分布式开发系列文章已经持续了一段时间了,每一篇都有核心内容讲给大家。比如:分环境部署配置及服务端口号统一配置,子模块版本号管理及第三方jar依赖管理,单点登录实现,接口安全(签名+令牌)及过滤器配置拦截,全局异常处理及日志打印、防SQL注入等。现在项目里只需添加你的业务代码,就可用于生产环境,同时项目源码也已共享到github。
但大家有没有发现,我讲了这么多,实际这个项目里还缺少一个最基本的服务功能。这也是我今天要给大家讲的内容了。那到底是什么呢?
文件系统,对每个项目来说几乎都必不可少。记着在N年前做传统项目时,文件起初是直接存储的项目里面的,后来慢慢通过配置运行项目的Tomact把文件从项目中分离了出去,存储到项目所在机器的磁盘上。不管怎么,这种存储完全受制于Web容器,肯定是不能使用于分布式环境。那么,我现在主要说说分布式文件系统FastDFS的的实现。
FastDFS服务搭建实现
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。它充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
FastDfs文件系统原理及搭建我不再过多的去介绍,我之前已有过一篇文章,里面有详细演示FastDFS文件服务系统的搭建,大家可以阅读参考:FastDFS文件服务器原理及搭建。现在我们直接进入项目,编写代码演示分布式文件系统FastDFS在项目里实现的文件上传下载。
首先在父级项目的pom里添加fastDFS的依赖。
版本号:1.26.2
再在公共模块lyn-common的pom里添加依赖
然后写FastDFS的文件上传服务Service接口。
Service接口实现:
在接口层(lyn-web)的properties配置里添加配置信息:
接口层的启动类里添加注解。
这里对过滤器有专门针对上传文件接口做了验证token处理。并在Aop里不对上传接口进行切面处理。
此刻,所有配置已完成,我们启动项目测试。
查看上传的图片:
存储文件路径处理
分布式文件服务已经实现,接下来你就可以上传文件实现你的业务代码了。那么文件的路径在数据库怎么存储呢?实际这个有经验的开发者基本都知道,文件路径存入数据库时要去掉域名,在接口查询出来又需要补全域名。为什么这样做呢?在我们的生产环境,一般文件肯定是带域名访问,比如我配的是http域名,但使用小程序后,分享时图片无法使用(不支持http域名下载),必须要用https才可正常使用,那我是不是得改文件访问域名呢。如果你把带域名的文件路径存到了数据库,那么是不是查出来的路劲无法访问了。所以,存储时去域名查询加域名这看似麻烦的操作,但在实际项目中更有利于日过的扩展和维护。编写的文件工具类:
添加数据时,去文件域名
查询时补全域名
今天讲了分布式文件系统的搭建及应用,希望能帮到那些正在准备开发或正在开发的小伙伴们。
获取项目源代码,请扫码关注公众号,并发送Springboot获取。

SpringBoot微服务电商项目开发实战 --- 分布式文件系统实现的更多相关文章
- SpringBoot微服务电商项目开发实战 --- 模块版本号统一管理及Redis集成实现
上一篇文章总结了基于SpringBoot实现分布式微服务下的统一配置.分环境部署配置.以及服务端模块的分离(每一个提供者就是一个独立的微服务).微服务落地.Dubbo整合及提供者.消费者的配置实现.本 ...
- SpringBoot微服务电商项目开发实战 --- api接口安全算法、AOP切面及防SQL注入实现
上一篇主要讲了整个项目的子模块及第三方依赖的版本号统一管理维护,数据库对接及缓存(Redis)接入,今天我来说说过滤器配置及拦截设置.接口安全处理.AOP切面实现等.作为电商项目,不仅要求考虑高并发带 ...
- SpringBoot微服务电商项目开发实战 --- Redis缓存雪崩、缓存穿透、缓存击穿防范
最近已经推出了好几篇SpringBoot+Dubbo+Redis+Kafka实现电商的文章,今天再次回到分布式微服务项目中来,在开始写今天的系列五文章之前,我先回顾下前面的内容. 系列(一):主要说了 ...
- Spring Boot微服务电商项目开发实战 --- 分布式开发要避的那些坑
今天已经进入第七讲了,整个微服务架构的搭建工作也基本完成.那到目前为止究竟使用了那些技术及实现了什么功能呢?我们先回顾一下. 使用的技术:SpringBoot.Dubbo.Zookeeper.Redi ...
- SpringBoot微服务电商项目开发实战 --- 全局异常处理
上一篇文章讲了Redis缓存的安全防范及Kafka的接入及消息实现,今天接着前面的内容基础说说项目的优化和基础配置,今天要讲的内容主要是Spring Boot项目中的全局异常处理.为什么要做这件事呢? ...
- SpringBoot微服务电商项目开发实战 --- Kafka集成接入
kafka作为消息中间件的一款产品,她比较轻量级,在吞吐量方面很优秀,默认消息持久化到硬盘当中 168小时=7天,log.retention.hours=168,比较适合来做运营的统计.其他的不多讲, ...
- Spring Boot微服务电商项目开发实战 --- 基础配置及搭建
根据SpringBoot实现分布式微服务项目近两年的开发经验,今天决定开始做SpringBoot实现分布式微服务项目的系列文章,帮助其他正在使用或计划使用SringBoot开发的小伙伴们.本次系列文章 ...
- Spring Boot微服务电商项目开发实战 --- 多环境部署配置、端口号统一配置及Dubbo提供者消费者实现
昨天已经搭建好了SpringBoot基于Maven的基础父子级项目,今天开始进入项目分模块及分布式实现.首先我们基于昨天的项目,在父级工程下建lyn-sys,lyn-customer,lyn-good ...
- Java 18套JAVA企业级大型项目实战分布式架构高并发高可用微服务电商项目实战架构
Java 开发环境:idea https://www.jianshu.com/p/7a824fea1ce7 从无到有构建大型电商微服务架构三个阶段SpringBoot+SpringCloud+Solr ...
随机推荐
- JAVA——汉诺塔
大家还记得某年春晚小品那个把大象放冰箱需要几步吗? 今天,我准备写的是汉诺塔,有三个魔法石柱,分别:诚实.勇敢.正直.其中有一个石柱上从大到小,从地向上依次排放着四个魔法圆环,需要将那四个魔法圆环分别 ...
- P3954 成绩
题目描述 牛牛最近学习了C++入门课程,这门课程的总成绩计算方法是: 总成绩=作业成绩\times 20\%+×20%+小测成绩×30\%+×30%+期末考试成绩\times 50\%×50% 牛牛想 ...
- 移动端touch滑动事件监听
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- windows下PyCharm安装及使用 【转自 https://blog.csdn.net/yctjin/article/details/70307933?locationNum=11&fps=1】
一.首先安装pycharm,可以参考这篇文章:http://www.jianshu.com/p/042324342bf4 搭建环境 1.win10_X64,其他Win版本也可以.2.PyCharm版本 ...
- 常用tab选项卡代码
<div class="box"> <ul> <li class="one">课程介绍</li> <li& ...
- 关于javascript中=的返回值
今天看了一段代码,大概是这样的: function test(){ a=4; b=5; return b=a; } test();//返回? 返回值是多少呢?运行结果是4 这可以理解为将a的值赋给b以 ...
- RubyGem 下载时连接失败的解决方法
RubyGem 下载 gem 包失败,有一定原因是 https 导致的. 搜索了很久,找到一个解决的方法. 1.下载 cacert.pem,也就是 curl 的证书. http://curl.haxx ...
- .NET Core简单使用RabbitMq
RabbitMQ简介 RabbitMQ是一个开源的,基于AMQP(Advanced Message Queuing Protocol)协议的完整的可复用的企业级消息队,RabbitMQ可以实现点对点, ...
- luogu P2672 推销员 |贪心
题目描述 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有N家住户,第ii家住户到入口的距离为Si米.由于同一栋 ...
- SpringBoot整合邮件发送
本节介绍SpringBoot项目如何快速配置和发送邮件,包括简单的邮件配置.发送简单邮件.发送HTML邮件.发送携带附件的邮件等. 示例源码在:https://github.com/laolunsi/ ...