当前位置: 首页 > 后端技术 > Java

分布式秒杀案例讲解教程文档

时间:2023-04-01 19:29:57 Java

程序员ken1.准备工作1.1vmware软件安装(虚拟机)教程:http://c.biancheng.net/view/7...网络配置:1)进入网络配置文件目录cd/etc/sysconfig/network-scriptsifcfg-eth0是需要设置的网络配置文件2)编辑网络配置文件192.168.157.128查看自己的ip地址:ifconfig我这里的最终配置效果:vimifcfg-eth0为以上配置1.2linux镜像下载-安装(centos6.1版本)相关教程:https://www.cnblogs.com/zhang...linux系统账号:ken密码:123456默认账号:root密码:123456(最高权限的账号)ip地址:192.168.157.128主机名:www.seckill.com1.3zookeeper-3.4.6下载-安装1.3.1上传zookeeper到/usr/zookeeper【推荐使用xftp】1.3.2cd/usr/zookeeper1.3.3unziptar-zxvfzookeeper-3.4.6.tar.gz1.3.4进入解压后的文件夹。cdzookeeper-3.4.6/1.3.5在当前目录下创建data文件夹。mkdirdata1.3.6 修改conf文件夹下的zoosample.cfg为zoo.cfg。mvconf/zoo_sample.cfgconf/zoo.cfg1.3.7修改zoo.cfg文件。vimconf/zoo.cfg1.3.9修改zoo.cfg文件。vimconf/zoo.cfg==>地址:/usr/zookeeper/zookeeper-3.4.6/data(提示输入i进入编辑模式,按esc退出编辑,输入:wq保存退出)1.3.10启动zookeeper服务。切换到bin目录【cd/usr/zookeeper/zookeeper-3.4.6/bin(这是我的)】,命令:./zkServer.shstart**1.3。11检查启动状态。命令:./zkServer.shstatus**1.3.12关闭动物园管理员。命令:./zkServer.shstop**1.4redis3.2.9下载-安装1.4.1redis下载:http://download.redis.io/rele...(我这里下载了redis-3.2.9.tar.gz)1.4.2检查gccRedis是c语言写的,所以安装需要配置c语言编译环境gcc,检查编译环境是否安装在linux,可以直接输入命令查看输入的命令如下图:gcc如果显示:-bash:gcc:commandnotfound#说明没有这个环境1.4.3安装gcc环境1.4.4下载gcc安装环境包1.4.5,通过xftp传输到Linux==>/usr/gcc1.4.6如果没有创建,修改目录mkdir/usr/gcc1.4.7解压下载的文件tar-zxvfgcc_rpm.tar.gz1。4.8进入解压目录cdgcc_rpm1.4.9执行.sh批处理文件sh./install_gcc.sh1.4.10查看版本gcc-v1.4.11安装redis1.4.12通过ftp/usr/redis1.4.13传输到linux如果没有以上目录,创建mkdir/usr/redis1.4.14unzipredisar-zxvfredis-3.2.9.tar.gz1.4.15进入解压后的目录cdredis-3.2.91.4.16可以看到Makefile在当前目录执行:make1.4.17执行makeinstallPREFIX=/usr/local/share/redis1.4.18进入目录cd/usr/local/share/redis/bin1.4.20启动服务。/redis-serve后台启动cp/usr/redis/redis-3.2.9/redis.conf。修改:daemonizeno→daemonizeyes1.4.21请根据踩坑中的配置进行修改,使用以下命令启动./redis-serverredis.confredis踩坑DENIEDRedis运行在保护模式下,因为开启了保护模式场景:Redis部署在阿里云上,redis.conf也配置注释掉绑定ip~~~bind127.0.0.1~~~Redis没有作为守护进程运行默认情况下,可以通过这个配置项修改,使用yes开启daemon,设置为nodaemonizenoprotectionmode,关闭保护模式,否则外部ip无法连接protected-modeno以上设置完成后,进入redis/bin目录,重启redis,命令。/redis-serverRedis仍然无法连接。查找后发现虽然设置了redis.conf,但是并没有重启。所以启动需要real和配置文件:./redis-serverredis.conf再次连接redis,成功,启动项目,成功。1.5kafka_2.12-2.1.1下载-安装下载地址:http://archive.apache.org/dis...1.5。1上传kafka_2.12-2.1.1到/usr/kafka【推荐使用xftp】1.3.2cd/usr/kafka1.5.3解压tar-zxvfkafka_2.12-2.1.1.tgz1.5.4进入解压后的文件夹。cdkafka_2.12-2.1.1/1.5.5修改配置文件vimconfig/server.propertiesvimconfig/server.server.config我这边是后缀为properties文件,根据实际1.5.6切换到kafka根目录:cd/usr/kafka/kafka_2.12-2.1.11.5.6startkafka:bin/kafka-server-start.shconfig/server.properties1.7jdk1.8下载-安装【kafka的运行环境,针对不同版本jdk版本也不一样]下载地址(1.8-201或者1.8-191版本):https://www.oracle.com/java/t...下面这个jdk1.8-191版本的jdk,在运行kafka的时候会报错,报错信息如下:解压命令[解压到/usr/local]:\#tar-zxvfjdk-8u201-linux-x64.tar.gz-C/usr/local配置环境:vim/etc/profile·在配置文件末尾添加:exportJAVA_HOME=/usr/local/jdk1.8.0_201exportPATH=$JAVA_HOME/bin:$PATHexportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/工具。jar2,linux相关操作2.1:永久生效,重启后不恢复打开:chkconfigiptableson关闭:chkconfigiptablesoff2.2:立即生效,重启后恢复重新启动(暂时关闭防火墙):serviceiptablesstartoff:serviceiptablesstop正确关机步骤:serviceiptablesstopchkconfigiptablesoff2.3:查看firestatusserviceiptablesstatus2.简单总结:分布、限流、缓存、主备容灾可以学习或巩固的知识:如何使用SpringBoot微服务ThreadPoolExecutor线程poolReentrantLock和SynchronizedDatabase锁机制的使用场景(悲观锁、乐观锁)分布式锁(RedissLock、Zookeeper)进程内消息队列(LinkedBlockingQueue、ArrayBlockingQueue、ConcurrentLinkedQueue)分布式消息队列(Redis、Kafka)思考改进:如何预防单个用户重复下单?如何防止恶意调用秒杀接口?用户秒支付失败怎么办?消息队列处理完成后,是否异步通知用户秒杀成功?如何保证Redis、Zookeeper、Kafka服务的正常运行(高可用)?高并发下秒杀业务如何做到不影响其他业务(隔离)?视频链接:西瓜运/b站欢迎关注我的公众号:程序员ken,编程之路,让我们一起探索,一起进步