Redis

高并发秒杀系统架构详解,不是所有的秒杀都是秒杀!

て烟熏妆下的殇ゞ 提交于 2020-10-16 12:56:47
写在前面 很多小伙伴反馈说,高并发专题学了那么久,但是,在真正做项目时,仍然不知道如何下手处理高并发业务场景!甚至很多小伙伴仍然停留在只是简单的提供接口(CRUD)阶段,不知道学习的并发知识如何运用到实际项目中,就更别提如何构建高并发系统了! 究竟什么样的系统算是高并发系统?今天,我们就一起解密高并发业务场景下典型的秒杀系统的架构,结合高并发专题下的其他文章,学以致用。 这边还有各个知识点模块整理文档和更多大厂面试真题,有需要的朋友可以点一点下方链接免费领取 链接: 1103806531 暗号:CSDN 电商系统架构 在电商领域,存在着典型的秒杀业务场景,那何谓秒杀场景呢。简单的来说就是一件商品的购买人数远远大于这件商品的库存,而且这件商品在很短的时间内就会被抢购一空。 比如每年的618、双11大促,小米新品促销等业务场景,就是典型的秒杀业务场景。 我们可以将电商系统的架构简化成下图所示。 由图所示,我们可以简单的将电商系统的核心层分为:负载均衡层、应用层和持久层。接下来,我们就预估下每一层的并发量。 假如负载均衡层使用的是高性能的Nginx,则我们可以预估Nginx最大的并发度为:10W+,这里是以万为单位。 假设应用层我们使用的是Tomcat,而Tomcat的最大并发度可以预估为800左右,这里是以百为单位。 假设持久层的缓存使用的是Redis,数据库使用的是MySQL

分布式锁的三种实现方式

六月ゝ 毕业季﹏ 提交于 2020-10-16 10:31:01
思维导图总览 为什么要使用分布锁? 维护数据的一致性 在单机多线程环境中,我们经常遇到多个线程访问同一个共享资源(这里需要注意的是:在很多地方,这种资源会称为临界资源)的情况。为了维护数据的一致性,我们需要某种机制来保证只有满足某个条件的线程才能访问资源,不满足条件的线程只能等待,在下一轮竞争中重新满足条件时才能访问资源。 这个机制指的是,为了实现分布式互斥,在某个地方做个 标记 ,这个标记每个线程都能看 到,到标记不存在时可以设置该标记,当标记被设置后,其他线程只能等待拥有该标记的线程执行完成,并释放该标记后,才能去设置该标记和访问共享资源。这里的标记,就是我们常说的 锁 。 也就是说, 锁是实现多线程同时访问同一共享资源,保证同一时刻只有一个线程可访问共享资源所做的一种标记 。 与普通锁不同的是, 分布式锁 是指分布式环境下,系统部署在多个机器中,实现多进程分布式互斥的一种锁。为了保证多个进程能看到锁,锁被存在公共存储(比如 Redis、Memcache、数据库等三方存储中),以实现多个进程并发访问同一个临界资源,同一时 刻只有一个进程可访问共享资源,确保数据的一致性。 那什么场景下需要使用分布式锁呢? 比如,现在某电商要售卖某大牌吹风机(以下简称“吹风机”),库存只有 2 个,但有 5 个来自不同地区的用户{A,B,C,D,E}几乎同时下单,那么这 2

技术同步

不羁岁月 提交于 2020-10-16 10:30:09
1、rabbitmq集群工作原理 2、elasticsearch集群工作原理 3、nginx高可用 4、zabbix监控哪些项 5、redis持久化、集群模式 6、activemq集群模式 7、mq软件对比 8、MySQL高可用 来源: oschina 链接: https://my.oschina.net/u/4419179/blog/4496842

深度剖析分布式单点登录框架XXL-SSO

我怕爱的太早我们不能终老 提交于 2020-10-15 20:47:45
于2018年初,在github上创建XXL-SSO项目仓库并提交第一个commit,随之进行系统结构设计,UI选型,交互设计…… 于2018年初,在github上创建XXL-SSO项目仓库并提交第一个commit,随之进行系统结构设计,UI选型,交互设计…… 于2018-12-05,XXL-SSO参与" 2018年度最受欢迎中国开源软件 "评比,在当时已录入的一万多个国产开源项目中角逐,最终排名第55名。 于2019-01-23,XXL-SSO被评选上榜" 2018年度新增开源软件排行榜之国产 TOP 50 "评比,排名第8名。 至今,XXL-SSO已接入多家公司的线上产品线,接入场景如电商业务,O2O业务和核心中间件配置动态化等,截止2018-03-15为止,XXL-SSO已接入的公司包括不限于: 湖南创发科技 深圳龙华科技有限公司 摩根国际 印记云 一、简介 1.1 概述 XXL-SSO 是一个分布式单点登录框架。只需要登录一次就可以访问所有相互信任的应用系统。 拥有"轻量级、分布式、跨域、Cookie+Token均支持、Web+APP均支持"等特性。现已开放源代码,可以做到开箱即用。 1.2 特性 1、简洁:API直观简洁,可快速上手; 2、轻量级:环境依赖小,部署与接入成本较低; 3、单点登录:只需要登录一次就可以访问所有相互信任的应用系统。 4、分布式

2006-京淘Day12

孤人 提交于 2020-10-15 18:37:16
1. Redis入门案例 1.1 Redis常见用法 1.1.1 setex学习 /** * 2.需求: * 1.向redis中插入数据 k-v * 2.为key设定超时时间 60秒后失效. * 3.线程sleep 3秒 * 4.获取key的剩余的存活时间. * * 问题描述: 数据一定会被删除吗?????? * 问题说明: 如果使用redis 并且需要添加超时时间时 一般需要满足原子性要求. * 原子性: 操作时要么成功 要么失败.但是必须同时完成. */ @Test public void test02 ( ) throws InterruptedException { Jedis jedis = new Jedis ( "192.168.126.129" , 6379 ) ; jedis . setex ( "宝可梦" , 60 , "小火龙 妙蛙种子" ) ; System . out . println ( jedis . get ( "宝可梦" ) ) ; /* Jedis jedis = new Jedis("192.168.126.129",6379); jedis.set("宝可梦", "小火龙 妙蛙种子"); int a = 1/0; //可能会出异常 jedis.expire("宝可梦", 60); Thread.sleep(3000); System.out

我去!看完这份Spring Boot笔记,成功教面试官做人

自闭症网瘾萝莉.ら 提交于 2020-10-15 13:10:03
写在前面 Java各种开发框架发展了很多年,影响了一代又一代的程序员。但环顾当前Java开源世界中的流行技术框架,能同时满足快速开发和分布式系统架构,还是群众基础最好、功能最全、基于Spring技术的Spring Boot框架。 什么是 Spring Boot ? 解释一下:Spring Boot 可以构建一切。Spring Boot 设计之初就是为了最少的配置,最快的速度来启动和运行 Spring 项目。Spring Boot 使用特定的配置来构建生产就绪型的项目。 使用 Spring Boot 可以非常方便、快速搭建项目,而不用关心框架之间的兼容性、适用版本等各种问题,我们想使用任何东西,仅仅添加一个配置就可以,所以使用 Sping Boot 非常适合构建微服务。 正如前面所说的Spring Boot的影响力大家有目共睹,学会Spring Boot技术无疑是一个硬核涨薪技能。所以互联网雷锋(小编我)也是费尽心思为找到了一份 非常nice的学习笔记 供大家参考,需要的小伙伴查看文末获取。 本文档是基于Spring Boot 2.X版本,采用“知识点+实例”的形式编写,通过“58个基于知识的实例+2个综合性的项目”,全面深入地讲解了Spring Boot的主要技术原理和应用。 其中,我们把晦涩难懂的理论通过图文结合的方式讲解,把不便理解的名词用通俗化的文字进行讲解

redis 生产环境部署方案

℡╲_俬逩灬. 提交于 2020-10-15 08:26:12
redis在生产环境首先要保证的高可用,要做到这点有很多方案 主备 一主一从:几乎没有业务场景这样用了,可能只有一些公司内部的业务系统会这样。 一主多从+哨兵监控:主负责写,从负责读,哨兵负责监控 集群与代理方案:大数据量的情况,利用数据数据可以相对均匀的放到集群的reids主机上, coids:有图形界面,但是需要引进zk twemproxy:简单,但是存在单点问题 redis cluster:redis官方方案。 predixy:支持的功能最全,但也存在单点 来源: oschina 链接: https://my.oschina.net/joeyjava/blog/4561837

laravel项目出现Non-static method Redis::hGet() cannot be called statically的解决方法

爱⌒轻易说出口 提交于 2020-10-15 06:47:42
laravel项目出现Non-static method Redis::hGet() cannot be called statically的解决方法 参考文章: (1)laravel项目出现Non-static method Redis::hGet() cannot be called statically的解决方法 (2)https://www.cnblogs.com/ytkah/p/9308829.html 备忘一下。 来源: oschina 链接: https://my.oschina.net/u/4284321/blog/4492036

java常见学习资料链接

余生颓废 提交于 2020-10-15 06:25:58
从事java开发多年了,也收集了不少学习资料,现将之前学习过的觉得比较有用的链接分享一下 zookeeper面试题 参考: https://www.cnblogs.com/lanqiu5ge/p/9405601.html redis面试题 https://www.cnblogs.com/jasontec/p/9699242.html 参考: https://blog.csdn.net/Butterfly_resting/article/details/89668661 (里面包含了很多其他面试题及答案) redis基础面试题: https://juejin.im/post/5db66ed9e51d452a2f15d833 redis分布式锁 https://www.cnblogs.com/binghe001/p/12778853.html (由浅入深) 数据结构 二叉树,平衡二叉树,红黑树,B-树、B+树、B*树的区别 https://blog.csdn.net/wyqwilliam/article/details/82935922 算法演示 https://www.cs.usfca.edu/~galles/visualization/Algorithms.html springboot快速开发利器 https://mp.weixin.qq.com/s/i7y1_T