06 2023 档案

摘要:当进行某一服务无法承受处理请求时,进行服务降级: 服务降级是服务自我保护的一种方式,或者保护下游服务的一种方式,用于确保服务不会受请求突增影响变得不可用,确保服务不会崩溃 服务降级虽然会导致请求失败,但是不会导致阻塞。 服务降级是一种应对系统故障或高负载情况下的一种应对策略,它主要依靠提供一组备选的 阅读全文
posted @ 2023-06-30 19:26 佛系粥米 阅读(448) 评论(0) 推荐(0) 编辑
摘要:package com.heima.wemedia.test.service; import com.heima.wemedia.WemediaApplication; import com.heima.wemedia.service.WmNewsAutoScanService; import or 阅读全文
posted @ 2023-06-30 17:04 佛系粥米 阅读(12) 评论(0) 推荐(0) 编辑
摘要:背景: 当审核通过后,将自媒体发布的news存入leadnews_article数据库,让移动端用户能够访问到 分布式id 随着业务的增长,文章表可能要占用很大的物理存储空间,为了解决该问题,后期使用数据库分片技术。将一个数据库进行拆分,通过数据库中间件连接。如果数据库中该表选用ID自增策略,则可能 阅读全文
posted @ 2023-06-30 14:48 佛系粥米 阅读(37) 评论(0) 推荐(0) 编辑
摘要:一、背景 用户通过自媒体微服务发布文章——》文本审核、图片审核——》用户通过文章微服务才能查看到文章 审核:第三方内容安全审核、分布式主键、异步调用、feign远程接口、熔断降级。 二、审核流程 审核方式: 自动审核:文章发布之后,系统自动审核,主要是通过第三方接口对文章内容进行审核(成功、失败、不 阅读全文
posted @ 2023-06-29 20:04 佛系粥米 阅读(195) 评论(0) 推荐(0) 编辑
摘要:文章素材关系表:关联文章内容和素材的关系,关联封面中的图片与素材的关系。 若为草稿,则保存wm_news文章,不保存其中的图片信息。 若不是草稿,则保存wm_news文章进入数据库,此外保存该文章与数据库material素材图片的关系: 1、保存文章内容图片与素材的关系 2、保存文章封面与素材的关系 阅读全文
posted @ 2023-06-29 16:51 佛系粥米 阅读(119) 评论(0) 推荐(0) 编辑
摘要:package com.heima.wemedia.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core 阅读全文
posted @ 2023-06-28 20:18 佛系粥米 阅读(18) 评论(0) 推荐(0) 编辑
摘要:package com.heima.wemedia.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.heima.model.common.dtos.Respons 阅读全文
posted @ 2023-06-28 19:40 佛系粥米 阅读(17) 评论(0) 推荐(0) 编辑
摘要:/** * 素材列表查询 * @param dto * @return */ @Override public ResponseResult findList(WmMaterialDto dto) { //1、检查参数 dto.checkParam(); //2、分页查询 IPage page = 阅读全文
posted @ 2023-06-28 17:02 佛系粥米 阅读(14) 评论(0) 推荐(0) 编辑
摘要:一、自媒体后台搭建 1、搭建自媒体平台网关:leadnew-wemedia-gateway 2、搭建自媒体微服务:leadnews-wemedia-service 二、自媒体素材管理 图片上传 1、如何获得用户信息 在自媒体网关过滤器filter中解析token,获取用户id,存入headers p 阅读全文
posted @ 2023-06-28 16:19 佛系粥米 阅读(63) 评论(0) 推荐(0) 编辑
摘要:package com.heima.article.test; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.m 阅读全文
posted @ 2023-06-28 14:36 佛系粥米 阅读(94) 评论(0) 推荐(0) 编辑
摘要:对象如图片、视频、文档等存储方式对比: 优点 缺点 服务器磁盘: 开发便捷、成本低 扩展困难 分布式文件系统: 容易实现扩容 复杂度高 第三方存储:开发简单,功能强大,免维护 收费 docker拉取镜像,创建容器 docker run -p 9000:9000 --name minio -d --r 阅读全文
posted @ 2023-06-27 20:43 佛系粥米 阅读(207) 评论(0) 推荐(0) 编辑
摘要:一、如何展示文章详情 方案1:用户点击某一条文章,根据文章的id去查询文章内容表,返回渲染页面 方案2:静态模板展示:根据文章内容通过模板技术生成静态的html文件,将该文件存入分布式文件系统minIO,并将生成好的html访问路径存入文章表中static_url。文章详情展示就通过该html去mi 阅读全文
posted @ 2023-06-27 19:46 佛系粥米 阅读(35) 评论(0) 推荐(0) 编辑
摘要:一、表结构分析 文章信息表、文章配置表、文章内容表 文章信息表:文章ID、图片、布局、作者信息等 文章配置表:是否可转发、评论、删除等 文章内容表:文章内容 其中文章配置表和文章内容表都存在文章ID字段,即与文章信息表为1对1关系 question:为什么文章表要拆分成多个表? 垂直分表:将一个表的 阅读全文
posted @ 2023-06-27 16:41 佛系粥米 阅读(55) 评论(0) 推荐(0) 编辑
摘要:一、在nacos中心编写配置文件,设置网关路由请求内容 spring: cloud: gateway: globalcors: add-to-simple-url-handler-mapping: true corsConfigurations: '[/**]': allowedHeaders: " 阅读全文
posted @ 2023-06-27 10:44 佛系粥米 阅读(42) 评论(0) 推荐(0) 编辑
摘要:一、需求分析 用户点击开始使用:登录后的用户权限较大,可以查看,也可以操作(点赞,关注,评论) 用户点击不登录,先看看:游客只有查看的权限 二、表结构分析 ap_user:APP用户信息表 package com.heima.model.user.pojos; import com.baomidou 阅读全文
posted @ 2023-06-26 19:23 佛系粥米 阅读(183) 评论(0) 推荐(0) 编辑
摘要:一、 MQ (MessageQueue):消息队列,字面来看就是存放消息的队列。也就是事件驱动架构中的Broker。 RabbitMQ是基于Erlang语言开发的开源消息通信中间件。 二、 安装RabbitMQ 拉取RabbitMQ镜像:docker pull rabbitmq:3-manageme 阅读全文
posted @ 2023-06-25 19:52 佛系粥米 阅读(11) 评论(0) 推荐(0) 编辑
摘要:一、同步调用 同步调用的调用链: 调用者需要等待服务提供者响应,如果调用链过长则响应时间等于每次调用的时间之和 调用链中的每个服务在等待响应过程中,不能释放请求占用的资源,高并发场景下会极度浪费系统资源 如果服务提供者出现问题,所有调用方都会跟着出问题,如同多米诺骨牌一样,迅速导致整个微服务群故障 阅读全文
posted @ 2023-06-25 19:32 佛系粥米 阅读(246) 评论(0) 推荐(0) 编辑
摘要:一、 镜像仓库( Docker Registry )有公共的和私有的两种形式: 1、公共仓库:例如Docker官方的 Docker Hub,国内也有一些云服务商提供类似于 Docker Hub 的公开服务,比如 网易云镜像服务、DaoCloud 镜像服务、阿里云镜像服务等。 2、私有仓库:用户还可以 阅读全文
posted @ 2023-06-25 17:23 佛系粥米 阅读(715) 评论(0) 推荐(0) 编辑
摘要:Docker Compose基本介绍 Docker Compose可以基于Compose文件帮助快速的部署分布式应用,而无需手动一个个创建和运行容器! Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 Compose文件类似于多个docker run命令集合来指导容器运行。 阅读全文
posted @ 2023-06-25 16:59 佛系粥米 阅读(29) 评论(0) 推荐(0) 编辑
摘要:一、镜像结构 镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。 镜像是分层结构,每一层称为一个Layer: 入口(Entrypoint): 镜像运行入口,一般是程序启动的脚本和参数 层( Layer):在BaseImage基础上添加安装包、依赖、配置等,每次操作都形成新的一层。 基础 阅读全文
posted @ 2023-06-23 20:44 佛系粥米 阅读(22) 评论(0) 推荐(0) 编辑
摘要:在创建容器时,可以通过 -v 参数来挂载一个数据卷到某个容器目录: docker run \ --name mn \ -v html:/root/html \ -p 8080:80 nginx \ docker run :就是创建并运行容器 -- name mn :给容器起个名字叫mn -v htm 阅读全文
posted @ 2023-06-22 17:14 佛系粥米 阅读(22) 评论(0) 推荐(0) 编辑
摘要:容器与数据耦合的问题 1、不便于修改:当要修改Nginx的html内容时,需要进入容器内部修改,很不方便。 2、数据不可复用:在容器内的修改对外是不可见的。所有修改对新创建的容器是不可复用的。 3、升级维护困难:数据在容器内,如果要升级容器必然删除旧容器,所有数据都跟着删除了。 一、数据卷:数据卷( 阅读全文
posted @ 2023-06-22 16:22 佛系粥米 阅读(24) 评论(0) 推荐(0) 编辑
摘要:容器相关命令: (1)docker run:创建容器并让容器处于运行状态 (2)docker pause:运行到暂停 (3)docker unpause:从暂停到运行 (4)docker stop:运行到停止 (5)docker start:停止到运行 【暂停是挂起,停止是杀死进程】 (6)dock 阅读全文
posted @ 2023-06-22 16:12 佛系粥米 阅读(24) 评论(0) 推荐(0) 编辑
摘要:一、镜像相关命令 镜像名称一般分两部分组成:[repository]:[tag]。 在没有指定tag时,默认是latest,代表最新版本的镜像 镜像操作命令:docker --help查看docker命令 构建镜像:将本地的DockerFile文件使用docker build构建成镜像 查看镜像:d 阅读全文
posted @ 2023-06-21 21:43 佛系粥米 阅读(40) 评论(0) 推荐(0) 编辑
摘要:虚拟机Linux操作系统中安装Docker Docker CE支持64位版本CentOS 7,并且要求内核版本不低于3.10,CentOS 7满足最低内核要求,所以在CentOS 7中安装Docker。 (1)如果之前安装过旧版本的Docker,可以使用下面命令卸载: yum remove dock 阅读全文
posted @ 2023-06-21 21:23 佛系粥米 阅读(11) 评论(0) 推荐(0) 编辑
摘要:一、镜像和容器 镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。 容器(Container):镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见。 二、Docker和DockerHub【镜像共享】 Docker 阅读全文
posted @ 2023-06-21 20:53 佛系粥米 阅读(9) 评论(0) 推荐(0) 编辑
摘要:虚拟机(virtual machine)是在操作系统中模拟硬件设备,然后运行另一个操作系统,比如在 Windows 系统里面运行 Ubuntu 系统,这样就可以运行任意的Ubuntu应用了。 Docker和虚拟机的差异: 1、docker是一个系统进程;虚拟机是在操作系统中的操作系统 2、docke 阅读全文
posted @ 2023-06-21 20:43 佛系粥米 阅读(22) 评论(0) 推荐(0) 编辑
摘要:一、项目部署的问题 大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题: 依赖关系复杂,容易出现兼容性问题 开发、测试、生产环境有差异 Docker如何解决依赖的兼容问题的? 将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包 将每个应用放到一个隔离容器去运行,避免互相干扰。 阅读全文
posted @ 2023-06-21 20:41 佛系粥米 阅读(8) 评论(0) 推荐(0) 编辑
摘要:跨域:域名不一致就是跨域,主要包括: 域名不同: www.taobao.com 和 www.taobao.org 和 www.jd.com 和 miaosha.jd.com 域名相同,端口不同:localhost:8080和localhost8081 跨域问题:浏览器禁止请求的发起者与服务端发生跨域 阅读全文
posted @ 2023-06-21 19:56 佛系粥米 阅读(135) 评论(0) 推荐(0) 编辑
摘要:请求进入网关会碰到三类过滤器:当前路由的过滤器、DefaultFilter、GlobalFilter 请求路由后,会将当前路由过滤器和DefaultFilter、GlobalFilter,合并到一个过滤器链(集合)中,排序后依次执行每个过滤器 每一个过滤器都必须指定一个int类型的order值,or 阅读全文
posted @ 2023-06-21 19:41 佛系粥米 阅读(105) 评论(0) 推荐(0) 编辑
摘要:GatewayFilter:是网关中提供的一种过滤器,可以对进入网关的请求和微服务返回的响应做处理: 过滤器工厂 GatewayFilterFactory,Spring提供了31种不同的路由过滤器工厂。 例:给所有进入userservice的请求添加一个请求头:Truth=itcast is fre 阅读全文
posted @ 2023-06-21 19:36 佛系粥米 阅读(48) 评论(0) 推荐(0) 编辑
摘要:网关路由可以配置的内容包括: 1、路由id:路由唯一标示 2、uri:路由目的地,支持lb和http两种 3、predicates:路由断言,判断请求是否符合要求,符合则转发到路由目的地 4、filters:路由过滤器,处理请求或响应 在配置文件中写的断言规则只是字符串,这些字符串会被Predica 阅读全文
posted @ 2023-06-21 17:11 佛系粥米 阅读(18) 评论(0) 推荐(0) 编辑
摘要:搭建网关服务步骤: 1、创建新的module,引入SpringCloudGateway的依赖和nacos的服务发现依赖: <!--网关依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring- 阅读全文
posted @ 2023-06-21 17:02 佛系粥米 阅读(110) 评论(0) 推荐(0) 编辑
摘要:不是所有的微服务都会让用户直接访问,因此需要添加一个网关。 网关功能: 1、身份认证和权限校验 2、服务路由【将请求转发给具体的微服务处理】、负载均衡 3、请求限流 【防止系统过载崩溃】 网关的技术实现 在SpringCloud中网关的实现包括两种:gateway、zuul Zuul是基于Servl 阅读全文
posted @ 2023-06-21 16:38 佛系粥米 阅读(45) 评论(0) 推荐(0) 编辑
摘要:Feign的最佳实践 方式一(继承):给消费者的FeignClient和提供者的controller定义统一的父接口作为标准。 orderservice中的UserClient和userservice的Controller中的queryById基本相同,因此可以定义父接口作为统一标准 但是Feign 阅读全文
posted @ 2023-06-21 16:04 佛系粥米 阅读(102) 评论(0) 推荐(0) 编辑
摘要:一、Feign底层的客户端实现: 1、URLConnection:默认实现,不支持连接池 2、Apache HttpClient :支持连接池 3、OKHttp:支持连接池 因此优化 二、Feign的性能主要包括: 1、使用连接池代替默认的URLConnection 2、日志级别,最好用basic或 阅读全文
posted @ 2023-06-21 15:36 佛系粥米 阅读(112) 评论(0) 推荐(0) 编辑
摘要:配置Feign日志有两种方式:配置文件方式和Java代码方式 全局生效: (1)方式一:配置文件方式 feign: client: config: default: # 这里用default就是全局配置,如果是写服务名称,则是针对某个微服务的配置 loggerLevel: FULL # 日志级别 ( 阅读全文
posted @ 2023-06-21 15:11 佛系粥米 阅读(215) 评论(0) 推荐(0) 编辑
摘要:http客户端Feign RestTemplate方式调用存在的问题: //通过”userservice“这个服务名称代替ip、端口 String url = "http://userservice/user/" + order.getUserId(); User user = restTempla 阅读全文
posted @ 2023-06-21 14:50 佛系粥米 阅读(95) 评论(0) 推荐(1) 编辑
摘要:配置Nacos集群 (1)进入nacos的conf目录,修改配置文件cluster.conf.example,重命名为cluster.conf (2)添加内容:集群节点信息IP 127.0.0.1:8845 127.0.0.1.8846 127.0.0.1.8847 (3)修改application 阅读全文
posted @ 2023-06-21 10:18 佛系粥米 阅读(40) 评论(0) 推荐(0) 编辑
摘要:微服务启动时会从nacos读取多个配置文件: [spring.application.name]-[spring.profiles.active].yaml,例如:userservice-dev.yaml 【nacos中定义的配置文件:服务名-环境.后缀名】 [spring.application. 阅读全文
posted @ 2023-06-21 09:33 佛系粥米 阅读(351) 评论(0) 推荐(0) 编辑
摘要:Nacos中的配置文件变更后,微服务无需重启就可以感知,通过下面两种配置实现: 方式一:在@Value注入的变量所在类上添加注解@RefreshScope 方式二:使用@ConfigurationProperties注解读取配置文件内容 package cn.itcast.user.config; 阅读全文
posted @ 2023-06-20 21:43 佛系粥米 阅读(1229) 评论(0) 推荐(0) 编辑
摘要:微服务的配置一旦更新则需要重启服务,但是在生产环境下服务器特别多,修改十分复杂。服务重启的影响也十分大。 Nacos:配置管理服务 在Nacos控制台中新建配置:填写配置名称【服务名称-环境.后缀】,yaml结尾,配置内容只填写核心有热更新需求的配置。 配置获取的步骤: 从bootstrap.yml 阅读全文
posted @ 2023-06-20 21:24 佛系粥米 阅读(82) 评论(0) 推荐(0) 编辑
摘要:nacos注册中心: 服务提供者在注册中心注册服务信息 服务消费者从注册中心定时拉取服务。【服务列表缓存,每隔30拉取更新列表】 消费者远程调用服务提供者。 服务注册到Nacos时,可以选择注册为临时或非临时实例,默认是临时实例采用心跳检测,每隔30s向注册中心发送心跳检测,当nacos发现30未收 阅读全文
posted @ 2023-06-20 20:00 佛系粥米 阅读(123) 评论(0) 推荐(0) 编辑
摘要:Nacos中服务存储和数据存储的最外层都是一个名为namespace的东西,用来做最外层隔离 group:分组 1、在nacos控制台新建命名空间,用来隔离不同环境【命名空间id】 2、修改order-service的application.yml,添加namespace:【命名空间id】 Naco 阅读全文
posted @ 2023-06-20 17:12 佛系粥米 阅读(19) 评论(0) 推荐(0) 编辑
摘要:一、集群优先规则 1、配置OrderService的集群名称。 cloud: nacos: server-addr: localhost:8848 # nacos服务地址 discovery: cluster-name: HZ #集群名称 2、开启服务测试发现order-service依然是轮询,并 阅读全文
posted @ 2023-06-20 17:04 佛系粥米 阅读(260) 评论(0) 推荐(0) 编辑
摘要:1、服务跨集群调用问题 服务调用尽可能选择本地集群的服务,跨集群调用延迟较高 本地集群不可访问时,再去访问其它集群 2、服务集群属性 (1)修改application.yml,添加如下内容: cloud: nacos: server-addr: localhost:8848 # nacos服务地址 阅读全文
posted @ 2023-06-20 16:33 佛系粥米 阅读(14) 评论(0) 推荐(0) 编辑
摘要:Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。 一、服务注册到Nacos (1)在cloud-demo父工程中添加spring-cloud-alilbaba的管理依赖: <!--nacos的管理依赖--> <dependen 阅读全文
posted @ 2023-06-20 15:32 佛系粥米 阅读(9) 评论(0) 推荐(0) 编辑
摘要:Ribbon默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间会很长。 【LoadBalanceClient定义了从可用服务列表中选择一个具体的服务实例进行访问的逻辑】 而饥饿加载则会在项目启动时创建,降低第一次访问的耗时,通过下面配置开启饥饿加载: ribbon 阅读全文
posted @ 2023-06-20 11:18 佛系粥米 阅读(183) 评论(0) 推荐(0) 编辑
摘要:负载均衡流程 IRule决定负载均衡策略 默认ZoneAvoidanceRule。 调整负载均衡规则 通过定义IRule实现可以修改负载均衡规则,有两种方式: 1、代码方式:【全局作用在orderservice无论调用哪一个服务都是用该种负载均衡方式】在order-service中的OrderApp 阅读全文
posted @ 2023-06-20 10:56 佛系粥米 阅读(14) 评论(0) 推荐(0) 编辑
摘要:一、搭建EurekaServer (1)创建项目,引入spring-cloud-starter-netflix-eureka-server的依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring- 阅读全文
posted @ 2023-06-20 09:53 佛系粥米 阅读(834) 评论(0) 推荐(0) 编辑
摘要:服务调用出现的问题: 硬编码: //2、利用RestTemplate发起http请求,查询用户 String url = "http://localhost:8081/user/" + order.getUserId(); 1、服务消费者该如何获取服务提供者的地址信息 2、如果有多个服务提供者,消费 阅读全文
posted @ 2023-06-20 09:03 佛系粥米 阅读(22) 评论(0) 推荐(0) 编辑
摘要:一、微服务拆分注意事项: 1、不同微服务:不能重复相关业务 2、微服务数据独立:不要访问其它微服务的数据库,有自己独立的数据库 3、微服务可以将自己的业务暴露为接口,供其它微服务调用 二、微服务远程调用 案例:两个服务各自提供两个功能:根据订单id查询订单功能,根据用户id查询用户信息 需求:根据订 阅读全文
posted @ 2023-06-19 21:42 佛系粥米 阅读(18) 评论(0) 推荐(0) 编辑
摘要:SpringCloud是目前国内使用最广泛的微服务框架 SpringCloud集成了各种微服务功能组件、并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验: 服务注册发现:Eureka、Nacos、Consul 服务远程调用:OpenFeign、Dubbo 服务链路监控 阅读全文
posted @ 2023-06-19 20:19 佛系粥米 阅读(20) 评论(0) 推荐(0) 编辑
摘要:单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署 优点:架构简单,部署成本低 缺点:耦合度高 分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,成为一个服务 优点:降低服务耦合、有利于服务升级拓展。但是架构复杂、难度大、适合大型互联网项目 要考虑的问题:服务拆分粒度 阅读全文
posted @ 2023-06-19 20:14 佛系粥米 阅读(15) 评论(0) 推荐(0) 编辑
摘要:项目概述:类似于今日头条,是一个新闻资讯类项目。 业务说明:用户移动App、用户自媒体平台、管理平台。 阅读全文
posted @ 2023-06-19 19:54 佛系粥米 阅读(70) 评论(0) 推荐(0) 编辑
摘要:1、什么是MVCC(解决读写冲突,写都是最新版本) MVCC的实现依赖于:隐藏字段、Undo log、Read View。 MVCC多版本并发控制,顾名思义,MVCC是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在InnoDB的事务隔离几倍下执行一致性读操作有了保证。换言之,就是为了 阅读全文
posted @ 2023-06-10 15:30 佛系粥米 阅读(175) 评论(0) 推荐(0) 编辑
摘要:锁是计算机协调多个进程或线程并发访问某一资源的机制。【并发控制】 1、读-读:不会引起问题 2、写-写:多个未提交事务相继对一条记录做改动时,需要让它们排队执行,锁实现排队。事务只有获得了锁才能做修改,事务完成提交后释放锁,其它事务去获得锁后才能对数据库进行操作。 事务的锁结构:trx:事务 代表这 阅读全文
posted @ 2023-06-09 20:59 佛系粥米 阅读(56) 评论(0) 推荐(0) 编辑
摘要:事务的四种特性:原子性、一致性、隔离性和持久性。 事务的隔离性由锁机制实现。 事务的原子性、一致性和持久性由事务的redo日志和undo日志来保证。 redo log:重做日志,提供再写入操作,恢复提交事务修改过的页操作,用来保证事务的持久性 undo log:回滚日志,回滚行记录到某个特定版本,用 阅读全文
posted @ 2023-06-09 15:24 佛系粥米 阅读(16) 评论(0) 推荐(0) 编辑
摘要:事务的隔离性由锁来实现 一、并发事务访问相同记录 1、读-读:并发事务相继读取相同的记录,不会引起什么问题。 2、写-写:并发事务对相同的记录做出改动。出现脏写问题,因此在多个未提交事务相继对一条记录做改动时,需要让他们排队执行。【加锁】 锁结构:trx信息:T1 这个锁结构是哪个事务生成的 is_ 阅读全文
posted @ 2023-06-08 14:33 佛系粥米 阅读(25) 评论(0) 推荐(0) 编辑
摘要:一、数据并发问题 针对事务的隔离性和并发性,访问相同数据的事务在不保证串行执行的情况下会出现的问题 1、脏写:对于两个事务SessionA、SessionB,如果事务SessionA修改了另一个未提交事务SessionB修改过的数据,那就意味着发生了脏写。 2、脏读:对于两个事务SessionA、S 阅读全文
posted @ 2023-06-06 21:34 佛系粥米 阅读(18) 评论(0) 推荐(0) 编辑
摘要:问题:删除操作缺乏原子性 场景 1、index1获得锁、执行具体操作、比较lock的uuid值确实和自己生成的uuid是否相等,相等则删除锁。 uuid = v1 set(lock, uuid) uuid.equals(get("lock")) 2、但是index1执行删除前,lock刚好过期时间已 阅读全文
posted @ 2023-06-06 14:14 佛系粥米 阅读(64) 评论(0) 推荐(0) 编辑
摘要:问题描述: 随着业务发展的需要,原单体单机部署的系统被演化分成分布式集群系统后,由于分布式系统多线程、多进程且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,单纯的Java API并不能提供分布式锁的能力。为了解决这个问题就需要一种跨JVM的互斥机制来控制共享资源的访问,这就是分布式锁 阅读全文
posted @ 2023-06-05 21:49 佛系粥米 阅读(376) 评论(0) 推荐(0) 编辑
摘要:一、缓存穿透 缓存穿透:key对应的数据在数据源并不存在,每次针对key的请求从缓存中获取不到,请求都会压到数据源,从而可能压垮数据源,比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库 现象: 1、应用服务器压力变大 2、redis命中率低 3 阅读全文
posted @ 2023-06-05 19:57 佛系粥米 阅读(20) 评论(0) 推荐(0) 编辑
摘要:集群: 容量不够,redis如何进行扩容 并发写操作,redis如何进行分摊 主从模式、薪火相传模式、主机宕机,导致ip地址发生改变,应用程序中配置需要修改对应的主机地址、端口等信息 之前是代理主机解决,redis的无中心化集群:任何一台服务器都可以作为集群入口 Redis集群实现了对Redis的水 阅读全文
posted @ 2023-06-05 16:13 佛系粥米 阅读(21) 评论(0) 推荐(0) 编辑
摘要:一、主从复制介绍 主机数据更新后根据配置和策略,自动同步到备机的master/slave 机制,Master以写为主,slave以读为主 好处:读写分离,性能扩展;容灾快速恢复(一主多从):一台slave从机挂掉,马上切换到另一台slave从机提供服务。 主机挂:集群 集群:一主多从 ——关联—— 阅读全文
posted @ 2023-06-04 20:48 佛系粥米 阅读(23) 评论(0) 推荐(0) 编辑
摘要:AOF(Append Only File) 以日志的形式来记录每个写操作(增量保存),将Redis执行过的所有写指令记录下来(读指令不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢 阅读全文
posted @ 2023-06-04 20:02 佛系粥米 阅读(28) 评论(0) 推荐(0) 编辑
摘要:RDB(Redis DataBase) 在指定的时间间隔内将内存的数据集快照(当前某点的数据snapshot)写入磁盘,它恢复时是将快照文件直接读到内存里【默认开启】 备份如何执行: Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件【保证数据的一致性和完整性】中, 阅读全文
posted @ 2023-06-04 19:26 佛系粥米 阅读(12) 评论(0) 推荐(0) 编辑
摘要:使用工具ab模拟测试:yum install httpd-tools ab --help:使用信息 ab -n 1000 -c 100 http://localhost8080/SecKill :一个1000请求中有100个并发操作 vim postfile 模拟表单提交参数,以&符号结尾;存放当前 阅读全文
posted @ 2023-06-04 16:56 佛系粥米 阅读(36) 评论(0) 推荐(0) 编辑
摘要:package com.atguigu.seckill.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.Redi 阅读全文
posted @ 2023-06-04 10:20 佛系粥米 阅读(9) 评论(0) 推荐(0) 编辑
摘要:Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序执行。事务在执行的过程中,不会被其它客户端发送来的命令请求所打断。 Redis事务的主要作用就是串联多个命令防止别的命令插队。 一、Redis事务三特性 Multi:开启事务,输入的命令都会依次进入命令队列中,但不会执行,直到输入 阅读全文
posted @ 2023-06-02 21:41 佛系粥米 阅读(189) 评论(0) 推荐(0) 编辑
摘要:1、在pom.xml文件中引入redis相关依赖 <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.6.0</version></dependenc 阅读全文
posted @ 2023-06-02 20:11 佛系粥米 阅读(57) 评论(0) 推荐(0) 编辑
摘要:要求 1、输入手机号,点击发送后随机生成6为数字码,2分钟有效 Random、验证码存进Redis并设置过期时间120秒 2、输入验证码,点击验证,返回成功或失败 从Redis中获取验证码比对输入验证码 3、每个手机号每天只能输入3次 incr每次发送加1,大于2之后,提醒不能发送 package 阅读全文
posted @ 2023-06-02 19:04 佛系粥米 阅读(23) 评论(0) 推荐(0) 编辑
摘要:一、新建Maven项目 二、导入Jedis依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.2.0</version> </dependency> 三、获取连接-创建J 阅读全文
posted @ 2023-06-02 16:49 佛系粥米 阅读(15) 评论(0) 推荐(0) 编辑
摘要:一、Bitmaps Bitmaps本身不是一种数据类型,实际上它是字符串(key-value),但是它可以对字符串的位进行操作 可以把Redis想象成一个以位为单位的数组,数组每个单元只能存储0和1,数组的下标在Bitmaps中叫做偏移量 * setbit key offset value 设置Bi 阅读全文
posted @ 2023-06-02 16:12 佛系粥米 阅读(9) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示