微服务SpringCloud
未读Linux常用命令-Cloud命令提示符[root@rockylinux8 ~]# #表示超级权限,当前用户是管理员/root
[rockylinux@rockylinux8 ~]$ $表示普通用户权限
[root@rockylinux8 ~] 这个格式表示[登录的账户名称@主机名 表示用户所在目录]
命令格式命令、选项、参数之间必须有空格
执行时,命令必须有,选项和参数可有可无
选项和参数同时可以有多个
执行多个选项时,可以拼写在一起,比如ls -a -l 可以写成ls -al
执行时有多个参数,参数之间必须用空格隔开
ls /root /etc
执行时,没有选项和参数
ifconfig
目录相关的常见命令
命令
作用
pwd
用于显示当前所在的完整目录
mkdir
用于创建一个目录,创建多级目录加上-p的选项
cd
用于切换目录 “.”表示当前目录 “..”表示上级目录 “~”表示用户的家目录,如果在~跟用户名,就表示要去到该用户的家目录 “-”表示回到上一次所在的目录 相对路径:相对于当前所在位置而出发的路径 绝对路径:以跟目录(/)开始的路径
...
微服务SpringCloud
未读RabbitMQ整合Spring Boot项目添加依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
application-dev.yml
spring: rabbitmq: host: localhost port: 5672 username: guest password: guest virtual-host: /
交换机\路由Key\队列的配置类
package cn.tedu.csmall.stock.webapi.quartz;import org.springframework.amqp.core.Binding;import org.springframework.amqp.core.BindingBuilder;import org.springfra ...
[秒杀]: # ‘https://npm.elemecdn.com/blogcoverimgs@1.0.0/blogs/wallhaven-p9od6j.jpg?vw=5120&vh=3840‘
如何实现秒杀秒杀前准备秒杀信息查询提交秒杀信息布隆过滤器什么是布隆过滤器布隆过滤器能够实现使用较少的空间来判断一个指定的元素是否包含在一个集合中
布隆过滤器并不保存这些数据,所以只能判断是否存在,而并不能取出该元素
也就是说,凡是要判断一个元素是否在一个集合中的操作,都可以使用它
为什么使用布隆过滤器常规的检查一个元素是否在一个集合中的思路是遍历集合,判断元素是否相等,这样的查询效率非常低下
要保证快速确定一个元素是否在一个集合中,我们可以使用HashMap
因为HashMap内部的散列机制,保证更快更高效的找到元素
所以当数据量较小时,用HashMap或HashSet保存对象,然后使用它进行判断元素是否存在,是一个不错的方法
但是如果数据量太大,每个元素都要生成哈希值来保存,我们也要依赖哈希值来判断是否存在,一般情况下,我们为了保证尽量少的哈希值冲突,需要8字节哈希值做保存
long ...
虚拟机什么是虚拟机所谓的虚拟机,就是在当前计算机系统中,又开启了一个虚拟系统
这个虚拟系统,我们要安装Linux系统
Linux概述Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于Unix系统的多用户、多任务、支持多线程和多CPU的操作系统
多数情况下在Windows系统下开发,部署在Linux中
Windows和Linux系统的版本对比
Windows(下一步操作系统)
Linux
界面
从古至今,几乎没有发生什么特大变化
每个发行版本都有自己独特的界面,并且,各个版本之间的界面不兼容
驱动
Windows的驱动一般情况下,都有官方提供的版本,但是更新比较频繁。但是有众多软件支驱动的安装,比如:“驱动精灵”
一般官方会提供。官方没出的由第三方提供。官方不给,自己写。如果自己不会写,放弃,更换其他相同功能的软件
使用
简单,自己摸索一会就会了
Linux的图形化界面依然可以保持和Windows系统的学习方式。Linux的命令行界面必须要通过系统的学习才能掌握
软件
Windows系统平台同样功能的软件选择性比较多,但是大部分都是商业化软件
...
微服务SpringCloud
未读消息队列-RabbitMQ安装rabbitMQ双击运行otp_win64_24.3.4.6.exe,点击下一步下一步即可,可以更改安装位置,需要注意路径不要有中文或空格
他的作用类似JDK,因为rabbitMQ是erlang语言开发的,所以需要环境支持
配置环境变量,在path中配置: 自己安装erlang的路径\bin
双击运行rabbitmq-server-3.10.1.exe,下一步即可,安装好后进入以下目录在该目录下打开dos窗口,输入以下运行命令
rabbitmq-plugins enable rabbitmq_management
启动结束后,访问:http://localhost:15672用户名和密码都是:guest
rabbitMQ的基本概念
Exchange接受生产者发送的消息,并根据binding规则将消息路由给服务器中的队列。
ExchangeType决定了Exchange路由消息的行为。在RabbitMQ中,ExchangeType常用的类型有三种:direct、fanout和topic。
Message Queue消息队列。我们发送给RabbitMQ的消息最 ...
Zookeeper概述zookeeper是Yahoo开发的后来贡献给了Apache,是用于分布式管理和协调的框架。
提供了中心化的服务:统一的配置、统一的命名、提供分布式锁,以及提供组服务
安装单机模式就是解压就可用,只能使用一部分功能,往往是学习阶段刚入手使用
伪分布式模式是在一台机器上,利用多线程模拟不同的角色,来达到集群的效果,能够启动大部分功能,可以满足学习阶段使用
完全分布式模式在多台机器上安装,每一台机器都扮演自己的角色,一般情况下生产模式中使用
单机解压即可,注意路径中没有中文和空格
找到conf/zoo_sample.cfg文件,复制一份更名为zoo.cfg,
zoo.cfg中有一个dataDir属性,是ZK运行期间数据的存放目录
直接双击zkServer.cmd脚本运行ZK的服务端即可
找到zkCli.cmd脚本运行ZK的客户端有以上提示,就是客户端连接成功,如果只显示了None paht:null,回车即可有以上提示
ZK特点
ZK的底层是一个树状结构,根节点是 /
ZK自带了一个子节点 /zookeeper
ZK中没有相对路径的概念,只有绝对路径
ZK中每一个节 ...
Quartz是java编写的,使用时直接导入依赖即可
为什么需要Quartz什么是任务调度(计划任务)
所谓任务调度,就是执行某些具体动作的时间计划,也是计划任务
Quartz的调度功能更详细的指定时间,比Timer功能多
Quartz核心组件Scheduler:调度器
Job:任务
Trigger:触发器
调度器来配置,计划什么时间触发什么任务,简单来说就是调度器规定什么时间做什么事情
job(工作\任务):Quartz实现过程中提供一个接口,接口中有一个方法execute( )。 在这个方法中编写要进行的操作(具体要执行的任务) 我们还需要一个JobDetail的类型的对象,Quartz每次执行job时,会实例化Job对象,去调用execute( ) JobDetail是用来描述Job实现类的静态信息
Trigger(触发器):能够描述触发指定的Job规则,分为简单触发和复杂触发 简单触发可以使用SimpleTrigger实现类,功能类似timer 复杂触发可以使用CronTrigger实现类,内部使用Cr ...
Redis非关系数据库,基于内存存储,存储方式是k-v
端口号默认是6379
缓存使用原则什么时候,什么样的数据能够保存在Redis中
数据量不能太大
保存的数据一般是常用且不会是数据库中频繁修改的数据
使用的越频繁,Redis保存这个数据越值得
缓存淘汰策略前提:Redis将数据保存在内存中,内存的容量是有限的,如果Redis服务器的内存已经全满,现在还需要向Redis中保存新的数据,返回默认错误:noeviction ,如何操作才能避免
就是需要缓存淘汰策略
allkeys-random:从所有的数据中随机删除
volatile-random:有过期时间的数据中随机删除
volatile-ttl: 删除剩余有效时间最少的数据
allkeys-lru:所有数据中删除上次使用时间最久的数据
volatile-lru:有过期时间的数据中删除上次使用时间最久的数据
allkeys-lfu:所有数据中删除使用频率最少的数据
volatile-lfu:有过期时间的数据中删除使用频率最少的数据
缓存穿透数据在redis和数据库中都不存在,这就叫穿透
如果这个请求反复出现,就 ...
消息队列消息队列(Message Queue)简称MQ
消息队列是采用“异步(两个微服务并不需要同时完成请求)”的方式来传递数据完成业务操作流程的业务处理方式
为什么要使用消息队列微服务项目普通存在远程调用的关系,这些操作时同步的
这里的“同步”指:消费者A调用生产者B之后,A的线程会进入阻塞状态,等待生产者B运行结束返回之后,A才能运行之后的代码
Dubbo消费者发送调用后进入阻塞状态,这个状态表示该线程仍占用内存资源,但是什么动作都不做,如果生产者运行耗时比较久,消费者就会一直等待,如果消费者利用这个时间可以处理更多请求,业务整体效率会提升。
实际情况下,Dubbo有些必要的返回值必须等待,但是不必要等待的服务返回值,我们可以不等待去做别的事情,这种情况下我们就要使用消息队列
消息队列的经典使用场景异步调用
服务解耦
流量削峰(削峰填谷)延迟处理时间
面试题消息队列的特征(作用)
利用异步的特性,提供服务器的运行效率,减少因为远程调用出现的线程等待\阻塞
削峰填谷:在并发峰值超过当前系统处理能力时,我们将没处理的信息保存到消息队列中,在后面出现的比较空闲的时间中去处理,直到所有数据 ...
Kafka什么是kafkaKafka是由Apache软件基金会开发的 一个开源流处理平台,由Scala语言编写。该项目的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台。Kafka最初是由LinkedIn开发,2011年开源
kafka集群结构
broker:节点,集群有多大,broker就有多少,要是整数型且唯一
topic:主题,kafka面向主题存储,分门别类的存储数据
partition:分区,可以应对更多的数据,数据量允许超过单节点kafka的大小
leader:负责日常的读写操作
follower:负责备份leader的数据,如果leader,会从follower中选出新的leader,继续工作
消费者组:可以提高消费者性能,只要消费的组id是同一个,那么就是一个组的,一个组的消费者实例不允许多余分区的个数
kafka的特征和优势
Kafka作为消息队列,他和其他同类产品相比,突出的特点就是性能强大
kafka将消息保存在硬盘中
kafka对硬盘的读取规则进行优化后,效率能够接近内存
硬盘的优化规则主要依靠:顺序读写、零拷贝、日志压缩等技术
ka ...