Redis缓存穿透、并发、失效 发表于 2018-01-26 | 更新于 2018-01-27 | 分类于 后端 | 评论数: 初次谈穿透、并发、失效 缓存穿透 注: 上面三个图会有什么问题呢? 我们在项目中使用缓存通常都是先检查缓存中是否存在,如果存在直接返回缓存内容,如果不存在就直接查询数据库然后再缓存查询结果返回。这个时候如果我们查询的某一个数据在缓存中一直不存在,就会造成每一次请求都查询DB,这样缓存就失去了意 ... 阅读全文 »
Redis分布式锁及优化 发表于 2018-01-17 | 更新于 23:14:22 | 分类于 后端 | 评论数: 自身业务场景 场景一: 我有一个数据服务,每天调用量在3亿,每天按86400秒计算的qps在4000左右,由于服务的白天调用量要明显高于晚上,所以白天下午的峰值qps达到6000的,一共有4台服务器,单台qps要能达到3000以上。我最终使用了redis的setnx()和expire()的分布式锁解 ... 阅读全文 »
Hystrix隔离 发表于 2018-01-04 | 更新于 15:22:11 | 分类于 后端 | 评论数: 什么是Hystrix Hystrix是Netflix开源的一款容错框架,包含常用的容错方法:线程池隔离、信号量隔离、熔断、降级回退。在高并发访问下,系统所依赖的服务的稳定性对系统的影响非常大,依赖有很多不可控的因素,比如网络连接变慢,资源突然繁忙,暂时不可用,服务脱机等。我们要构建稳定、可靠的分布式 ... 阅读全文 »
gradle+jenkins+compose自动化集成持续交付 发表于 2017-12-06 | 更新于 19:04:12 | 分类于 后端 , 运维 | 评论数: 简介 本文将介绍如何使用本地搭建的jenkins自动化持续集成工具,配合Docker swarm去为Docker容器进行编排、提供集群服务,线上发布、部署。 以下操作全部在阿里云容器服务中进行。使用阿里云容器服务的原因是:可以省去一些运维、维护的人力成本。 背景 公司开发产品使用的是spring c ... 阅读全文 »
Mysql分库分表、主从复制简介 发表于 2017-12-02 | 更新于 22:40:47 | 分类于 后端 | 评论数: 分库分表 描述: 分库分表是一种水平数据拆分,会按照如ID,用户,时间等维度进行数据拆分,拆分算法可以使取模,hash,区间或者使用数据路由表等。 问题: 跨库跨表join,排序分页,自增ID,分布式事务等问题 解决方案: 对于跨库跨表join和排序分页:可以对所有表进行扫描然后做聚合,或者生成全局 ... 阅读全文 »
Mysql死锁的产生和解决 发表于 2017-11-29 | 更新于 2017-11-30 | 分类于 后端 | 评论数: 产生死锁的四个必要条件: 互斥条件:一个资源每次只能被一个进程使用。 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 这四个条件是死锁的必要条件,只 ... 阅读全文 »
Mysql索引详解 发表于 2017-11-28 | 更新于 2017-11-29 | 分类于 后端 | 评论数: 数据库索引 是数据库管理系统中一个排序的数据结构,以协助快速查询,更新数据库表中数据,索引的实现通常使用B树(所有节点的平衡因子均为0的多叉查找树)及其变种B+树 。B+树特点是,只有在最低节点保存数据本身。节点保存主键。 存储引擎比较 InnoDB: 写多读少,支持事务,不加锁读取,支持外键, ... 阅读全文 »
锁与事务的问答对话 发表于 2017-11-27 | 更新于 18:28:30 | 分类于 后端 | 评论数: 简介 以通俗的语言和说法,让大家更好的理解锁和事务之间的关系以及相关概念。 描述 什么是锁?(先发制人) 一种保护机制,在多线程的情况下,保证操作数据的正确性/一致性, 眼镜男:有哪几种分类? 悲观锁,乐观锁,独占锁,共享锁,公平锁,非公平锁,分布式锁,自旋锁 讲讲乐观锁悲观锁吧(顺藤摸瓜 ... 阅读全文 »
Mysql索引注意事项以及关键字优化 发表于 2017-11-25 | 更新于 2017-11-29 | 分类于 后端 | 评论数: MySQL 索引使用的注意事项 索引不会包含有NULL的列 只要列中包含有NULL值,都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此符合索引就是无效的。 使用短索引 对串列进行索引,如果可以就应该指定一个前缀长度。例如,如果有一个char(255)的列,如果在前 ... 阅读全文 »
gradle-distDocker插件构建SpringBoot的Docker镜像 发表于 2017-11-07 | 更新于 2017-11-08 | 分类于 后端 , 运维 | 评论数: 通常我们使用 Dockerfile 来构建项目的Docker 镜像,但是也有需求希望使用 gralde 在编译项目的时候一起把镜像给构建并上传,所以该教程讲解了在 gradle中 编写配置 Dockerfile 并生成镜像的过程。 1. 添加依赖 教程使用gradle-docker插件来实现,在 G ... 阅读全文 »