首先你有一个后端JAVA应用,当前端请求http过来之后,你需要去查存储在MySQL里面的库表数据来进行增删改查吐给前端应用。
    但是当前端存在某个场景:频繁的请求某一接口,并且这一接口不怎么变化;那么后端需要缓存这一部分数据,这时就需要Redis出场了,它就是专门为缓存而生的。但是它到底有什么特点呢?正如Redis自己介绍的:Redis数据读写速度非常快,因为它把数据都读取到内存当中操作。这就决定了他与MySQL的区别:MySQL大而全,Redis小而精。所以Redis就有了它的用武之地,专门做缓存用。
    此时前端又出现场景了,就是这部分的数据主要是配置化的,不会怎么变化。比如活动页定期上下线,个别图片,联系人电话等。这部分就可以配置在Apollo里,专门用来配置配置化的数据。
    随着前端产品的用户量越来越大,数据动辄几万条,几十万条,此时服务器的压力扛不住了,这时怎么办?这就该Kafka出场了。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。那它怎么做的呢?就是它成很多队列的形式,等待到来的标识,告诉它何时消费。消费的时候就会将前端一次请求的比如10万条数据,分10批次,一次1万条缓解服务器压力的形式来实现分批查询。RocketMQ跟Kafaka差不多,都是来缓解服务器压力的,这个看架构选型了。
    服务器的压力解决了,但是数据量大导致查询库表的时间就变得长了,从而前端用户回显响应数据的时间也变长了。那么就该轮到ES搜索引擎:Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。ES搜索引擎分片查询做了优化升级,会明显比传统MySQL分片方式要快,并且在这层面还可以根据业务特点做优化。所以针对大数据量的场景目前优化方案可以采用ES搜索引擎。