07 2021 档案
摘要:发布确认 发布确认原理 生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始),一旦消息被投递到所有匹配的队列之后,broker就会发送一个确认给生产者(包含消息的唯一 ID),这就使得生产者知道消息已经正
阅读全文
摘要:持久化和权重分配消息 RabbitMQ 持久化简介 刚刚我们已经看到了如何处理任务不丢失的情况,但是如何保障当 RabbitMQ 服务停掉以后消息生产者发送过来的消息不丢失。默认情况下 RabbitMQ 退出或由于某种原因崩溃时,它忽视队列和消息,除非告知它不要这样做。确保消息不会丢失需要做两件事:
阅读全文
摘要:消息应答简介 消费者完成一个任务可能需要一段时间,如果其中一个消费者处理一个长的任务并仅只完成了部分突然它挂掉了,会发生什么情况。RabbitMQ 一旦向消费者传递了一条消息,便立即将该消息标记为删除。在这种情况下,突然有个消费者挂掉了,我们将丢失正在处理的消息。以及后续发送给该消费这的消息,因为它
阅读全文
摘要:work queues工作模式 work queues工作模式 Work queues,也被称为(Task queues),任务模型。当消息处理比较耗时的时候,可能生产消息的速度会远远大于消息的消费速度。长此以往,消息就会堆积越来越多,无法及时处理。此时就可以使用work 模型:让多个消费者绑定到一
阅读全文
摘要:hello world简单工作模式 hello world简单工作模式 在上图的模型中,有以下概念: P:生产者,也就是要发送消息的程序 C:消费者:消息的接受者,会一直等待消息到来。 queue:消息队列,图中红色部分。类似一个邮箱,可以缓存消息;生产者向其中投递消息,消费者从其中取出消息。 一、
阅读全文
摘要:RabbitMQ安装和使用 RabbitMQ安装 一、下载RabbitMQ安装包和erlang语言环境 二、上传到linux系统root目录下的/opt目录 三、安装erlang语言环境 rpm -ivh erlang-21.3-1.el7.x86_64.rpm 四、安装依赖包(必须联网) yum
阅读全文
摘要:RabbitMQ相关概念 MQ 的相关概念 什么是 MQ MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游“逻辑解耦+物理解耦
阅读全文
摘要:redis6.0新特性 ACL Redis ACL是Access Control List(访问控制列表)的缩写,该功能允许根据可以执行的命令和可以访问的键来限制某些连接。 在Redis 5版本之前,Redis 安全规则只有密码控制 还有通过rename 来调整高危命令比如 flushdb , KE
阅读全文
摘要:分布式锁 分布式锁简介 随着业务发展的需要,原单体单机部署的系统被演化成分布式集群系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,单纯的Java API并不能提供分布式锁的能力。为了解决这个问题就需要一种跨JVM的互斥机制来控制共享资源的访问,这
阅读全文
摘要:redis缓存的穿透、击穿和雪崩 缓存穿透 缓存穿透简介: key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会压到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。 1、应用服务器压力变
阅读全文
摘要:redis集群 redis集群简介 容量不够,redis如何进行扩容? 并发写操作, redis如何分摊? 另外,主从模式,薪火相传模式,主机宕机,导致ip地址发生变化,应用程序中配置需要修改对应的主机地址、端口等信息。 之前通过代理主机来解决,但是redis3.0中提供了解决方案。就是无中心化集群
阅读全文
摘要:主从复制 主从复制简介 主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 作用 读写分离,性能扩展 容灾快速恢复 一主多从搭建 1、创建一个文件夹用来存放redis.conf配置文件 2、复制redis.conf到文件夹中 3、
阅读全文
摘要:Redis持久化AOF AOF简介 以日志的形式来记录每个写操作(增量保存),将Redis执行过的所有写指令记录下来(读操作不记录), 只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis 重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工
阅读全文
摘要:Redis持久化RDB Redis持久化 Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中 的数据库状态也会消失。所以 Redis 提供了持久化功能! Redis 提供了2个不同形式的持久化方式。 RDB(Redis DataBase) AOF(App
阅读全文
摘要:redis事务和锁机制 Redis的事务定义 Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 Redis事务的主要作用就是串联多个命令防止别的命令插队。 Redis事务三个特性 1.单独的隔离操作 事务中的所
阅读全文
摘要:jedis操作和整合springboot Jedis项目搭建 Jedis是Redis官方推荐的Java连接开发工具。要在Java开发中使用好Redis中间件,必须对Jedis熟悉才能 写成漂亮的代码 1、导入相关依赖 <dependencies> <!--导入jedis包--> <dependenc
阅读全文
摘要:三种新数据类型 Bitmaps数据类型 现代计算机用二进制(位) 作为信息的基础单位, 1个字节等于8位, 例如“abc”字符串是由3个字节组成, 但实际在计算机存储时将其用二进制表示, “abc”分别对应的ASCII码分别是97、 98、 99, 对应的二进制分别是01100001、 011000
阅读全文
摘要:订阅与发布 订阅与发布 Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。 Redis 客户端可以订阅任意数量的频道。 Redis的发布和订阅 1、客户端可以订阅频道如下图 2、当给这个频道发布消息后,消息就会发送给订阅的客户端
阅读全文
摘要:配置文件 Units单位 配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit 大小写不敏感 INCLUDES包含 类似jsp中的include,多实例的情况可以把公用的配置文件提取出来 网络相关配置 bind 默认情况bind=127.0.0.1只能接受本机的访问请求 不写的
阅读全文
摘要:常用五大数据类型 redis常用五大数据类型 String (字符串类型) String是redis最基本的类型,你可以理解成Memcached一模一样的类型,一个key对应一个value。 String类型是二进制安全的,意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对
阅读全文
摘要:redis安装 NoSQL数据库 NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。 NoSQL 不依赖业务逻辑方式存储,而以简单的key-value模式存储。因此大大的增加了数据库的扩展能力。 不遵循SQL标准。 不支持ACID。 远超于SQL
阅读全文
摘要:sentinel组件的熔断降级和热点规则 熔断降级规则简介 熔断:用来避免微服务架构中雪崩现象,达到某个阈值条件之后自动出发熔断 原理:当监控到调用链路中某一个服务,出现异常(20个以上异常)自动出发熔断,在出发熔断之后对于该微服务调用不可用 熔断降级规则的使用 RT:根据请求响应时间熔断 异常比例
阅读全文
摘要:sentinel组件的流控规则 流控规则简介 其原理是监控应用流量的 QPS 或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。 QPS:当每秒的请求书超过一定阈值之后对当前请求进行限流 并发线程数:当服务器中创建线程数超过一定阈值之后对当前请
阅读全文
摘要:sentinel组件的安装和使用 Sentinel简介 随着微服务的普及,服务调用的稳定性变得越来越重要。Sentinel以“流量”为突破口,在流量控制、断路、负载保护等多个领域进行工作,保障服务可靠性。 通俗来讲:用来在微服务系统中保护微服务对的作用 如何 服务雪崩 服务熔断 服务降级 就是用来替
阅读全文
摘要:nacos的集群搭建和负载均衡 nacos集群概念 统一种软件服务的多个节点对一个系统提供服务称之为这个软件服务集群 预备环境准备 64 bit OS Linux/Unix/Mac,推荐使用Linux系统。 64 bit JDK 1.8+; Maven 3.2.x+; 3个或3个以上Nacos节点才
阅读全文
摘要:nacos的mysql持久化 nacos 持久化 持久化:管理的配置信息持久化 注意:默认nacos存在的配置信息持久化,默认的持久化方式为内嵌数据库derby 缺点:无法展示数据 官方建议:在生产情况下推荐将配置存入mysql数据库 注意:nacos到目前为止仅仅支持mysql mysql安装 1
阅读全文
摘要:配置中心及自动刷新 配置中心configclient开发 nacos作为统一配置中心: 1.它管理的配置文件方式是在自己所在的服务器上形成一个版本库,因此不需要再创建远程版本库 2.nacos作为统一配置中心管理配置文件时,同样也存在版本控制 1、创建一个config客户端子模块springclou
阅读全文
摘要:Nacos客户端开发和openfeign服务间通信 nacos客户端开发 ###1、新建一个模块==springclouAlibaba-nacos-client-8989== ###2、导入相关依赖 <dependencies> <dependency> <groupId>org.springfra
阅读全文
摘要:Nacos组件:环境配置 Nacos组件简介 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理 Nacos就是微服务架构中服务注册中心以及统一配置中心,用来替换原来的(eureka,consul)以及c
阅读全文
摘要:环境搭建 SpringCloudAlibaba简介 springcloud spring团队开源微服务工具集,帮助我们快速构建分布式系统(微服务系统),提供spring组织 netflix springcloud alibaba alibaba团队开源微服务工具集,帮助我们快速构建分布式系统(微服务
阅读全文
摘要:bus组件:实现远端配置修改自动刷新 实现自动配置刷新 MQ服务主机:47.106.105.80:15672 MQ端口号:15672(web管理界面) 5672(Java) 虚拟主机:ems 1、在springcloud-config-server-3344config服务端引入依赖 <!--引入b
阅读全文
摘要:bus组件:消息总线RabbitMQ安装 bus组件简介 spring cloud bus使用轻量级消息代理将分布式系统的节点连接起来。然后,可以使用它来广播状态更改(例如配置更改)或其他管理指令。AMQP和Kafka broker(中间件)实现包含在项目中。或者,在类路径上找到的任何spring
阅读全文
摘要:统一配置中心:config Config组件简介 spring cloud config 为微服务架构中的微服务提供集中化的外部支持,配置服务器为各个不同微服务应用的所有环节提供了一个中心化的外部配置。 config(配置)又称为 统一配置中心顾名思义,就是将配置统一管理,配置统一管理的好处是在日后
阅读全文
摘要:路由网关组件:Gateway Gateway组件简介 Gateway提供了一个在springmvc之上构建API网关的库。springcloudgateway旨在提供一种简单而有效的方法来路由到api,并为api提供横切关注点,比如:安全性、监控/度量和弹性。 1.特性 基于springboot2.
阅读全文
摘要:路由网关组件:zuul 网关简介 网关统一服务入口,可方便实现对平台众多服务接口进行管控,对访问服务的身份认证、防报文重放与防数据篡改、功能调用的业务鉴权、响应数据的脱敏、流量与并发控制,甚至基于API调用的计量或者计费等等。 网关 = 路由转发 + 过滤器 路由转发:接收一切外界请求,转发到后端的
阅读全文
摘要:Hystrix组件:服务降级和 Dashboard 流监控 服务降级 服务降级是指 当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理,或换种简单的方式处理,从而释放服务器资源以保证核心业务正常运作或高效运作。说白了,就是尽可能的把系统资源让给优先级高的服务。 资源有限
阅读全文
摘要:Hystrix组件:服务熔断 服务雪崩 多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务,这就是所谓的“扇出”,如果扇出的链路上某个微服务的调用响应时间过长,或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”
阅读全文
摘要:openFeign服务器间的调用 OpenFeign 组件简介 Feign是声明式Web Service客户端,它让微服务之间的调用变得更简单,类似controller调用service。SpringCloud集成了Ribbon和Eureka,可以使用Feigin提供负载均衡的http客户端 实现服
阅读全文
摘要:Ribbon实现负载均衡 环境搭建 1、新建两个数据表db02和db03 db02 CREATE DATABASE `db02`; USE `db02`; DROP TABLE IF EXISTS `dept`; CREATE TABLE `dept` ( `deptno` BIGINT(20) N
阅读全文
摘要:Ribbon服务调用 Ribbon简介 Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。 Ribbon的使
阅读全文
摘要:consul服务注册中心 consul简介 consul是一个可以提供服务发现,健康检查,多数据中心,Key/Value存储等功能的分布式服务框架,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,使用起来也较为简单。Consul用Golang实现,因此具有天然可移植性(支持Li
阅读全文
摘要:SpringCloud(四)——Eureka组件集群 环境搭建 1、新建两个模块 2、两个模块都加上eureka服务依赖和热部署依赖 <dependencies> <!-- https://mvnrepository.com/artifact/org.springframework.cloud/sp
阅读全文
摘要:Eureka组件服务注册中心 服务注册中心 所谓的服务注册中心就是在整个的微服务架构中单独提取出一个服务,这个服务不完成系统的任何的业务功能,仅仅用来完成对这个微服务系统的服务注册和服务发现,以及对服务健康状态的管理功能。 #1.服务注册中心 - 可以对所有的微服务的信息进行存储,如微服务的名称、I
阅读全文
摘要:RestTemplate客户端对象 服务调用 RestTemplate简介 spring框架提供的RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统一了RESTful的标准,封装了http链接, 我们只需要传入url及返回值类型即可。相较于之前常用的Htt
阅读全文
摘要:微服务与微服务架构 微服务概述 微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事情,从技术角度看就是一种小而独立的处理过程,类似进程的概念,能够自行单独启动或销毁,拥有自己独立的数据库。 为什么是微服务? 单体应用
阅读全文
摘要:Nginx Nginx简介 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。 ** Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是
阅读全文
摘要:异步任务、邮件任务、定时任务 异步任务 1、环境搭建 2、编写service层,实现延迟3000毫秒 package com.study.service; import org.springframework.scheduling.annotation.Async; import org.sprin
阅读全文
摘要:集成Swagger Swagger简介 Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。 Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务
阅读全文
摘要:集成SpringSecurity SpringSecurity简介 Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它实际上是保护基于sprin的应用程序的标准。 Spring Security是一个框架,侧重于为Java应用程序提供身份验证和授权。与所有Sprin
阅读全文
摘要:整合mybatis-plus(三) 查询操作 根据ID查询用户 //根据ID查询用户 @Test public void testSelectById(){ User user = userMapper.selectById(1L); System.out.println(user); } 批量查询
阅读全文
摘要:整合mybatis-plus(二) 插入数据 @Test public void testInsert(){ User user = new User(); user.setName("张三"); user.setAge(18); user.setEmail("963330213@qq.com");
阅读全文
摘要:整合mybatis-plus(一) Mybatis-plus简介 MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 特性 无侵入
阅读全文
摘要:整合mybatis 整合mybatis 一、新建springboot项目,引入以下三个依赖 二、导入mybatis依赖 <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starte
阅读全文
摘要:配置Druid数据源 Druid数据源简介 Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。 Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。 Druid 可以很好的监控 DB 池连
阅读全文
摘要:配置JDBC数据源 springData简介 对于数据访问层,无论是 SQL(关系型数据库) 还是 NOSQL(非关系型数据库),Spring Boot 底层都是采用 Spring Data 的方式进行统一处理。 Spring Boot 底层都是采用 Spring Data 的方式进行统一处理各种数
阅读全文
摘要:页面国际化 页面国际化 一、我们在resources资源文件下新建一个i18n目录,存放国际化配置文件 二、建立一个login.properties和login_zh_CN.properties文件;IDEA自动识别了国际化操作;文件夹发生改变! 三、在这上面新建一个文件 弹出如下页面:我们再添加一
阅读全文