我的第一个微服务项目cy-fang1.0

我的第一个微服务项目cy-fang1.0

一、Cy-fang是什么

Cy-fang 次元坊是一个微服务架构的动漫网站,它能够获取网络中的免费资源,包含了以下基础功能:

  • qq邮箱注册/登录
  • 动漫搜索、播放
  • 弹幕、评论、评分
  • Ai审核弹幕、评论
  • 历史记录、收藏
  • 计算用户行为、可视化大屏
  • 喇叭、通知

二、为什么要写一个这样的微服务

这个想法是源于作者当时刚好学完spring cloud,在逛github的时候看到了开源项目dplayer,想着实践spring cloud 的时候正好用一用dplayer播放器,一举两得,于是有了这样的想法。。。。

三、技术栈和开发工具

前端:vue3,element plus,vite,dplayer,axios

后端:spring boot3,spring cloud,mybatis-plus,

数据库:mysql、redis

部署:nginx、docker

中间件:nacos、sentinel、seata、spark

开发工具:idea、vscode、navcat、apipost、chatgpt

服务器:阿里云白嫖的ecs服务器(4核8G)

工作流:dify、ollama、qwen3

可视化大屏:山海鲸可视化

四、微服务模块以及其功能

Cyfang-anime-service 负责对资源的操作。

Cyfang-calculate-service 负责与spark配合计算,为网站和大屏提供需要的数据。

Cyfang-comment-service 负责评论相关功能。

Cyfang-danmaku-service 负责弹幕相关功能。

Cyfang-log-service 负责记录管理员操作日志。

Cyfang-search-service 负责整合spider与anime模块,提供搜索服务。

Cyfang-spider-service 负责处理获取资源。

Cyfang-websocket-service 负责喇叭、通知等相关功能的服务。

Cyfang-workflow-service 负责配合dify工作流,实现审核服务。

User-service 负责用户相关的功能。

Model 实体、全局异常处理、Result

Common aop切面、JWT、ip工具类

五、这个项目干了点什么

除了微服务需要的服务注册、发现、负载均衡、兜底返回、事务等一些基本的功能以外:

1、数据加密( AES + RSA 数据加盐存储)

在登录注册功能中,选择用主流的AES+RSA加密方式,解决了对称加密密钥传输不安全、非对称加密加解密速度慢" 的问题,前端生成AES对称密钥,利用其加密传输数据,后端返回RSA公钥,利用公钥加密AES私钥发送给后端,然后利用RSA公钥解开私钥和数据。在修改、注册时,加盐安全存储密码,方式明文传输、存储敏感数据。

2、QQ 邮箱验证码登录和自定义邮箱样式( AES + RSA 数据加盐存储)

利用qq邮箱服务,来验证用户的登录,reids处理验证码,查看验证码过期、保证不频繁发送验证码。

自定义适合动漫网站风格的邮件,根据不同的请求发送不同的邮件(登录、修改密码)

样式如下(移动端)

3、资源获取、记录策略(成长型网站)

由于服务器配置低,为了尽可能的降低配置需求,但python脚本获取信息速度慢,且防止频繁的访问而被拉黑ip,兼顾用户的良好体验,网站采取不保存资源,保存资源地址的方式来记录资源。及第一次搜索会从网络中获取免费资源,以后都会在本站数据库中获取资源地址。

为了方便管理与计算,整个资源获取整合的部分分为三个:

  1. 搜索关键字,获取相关的动漫资源。
  2. 搜索某个具体的动漫,获取其详细信息。。
  3. 搜索某个具体动漫的具体集,获取其播放资源地址。

然后,什么是成长型网站,他有什么用?

其实,在正常情况下,大多数人需要搜索的动漫也就是那些比较火的动漫,没必要一下子获取所有动漫资源,且省去了需要获取哪些动漫的麻烦。。那么通过用户的搜索来实现微服务同步获取动漫,"用户搜索越多,网站资源越多"那么,我愿意称他为成长。。。。。

4、通过 dify 来实现工作流审核

为了网站的环境,审核功能是必不可少的,传统的网站用到的是人工审核,当然现在工作流、大模型的流行下,我将qwen3模型利用ollama部署,dify搭建工作流并处理/提供api来实现审核弹幕、评论的功能。(后因为服务器是cpu且配置低的原因导致效果不好,改用第三方硅基流动api)

如图效果:

5、用零代码平台"山海鲸可视化"实现可视化大屏

为什么用零代码平台实现可视化大屏,刚开始是想用echarts实现的,但是丑的惨不忍睹,,,,,,😭,想到之前学过山海鲸可视化,于是就用其做了一个大屏。

效果如下:

6、spark 计算服务

现在大部分软件都或多或少的有一些推荐功能,cy-fang当然也要有,那么spark的机器学习模型就可以发挥其作用,作者之前打过一些大数据的比赛,对一些中间件也有一些学习,于是干脆用spark实现(离线处理能力强),让其离线处理一些数据,为网站和可视化大屏提供数据支持。只不过时间紧,还未实现推荐工程。。。。

7、前端的响应式设计

现在是一套代码多端使用的时代,为此我利用flex弹性盒子、媒体查询、以及element本身提供的响应式组件,实现了适用于移动端、平板、pc的前端设计。

8、docker 打包镜像部署到服务器

大家知道,微服务的部署很麻烦,因为涉及到很多jar包和很多中间件,为此我特意学了用docker自己打包镜像,利用docker-compose.yml统一启动服务和中间件。

9、代码的规范与高复用

Vue

组件化设计:主页和管理都用layout控制组件。

复用:封装axios等工具,封装card、播放器等组件。

后端

严格按照控制层、服务层、数据访问层、xml设计,其中model数据封装层和common通用层单独为一个模块,为其他微服务提供服务。

Pom文件依赖:

六、Cy-fang 前端展示

管理页面:

七、Cy-fang 未来的扩展

细心的同学可能注意到了,我的标题用到了cy-fang1.0,这意味着这个网站会继续完善更多功能。。。

  • 封装改善 dplayer 播放器

现在的dplayer在一些功能上无法满足一个动漫网站的需求,例如像B站那样的弹幕效果,,现在的播放器显得单调,作者之后可能会看看他的源码,尝试二次封装开源。。。

  • 拼图人机验证

在登陆发送验证页面添加拼图人机验证。

  • 推荐功能

利用spark的特征工程,为用户和资源添加标签,实现推荐算法。

  • Ai 智能资源获取

现在的资源获取模块只能从某一个源获取,这样的问题是单一源可能会遇到动漫不全,或者质量不高等问题,,,那么就可以利用工作流来实现从某几个源中获取同一个资源,利用分片工具获取其几个的同一帧(图片),对比其是否存在、像素、是否打码,然后再进行收集。这样就会提升动漫资源的质量与用户体验。当然也有缺点,处理图片的大模型需要较大的GPU资源,分片动漫意味着需要下载资源,,,即使分片后删除也会消耗流量和处理时间,,,,,

八、总结

Cy-fang是针对spring cloud的一次学习实践,他的设计横简单,没有追求企业级的复杂度。但学习到的大部分基础知识点都包含在内,包含spring cloud生态中的服务注册、服务发现、负载均衡、熔断降级、兜底返回、事务等等这些基础的重要知识点,也算是我微服务架构的"敲门砖"。

学习的时候感觉发明这个东西的人真是个天才,将复杂的分布式系统问题拆解为一个个独立的组件,通过标准化的方式组合起来,既解决了高并发高流量的问题,又降低了分布式开发的门槛。但是写的时候很痛苦,经常遇到各种问题。

这个实践是作者在学校中课余时间写的,时间紧张,战线拉的比较长,前一周理清的逻辑,下一次上手时还需要重新回顾上下文,有些实现的很草率,也有些功能没有时间实现,在服务器上也没有真正做到"分布式"。

不过即便有很多不足,Cy-fang对我的意义也很重要,他将我之前学的、现在学的、一边做一边学的知识点实践在了具体的项目上。

如今期末到了,作者需要准备考试,这个项目先放一放,相信很快就有时间完善那些扩展的功能了吧。

相关推荐
洛阳泰山2 小时前
Java实现周易六爻自动排盘:根据起卦的公历时间换算农和干支时间,推算日柱空亡(旬空)
java·开发语言·周易·六爻·算卦
JavaGuide2 小时前
对标MinIO!全新一代分布式文件系统诞生!
数据库·后端
缘来是庄2 小时前
invalid comparison
java·spring boot·mybatis
文心快码BaiduComate2 小时前
Comate Spec模式实测:让AI编程更精准可靠
前端·后端·前端框架
哈哈哈笑什么2 小时前
3 次生产系统崩溃复盘:Java 后端从踩坑到封神的排查优化之路
java·后端·性能优化
用户3721574261352 小时前
如何在 Java 中将 RTF 转换为 PDF (含批量转换)
java
ServBay2 小时前
MongoDB 的文档模型与 CRUD 实战
数据库·后端·mongodb
哈哈哈笑什么2 小时前
企业级高并发分布式SpringCloud系统下,订单动态超时自动取消(最终成熟方案),使用spring-cloud-starter-stream-rabbit
分布式·spring cloud·rabbitmq
哈哈哈笑什么2 小时前
Sleuth+Zipkin 与 OpenSearch 结合是企业级分布式高并发系统的“王炸组合”
分布式·后端·spring cloud