项目概述
随着智能手机的普及,人们更加习惯于通过手机来看新闻,因此对于移动资讯客户端的需求也越来越高,黑马头条项目正是在这样背景下开发出来
黑马头条项目采用当下火热的"微服务+大数据"技术架构实现。本项目主要着手于获取最新最热新闻资讯,通过大数据分析用户喜好精确推送咨询新闻
相关技术
SpringBoot:用于构建独立运行的后端服务。
SpringCloud Alibaba:提供微服务架构的框架套件,支持服务注册、负载均衡、熔断等功能。
MyBatis/MyBatis-Plus:方便对数据库进行操作,处理业务逻辑。
Nacos : 作为微服务项目的注册中心、配置中心。
Gateway:作为微服务网关,处理路由、认证与限流。
RabbitMQ : 消息中间件,用来实现服务间的异步调用,降低耦合。
Seata:用于分布式事务管理,确保数据一致性。
OpenFeign:用于服务之间的HTTP请求调用。
MySQL:作为主数据库,存储订单、用户、服务等核心业务数据。
Redis:用于缓存高频访问数据(如门户、服务信息、订单信息),提升系统性能。
Redisson:实现分布式锁,保障数据一致性。
Elasticsearch:用于服务项目搜索等功能,支持全文检索。
Nginx:实现反向代理、负载均衡。
MinIO:采用Golang实现的对象存储服务,可以做为云存储的解决方案用来保存海量的图片,视频,文档
Freemarker:生成静态页面的技术
MongoDB:由C++语言编写,是一个跨平台的面向文档的数据库,它支持的数据结构非常松散,是类似JSON的BSON格式,因此可以存储比较复杂的数据类型
主要流程
管理端
管理员使用:主要用于系统管理、文章分类管理、用户审核等操作
主要职责:
1.频道管理:频道是文章的分类,管理员可以对频道进行增删改查操作,频道属于自媒体库,因此应该将其操作放入自媒体微服务,先创建出自媒体微服务,导入依赖添加配置,频道管理有频道列表查询和频道新增两个功能,频道列表查询可以实现根据频道名称模糊查询分页频道列表,使用MybatisPlus的分页查询实现,新增频道,将前端传入的信息,保存到频道信息表中,最后修改网关。
2.用户审核列表:我们系统的读者用户数据保存到了leadnews_user库中的ap_user表中,如果有的读者想称为媒体人则需要进行申请,一旦读者发起申请,系统就会将其数据保存到leadnews_user库中的ap_user_realname表中,然后我们就可以从这个表中查询出数据来,然后做审核,用户审核的功能包括按照状态查询用户认证列表,用户审核的驳回,审核通过。按照状态查询用户认证列表功能使用MybatisPlus的分页查询实现,用户审核的驳回功能将状态修改成已驳回的状态即可,审核通过,1.需要修改用户库的ap_user_realname表的status为9(审核通过),2.修改用户库的ap_user表的flag=1(自媒体人),3.将用户信息复制到自媒体库的wm_user表,4.将用户信息复制到文章库的ap_author表--heima-leadnews-article ,最后通过开启分布式事务保证数据的一致性。
自媒体端
自媒体人使用:主要用于自媒体人发布文章等操作
主要职责:
1.素材管理:在保存素材时,引入了Minio用来存储图片,MinIO是采用Golang实现的对象存储服务,可以做为云存储的解决方案用来保存海量的图片,视频,文档,MinIO非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,自媒体用户登录自媒体端后台可以上传图片,后台将图片上传到minio,同时要保存一份数据到表中,方便后期管理。保存图片之前,需要先知道是哪一位自媒体人登录了当前系统,也就是需要确定哪个自媒体人上传了图片,具体流程:1,上传图片需要携带token 2,首先请求到网关服务,解析token是否有效,如果有效,解析后把用户数据设置到下一级请求的header中 3,在自媒体微服务中使用拦截器解析header中的