ElasticSearch功能模块的介绍
数据是怎么存入es中的?
前端发送了一博客,后端控制器把博客信息存在数据库中,并且返回一个把博客存在数据库中的具体的id,我们把那个博客id放到MQ里面监听这个id
博主发表了博客之后,MQ会监听到这个id,并且判断数据库里面是否存在这个id的博客,存在的话(表示发过博客)就用新的博客数据覆盖掉原来的数据(es中的博客数据),如果不存在则把博客的数据插入到es中
es分页查询并且高亮显示
- 构建条件搜索
- 分页
- 精准匹配
- 高亮显示
- 执行搜索
- 解析结果
项目中那部分使用到了es
- 搜索博客
- 搜索输入框的下拉显示
redis功能模块的介绍
热搜功能:前端页面的输入框输入一个关键字,后端MQ监听到这个关键字之后把关键字插入到redis里面,原因是redis里面有一个数据类型是zSet,这个数据类型里面有一个分数属性,我们可以通过这个分数属性进行排序,在插入redis的时候我们会判断此时redis里面是否存在这个关键字,如果存在我们就让分数加1,否则就把关键字插进去,最后根据分数降序排序输出
RabbitMQ消息队列功能介绍
RabbitMQ中有很多模式供我们使用,比如路由模式、广播模式。我们在RabbitMQ中使用的是路由模式,因为广播模式是把消息发给所有的消息队列,路由模式是把消息发给指定的消息对列
一个RabbitMQ中有很多个交换机,每个交换机里面又有很多消息队列,每个消息队列存放不同的信息,除此之外,还有一个消息组件来监听这些消息队列,进而实现对应的功能
Websocket消息推送功能介绍
作者发布博客的时候,会向后端发送一个存储user对象的session和作者的id
后端用CurrentHashMap存储登录的用户对象,把后端传过来的session赋给WebSocket的session,然后判断map中是否存在这个用户,如果不存在的话在线数加1,将当前对象放入连接池(主要用两个注解完成,一个是onOpen,一个是onClose,onOpen用来接入连接,onClose用来断开连接)
博客信息会存进数据库并返回一个博客id,MQ监听到这个id之后,就会去数据库里面取出博客信息,还会去用户关系表里面找出发布博客作者的所有粉丝,推动并闪烁显示,如果一个作者发布了很对条博客的话,会存进一个list里面遍历输出