一 ,es 与 solr 的区别
1 ,相同点 :
- es 和 solr 都是基于 lucene 的搜索服务器。
- 高性能 : 他们都基于分词技术构建的倒排索引。
- 开发语言 : 都是 java 开发的。
2 ,不同点 :
- 建立实时索引时 :
1 ,solr 会产生 io 阻塞
2 ,es 不会,es 性能好 - 不断的动态添加数据的时候 :
1 ,solr 效率低下
2 ,es 不会有波动 - 分布式管理 :
1 ,solr 用 zookeeper 管理分布式
2 ,es 自身就可以 - 部署 :solr 需要部署在 web 服务器上 ( 例如 tomcat ),solr 的本质是一个动态的 web 项目
- 支持的数据格式 :
1 ,solr 支持 : xml ,json ,csv …
2 ,es 支持 : json - 应用
1 ,solr 是传统的搜索应用,对已有数据检索的时候,效率更好。
2 ,适合实时搜索,实时变化的时候,es 更好。 - 官网提供功能 :
1 ,solr 功能多。
2 ,es 只关注核心功能,如果想要更多功能,需要第三方插件。
二 ,购物车实现过程 :
1 ,购物车跟用户的关系 :
- 一个用户必须对应一个购物车
孙 : 一个用户不管买多少商品,都会存在属于自己的购物车中。 - 开发过程中 :
单点登录一定在购物车之前。
2 ,跟购物车有关的操作有哪些 :
- 添加商品到购物车。
- 展示购物车
3 ,添加商品到购物车 :用户未登录状态
- 添加到什么地方 :
1 ,redis
2 ,cookie - 例子 :
1 ,京东 : 保存在 redis 。
2 ,很多其他的小商城 : 保存在 cookie 中 - 如果用户禁用了 cookie
可以保存在 localStorage 中
4 ,添加商品到购物车 :用户已登录状态
- 存储在哪里 : redis 中
- 为了保证数据的安全性 : mysql 中也存储一份
5 ,展示购物车 :未登录状态
- 直接从 cookie 中取数据
6 ,展示购物车 :已登录状态
- cookie 数据 + redis 数据
- 如果 redis 出问题了,就 = cookie 数据 + mysql 数据
三 ,单点登录
1 ,什么是单点登录 :
- 一处登录,多出使用
- 孙 : 一个系统,由多个项目组成,多个项目之间,都共有一个用户系统
2 ,应用 :
分布式系统
3 ,架构图 :
4 ,例子 :
参观动物园流程:
检票员=认证中心模块
1.我直接带着大家进动物园,则会被检票员拦住【看我们是否有门票】,没有[售票处买票]
登录=买票
2.我去买票【带着票,带着大家一起准备进入动物园】检票员check【有票】
Token=piao
3.我们手中有票就可以任意观赏动物的每处景点。
京东:单点登录,是将token放入到cookie中的。
案例:将浏览器的 cookie 禁用,则在登录京东则失败!无论如何登录不了!
5 ,智慧的地方 :
如果 cookie 不好用,就用 localStorage
四 ,消息队列 :
1 ,技术产生背景 :
在高并发的环境下,来不及同步处理用户发送的请求,则会导致请求发生阻塞。比如说,大量的insert,update之类的请求同时到达数据库MYSQL,直接导致无数的行锁表锁,甚至会导致请求堆积很多。从而触发 too many connections 错误。
2 ,消息队列的弊端:
消息的不确定性
3 ,解决 :
延迟队列,轮询技术
4 ,推荐使用 :
activemq