ElasticSearch第二弹(IK分词器)
IK分词器什么是IK分词器?分词:即把一段中文或者别的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,默认的中文分词器是将每个字看成一个词,比如"我爱可星"会被分为"我",“爱”,“可”,“星”,这显然不符合我们的要求,所以我们需要安装中文分词器IK来解决这个问题。IK提供了两个分词算法:ik_smart和ik_max...
IK分词器什么是IK分词器?分词:即把一段中文或者别的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,默认的中文分词器是将每个字看成一个词,比如"我爱可星"会被分为"我",“爱”,“可”,“星”,这显然不符合我们的要求,所以我们需要安装中文分词器IK来解决这个问题。IK提供了两个分词算法:ik_smart和ik_max...
ElasticSearch1、什么是ElasticSearch?Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web 接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠...
高并发保护常用方案缓存:缓存的目的是提升系统访问速度和增大系统处理容量降级:降级是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行限流:限流的目的是通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理为什么需要限流在一个高并发系统中对流量的把控...
为什么要链接隐藏,如何隐藏为了避免F12或着抓包获取到秒杀链接然后通过不正当手段自动化秒杀,下面我们将接口路径进行隐藏,只有当点击秒杀按钮时才能成功验证。用户在下单前,先发出一个生成Md5 hash值的请求,根据抢购商品id和用户Id用Md5加密算法和随机盐生成一个hash值存到redis中,在redis中设置过期时间,等用户真正下单时发起的下单请求(秒杀请求)携带着Md5的hash值和re...
为何需要异步下单在秒杀系统用户进行抢购的过程中,由于在同一时间会有大量请求涌入服务器,如果每个请求都立即访问数据库进行扣减库存+写入订单的操作,对数据库的压力是巨大的。如何减轻数据库的压力呢,我们将每一条秒杀的请求存入消息队列(例如RabbitMQ)中,放入消息队列后,给用户返回类似“抢购请求发送成功”的结果。而在消息队列中,我们将收到的下订单请求一个个的写入数据库中,比起多线程同步修改数据...
Redis缓存整合在高并发的环境下数据库成为系统的短板,所以引入缓存,作为数据库前的一道防线,避免所有的请求直接走数据库,降低数据库的压力,数据库层只承担“能力范围内”的访问请求。由于一个项目中有不同模块的功能,所以在Redis封装时需要创建一个业务前缀拼接在Key前面,便于区分各个模块。前缀接口:/** * Key的前缀接口 * 用来区分各个模块 */ public interfac...
分布式项目中要实现单点登录(SSO - Single Sign On):对于同一个客户端(例如 Chrome 浏览器),只要登录了一个子站(例如 a.com),则所有子站(b.com、c.com)都认为已经登录。比如用户在登录淘宝后,跳转到天猫时就已经登录了。通过redis缓存和cookie实现单点登录:登录接口逻辑处理: @ResponseBody @RequestMappi...
Direct(路由选择)订阅消息模型在fanout消息模型中,一条消息会被所有已订阅的消费者消费。而在某些情况下,我们希望这个消息被特定的消费者消费。此时就可以用exchange中的Direct类型来实现,在fanout中,消息的转发会直接忽略Routing Key,而在Derict中,则会将消息自带的Routing Key与exchange的Routing Key相比较,相等则发送到该交换...
Fanout消息模型fanout扇出 也称广播在广播模式下,消息发送流程是这样的:可以有多个消费者每个消费者都有自己的queue队列(临时,消费完断开连接后自动删除)每个队列都要绑定到exchange交换机生产者发送的消息,只能发送到交换机,交换机决定来发送给哪个队列,生产者无法决定交换机把收到的消息发送给每一个队列,实现一条消息被多个消费者消费生产者public class Provide...