1.27
项目:
1.项目有哪几个系统?
主要分为(三大系统):
- 自媒体端(PC端的后台)
- 平台后台管理端(PC端的后台)
- 用户APP端( 安卓 & IOS (PS:结合产品))
具体服务:
平台admin、自媒体、文章、页面静态化服务、商业、评论、搜索、推送、实时计算、智能分析、爬虫、分布式任务调度xxl-job-admin、各系统网关服务、配置中心注册中心nacos、 skywalking、告警服务等。(PS:描述是一回事,自己负责的模块又是另外一回事,所以尽管说)
2.你在项目中做了哪些系统实现了哪些功能?
根据自己所学所熟悉所擅长进行回答
1.28
项目
1.项目的技术架构是什么样的?
SpringCloud 微服务架构,Mybatis plus 数据层访问技术,有用到 微服务网关、nacos注册配置中心、xxljob 分布式定时任务、Kafka及KafkaStream消息队列跟实时流计算、全文搜索技术ES、缓存Redis技术、MySQL、MongoDB等。
如选择地方新闻网项目:
用户人员:万来人,小几万人,顶多了,自己说个准数就好
并发量:几十左右,一百多点顶多了,自己说个准数就好
日访问量:大几千,或者一万出头一点,自己说个准数就好
3.多少人开发?开发了多久?
PS:关于这个问题,外包跟公司自己产品开发 完全是两码事。(结合项目适应性回答)
时间周期:
外包:
传统的开发方式,会有具体的项目开始跟结束节点,就算分多期,每期也会有具体的时间节点。
可分3期:一期核心功能开发、二期附加功能开发、三期调整优化、迭代需求。
每期大致2个月时间(包含开发、测试、上线)。
自己公司产品:
敏捷开发,快速迭代,不断优化产品,调整市场方向,调整商业策略
如果你们公司没有其他产品并行产出,那么当前这个产品的开发周期就是你任职的时间。
人员:
产品经理:1人,确定需求及给出产品原型图。
项目经理:1人,项目管理。
前端团队:2人,根据产品经理给出原型制作出静态页面(当然也包括UI)。
后端团端:5人,实现产品的功能(你们就属于后端团队)。
测试团队:1~2人,负责测试产品的所有
1.29
项目
核心模块:
1、自媒体端文章保存-审核-自动发布流程
自媒体人保存文章并发布 -> kafka 消息 -> 异步进入自动审核流程 -> 幂等校验是否已经审核,是否需要再审核,如果不需要则直接确认消息 -> 平台端敏感词匹配(DFA算法需要了解,敏感词库需要加载到程序内存map缓存) -> 阿里云 云盾 服务(图片检测、文本检测)-> 通过、不通过(记录原因驳回)、review(转人工再审) -> 若通过则进入发布流程 -> 是否到达发布时间 -> 如若未到达,则结合 xxl-job 做定时发布(1分钟一次扫描审核通过待发布并且已经到达发布时间的文章)-> 进入发布流程细节 -> kafka异步消息 ->1、 搜索服务,增量索引文章数据到ES(文章标题、封面图、作者信息、发布时间);2、用户端文章服务,将文章数据从自媒体端同步过来;3、页面静态化服务,将文章详情数据跟文章详情HTML模板执行页面静态化程序生成完整的文章详情html文件保存到文件服务器(可以参考,课程中是直接查询的数据库未使用页面静态化)。
2、ES文章搜索
ES搜索功能是二期上线的功能,考虑到一期有已经上架的留存文章,所以在es搜索服务上线后,先用一次性脚本,对MySQL用户端已发布上架的文章做一次全量同步,索引文档到资讯文章索引库。主要字段:文章标题、封面图片、作者信息、发布时间。然后在文章发布阶段,会对具体发布的文章做增量同步索引。具体搜索,会用ES QueryString 根据用户输入关键字分词匹配 文章标题及作者,根据匹配度得分,分页输出匹配到的结果列表。然后在列表点击文章就可根据文章id找到对应的静态化html文件,展示文章详情,还会调用一些动态数据接口,获取文章点赞、评论、或侧边栏推荐、广告等数据。
1.30
项目
3、热点文章计算
主要分为两个具体流程
-
利用xxl-job 每天凌晨1点对前5天发布的文章按批量计算。计算文章热度得分,排序,取热点文章存Redis。
具体:查询出各个频道(已开放频道)下前5天发布的文章数据,利用多线程技术(线程池),根据该文章对应的用户行为数,按不同的权值得分(一次点赞5分、一次收藏10分…)分别计算每篇文章的得分数(用单线程挨个计算耗时较久,这里用线程池),利用CountdownLatch等待所有得分计算完成,由于需要按计算出的得分排序,所以需要实现 Comparable接口,重写compareTo方法,用文章的 热度得分 进行 比较。然后将 每个频道下的文章进行排序,取前50条,存储到Redis Zset结构中。 -
利用kafka stream 根据 用户对文章产生的 实时行为数据做实时流计算。计算文章热度得分,比较Redis最低得分,更新Redis热点文章。
具体:用户对于文章的行为操作数据,会利用kafka消息队列,发送消息(1001,1(1代表点赞、2代表收藏…)) 传递到 实时流处理器,处理器接收到 数据后,会开启 10s的时间聚合窗口,每10s一次聚合,然后将kv合并成新key后进行分组统计,会得到(1001