复习资料(Redis+Solr+ActiveMQ+FastDFS...)

01 Redis

Redis k-v 的内存数据库 Redis的数据类型 5 String(set get) List(lpush lpop
rpush rpop) hash(Hset key field value,Hget key field) set(sadd spop)
zset(zadd,Zrange) java 如何操作redis? Jedis 操作redis Redis的集群的搭建:
6 台机器(3主3从)
去中心化的搭建方法

02 Solr

solr 是百万级搜索的解决方案(产品) solr 和lunce区别在于,solr是产品,lunce 是工具包和接口
solr 使用之前要配置中文分词(IK) solr 使用时,提取一个数据结构结构
goodsId,goodsName,goodsImg,goodsPrice,goodsCountNum;
把它配置solr 的schema.xml文件里面
java 操作solr 用的是solrJ
数据的导入,数据的搜索。
solr 集群的搭建
4 台机器= 一个collection=2个shard=2对主从
solr 集群在java的使用
cloudSolrServer

03 ActiveMQ

是一个消息队列。实现jms规范的队列。 什么消息的生产者,消费。 在java 里面操作activeMQ? Spring 如何做
jmsTemplate 发送消息
@Listener 监听消息 普通的java 项目里面
ConnectionFactory
Connection
Session
Topic Queue
发送Producer
接受Listener
消息的安全性如何保证?
事务模式:速度慢,安全性高
消息的签收模式:速度快,安全性低
Session 设置事务模式,以后的操作都需要手动commit;
非事务模式:自动签收 使用日志记录错误的消费或发送的错误消息
客户端签收 也是通过日志来记录消费或发送的错误消息
active的作用:
异步的解耦
流量削峰
远程调用
订单系统里面
提供购物车信息到队列。立马返回结果,不会造成雪崩,并将购物车放在队列里面。
订单服务去队列获取消息消费,在执行写数据库。
支付包支付:
支付订单,提交支付订单,此时并没有立即写数据库,而是将该订单放在队列里面排队,等轮到自己,在写数据库。

04 FastDFS

分布式的文件操作系统(存储小文件)
Tracker 记录文件的存储
Stroge:真实存储文件的位置
Storage+Nginx 结合在一起了,Nginx 来代理Storage的数据,类似使用Nginx 做了文件的服务器。
使用:
下载happyfish的源码,编译出java的客户端工具。
如何使用:
加载配置文件
构造TrackerServer
使用tracker 获取storage
使用storge 操作文件
组的概念:
一组:文件相同,主要做文件的备份
不同组:文件不同,主要做文件的负载均衡

05 Docker

是一个Linux虚拟化的标准容器,和虚拟机很像 但是docker 是进程隔离,虚拟机是物理的隔离。 docker 操作镜像
容器
构建镜像

06 ego

菜单数据的加载(读实时性。用redis 做缓存) 对菜单的操作:(树形结构的操作)
增加节点,删除节点(递归的操作) 购物车的操作:
redis+cookie+Mysql的方案
1 当用户没有登录
数据存储在Redis里面,然后cookie 存储用户的标志
2 用户一登录
通过事件驱动的方式,去做数据转移
redis->Mysql
求交集 ,差集的操作
数据转移成功后,以后都只操作Mysql,不操作redis
SSO 登录系统
公共的拦截器
用户登录,放行,没有登录,重定向的登录系统里面,并带上本次访问的url地址。
在sso登录,
用户查询,密码的比对。
登录成功后,将数据存储在redis 里面。并且重定向到之前访问的url地址里面。
在cookie 存储了一个用户的标志。
是否安全 可以对标志做个md5的加密
搜索系统:
两个:
关键字
solr的导入
定时任务增量导入
集群部署,分布式锁的问题。使用redis的sexnx来实现
solr的搜索
使用关键字,分页,高亮,排序搜索
类别的搜索
直接在数据库里面搜索即可
订单系统:
首先用户从protal 把数据传递给order-web
order-web 将用户的数据发送在mq里面,发送成功后,直接给用户返回数据。用户立马得到数据,返回结果,没有雪崩现象。
order-service 从mq 里面获取数据消费,写数据库。数据库写成功,才是下单成功(预订单)。
用户付款成功,才是完成订单。
用户付款成功的 标志是:?
支付包的扫描支付。
用户支付成功,支付宝会回调notify_ur(我们系统的接口) 地址后,修改订单的状态即可。

07 Spring boot:

spring boot 是一个spring项目的快速开发脚手架,可以简化spring项目的开发,不用写配置文件,不用初始化一下常用的对象,Spring boot 已经自动帮我们完成了这个过程。
spring boot 配置文件的加载
spring boot 和第三方软件的集成(redis,solr,activeMQ)

08 Spring cloud

是一系列软件的集成
eureka,ribbion,feign,zuul,config,oauth2.0,hiystix
eureka:注册中心 和zk作用有点类似。(集群的搭建,已经eureka docker 镜像的发布)
${SERVER_PORT:8761} 三元表达式,自己注册自己
ribbion 实现负载均衡的组件 通过一个
@LoadBalance
RestTemplate url=> ip->serverName
feign:
使用接口做远程调用的,注意参数的传递
当有两个参数是,使用@RequestParam 标记才行
feign 断路器的实现:
fallback=Fallback.class
hiystix:
断路器:
状态:
关:服务正常
开:服务异常
半开:服务异常,使用少许流量测试,服务重新上线
使用:
feign.hiystix.enabled=true
zuul:
服务的网关
动态路由的机制
统一的拦截
ZuulFliter
限流
依赖一个ratelimit 限流
zuul 集群的搭建:
通过使用nginx的方案来单机
config:
配置文件中心
使得代码和配置分离,配置文件的统一管理
数据的流向:
微服务里提取配置文件,
将配置推到git 上面,
spring cloud config server 从git 拉取配置文件,
spring cloud config client 从config server 里面拉取配置文件
配置文件的刷新:
单个服务时,引入监控的依赖,自动出现 /refresh 地址,使用该地址,发起post请求即可
多个服务时,采用spring cloud bus(消息总线)来实现。
spring cloud bus 在rabbitmq 里面新建了一个交互机,所有的微服务都连接在这个交换机上,以后只要有消息,所有的微服务都能收到。
依赖spring cloud bus 和rabbitmq两个。配置rabbitmq即可。自动出现一个/bus/refresh 的接口,有该接口,使用postman
发起一个post请求即可。
rabbitMQ:
高级的消息队列,vs activemq(rabbitmq 实现的amqp 协议,avtivemq 实现的是jms 的协议)
rabbitMQ 里面没有topic
名称解释:
交互机(Exchange):直连(路由key为具体的值),广告(没有路由key,绑定的所有队列都能收到消息),智能(路由key,可以通过“#”来匹配)
绑定:将队列和交互机绑定在一起
队列:存储消息的地方
rabbitmq的消息确认机制:
在配置开启这两个机制
到达交换机:
confirmCallback
当消息到达交换机时,回调该方法
到达队列:
returnCallback
当消息没有到达队列是,回调该方法
Oauth2.0
在第三方和资源直接设置了一个授权层,用来保护微服务
访问数据接口的设备,称为第三方
资源:微服务的数据接口
授权的配置
配置客户端:
配置密码验证
安全的配置
配置验证管理
配置登录页面
spring的安全框架:
我的用户对象实现UserDetails接口
实现里面 角色方法
implements UserDetailsService 接口
loadUserByusername(String username)登录的方法。 分布式事务:
不位于一个事务管理器里面,称为分布式事务
解决方案:
搭建统一的事务管理即可,然后让,分布式事务的参与者都加进来,都成功,在通知事务的参与方统一提交,若一个不成功,通知事务的参与方统一回滚。
框架:
lcn 解决
admin/zkpin
admin 分为服务端和客户端
服务端依赖spring boot admin server
客户端:spring boot admin client (配置服务端的地址即可)
zkping :服务端和客户端
依赖 spring cloud zkpin server

9 Dubbo 阿里远程调用的框架

服务的提供者
服务的消费者
使用流程:
1 提取服务的接口
2 服务提供者配置文件以及注解
多一个暴露接口 @Service
3 服务消费者配置文件以及注解
@Refrence
duubo 使用的是单一的长连接
duubo 原样比http快(spring cloud 开)
duubo 使用的tcp 协议,Spring cloud 使用的是Http协议
duubo 在项目里面的使用
实现前后端分离的第一种形态:
web 层放controller(提供数据接口)。以及页面(jsp)
完整的前后端分离:
web 层只放数据接口,并没有页面,页面一般都在nginx 里面
web 是服务的消费者,service 是服务的提供者

你可能感兴趣的:(随笔)