黑马头条项目

项目概述

随着智能手机的普及,人们更加习惯于通过手机来看新闻,因此对于移动资讯客户端的需求也越来越高,黑马头条项目正是在这样背景下开发出来

黑马头条项目采用当下火热的"微服务+大数据"技术架构实现。本项目主要着手于获取最新最热新闻资讯,通过大数据分析用户喜好精确推送咨询新闻

相关技术

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中的

1.2. 结构化一下 1.3. 图形化一下 1.3.1. 运营商后台 1.3.2. 商家后台 1.3.3. 网页前台 参考京东 2. 技术选型 前端:angularJS + Bootstrap 后台:SSM( springmvc+spring+mybatis) 数据库:mysql,使用mycat读写分离 开发模式:SOA 服务中间件:dubbox,需要和zookeeper配合使用 注册中心:zookeeper 消息中间件:Activemq,使用spring-jms 负载均衡:nginx 搜索:solr集群(solrCloud),配合zookeeper搭建, 使用spring-data-solor 缓存:redis集群,使用spring-data-redis 图片存储:fastDFS集群 网页静态化:freemarker 单点登录:cas 权限管理:SpringSecurity, 跨域:cros 支付:微信扫描 短信验证:阿里大于 密码加密:BCrypt 富文本:KindEditor 事务:声明式事务 任务调度:spring task 所有的技术,都可能涉及到为什么用?怎么用?用的过程中有什么问题? 3. 框架搭建 3.1. 前端 理解baseControler.js、base.js、base_pagination.js,以及每一个xxxController.js里面都公共的做了些什么。 baseControler.js 分页配置 列表刷新 处理checkBox勾选 xxxControler.js 自动生成增删改查 base_pagination.js 带分页 base.js 不带分页 3.2. dao 使用了mybatis逆向工程 4. 模块开发 逐个模块开发就好 4.1. 学会评估模块难不难 一个模块难不难从几方面考虑。 涉及几张表? 1,2张表的操作还是没有什么难度的。 涉及哪些功能? 增删改查,批量删除。 前端展示? 分页列表、树形、面包屑、三级联动、内容格式化。 4.2. 举几个简单模块的例子 4.2.1. 品牌管理 单表 分页、新增、删除、修改 4.2.2. 规格管理 2张表 分页、新增、删除、修改、显示优化(显示列表内容的一部分) 4.2.3. 模板管理 2张表 分页、新增、删除、修改、显示优化(显示列表内容的一部分) 4.2.4. 分类管理 单表 4.2.5. 商家审核 单表 4.3. 举一个复杂模块 4.3.1. 商品新增 需要插入3张表,tb_goods、tb_goods_desc、tb_item 前端:三级联动、富文本、图片上传、动态生成内容 4.3.2. 商品修改 需要从3张表获取数据,然后进行回显。 4.4. 典型模块设计 4.4.1. 管理后台 商品新增、商品修改 4.4.2. 前台页面 搜索模块实现 购物车模块实现 支付模块实现 秒杀模块实现 5. 开发过程中问题&优化 1.1. 登录 单点登录怎么实现 session怎么共享 1.2. 缓存 哪些场景需要用到redis redis存储格式的选择 怎么提高redis缓存利用率 缓存如何同步 1.3. 图片上传 图片怎么存储 图片怎么上传 1.4. 搜索 ​ 怎么实现 数据量大、 并发量高的搜索 怎么分词 1.5. 消息通知 ​ 哪些情况用到activeMq 1.6. 优化 seo怎么优化 怎么加快访问速度 1.7. 秒杀 ​ 怎么处理高并发 ​ 秒杀过程中怎么控制库存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值