前言

这是目前国外比较火的国外英文版云购夺宝网站项目开发代码解析项目,是从在国内版上面进行二次开发的,里面有很多算法功能可以让大家参考和学习,是非常不错的一个项目,国内的拼多多差不多也是参考这个来做修改而来的,所有希望大家能够喜欢,先上几张图片先。

正文


这个是中英版切换的

第一章先介绍一下,里面的一个Redis功能,我是借助服务器来实现的,现在给大家介绍一下

实现主从复制

每一台Redis服务器启动时,默认都是主服务器(Master),可以通过命令info replication查看,如下图所示:

开始实操搭建一主二从的环境,如下:

1. 配置文件修改

由于是在同一台机器上模拟,所以将redis配置文件拷贝三份出来,主要修改项如下:

  • 配置文件名称:分别为redis.conf、redis6388.conf、redis6399.conf;

  • port:端口,三个配置文件分别修改为6379、6388、6399,这是为了避免同一台机器演示端口冲突;

  • pidfile:修改此文件名,避免文件冲突,改文件名即可,分别修改为redis.pid、redis6388.pid、redis6399.pid;

  • dbfilename:持久化文件名,避免持久化文件冲突,分别修改为dump.rdb、dump6388.rdb、dump6399.rdb;

2. 启动redis服务器

然后分别指定配置文件启动redis-server,在redis中bin目录下执行./redis-server redis.conf、./redis-server redis6388.conf、./redis-server redis6399.conf命令即可,可以通过命令ps -ef | grep redis查看启动redis效果,如下:

3.1 使用命令实现主从关系

默认情况下,启动的三台服务器默认都是主服务器,现在可以通过简单的命令实现一主二从的关系,这里以6379这台服务器为主,6388和6399两台服务器为从,配置主从关系只针对从节点服务器配置即可,如下:

  1. 分别连上6388和6399两台服务器,执行slaveof masterip masterport即可:

  2. 从节点显示没问题,看看主节点状态信息,连上6379这台看看,如下:

  3. 主从关系维护好了,接下来看看数据复制,通常主节点负责写,将数据同步到从节点,从节点负责读; 现在三台服务器都没数据,接下来往主节点中写入点数据,看看是否能同步到从节点:

注:如果通过命令方式实现主从关系,那当从服务器重启时,主从关系就丢了,还得手动再执行命令,所以推荐配置文件的形式进行配置;

3.2 通过配置文件实现主从配置

还是很简单的,主服务器不用动,仅修改从服务器配置文件,然后重启即可,根据前面章节的学习经验,打开配置文件,直接找到REPLICATION模块进行如下配置修改:

  • replicaof <masterip> <masterport> :指定主节点ip和端口即可,如:replicaof 127.0.0.1 6379;

  • masterauth <master-password>:指定主节点密码,如果主节点配置密码,直接通过这配置就行;

修改完这两项,重启服务器即可,和命令行一样简单,只是通过配置文件搭建的主从关系不会因为关闭服务器而丢失;这里配置文件的演示就不截图了,只是实现方式不一样,其他都是和命令行一致;

小总结

  • 配从不配主,即只针对从服务器配置即可,主服务器无需配置;

  • 一个主节点有多个从节点,从节点只能有一个主节点;从节点也可以作为其他从节点的主节点,如下:

    这种方式的演示截图就不提供了,小伙伴实操一把,这里说明一下,虽然6388是6399的主节点,但扮演的角色还是6379的从节点,只是它下面连接了其他从节点而已;

  • 如果用命令方式实现主从,主服务器断开后,重新连接,主从关系还在;从服务器断开之后重连关系消失,需要手动执行命令重新指定主节点;

  • 如果希望断开重连主从关系还在,推荐配置文件方式实现;

实现主从复制的搭建是不是很简单,不管是命令还是配置文件的方式,都很轻松实现;但小伙伴是不是也有疑问: 主从节点之间的数据是如何同步的?关于主从复制的其他参数有什么用?

主从复制原理

通过上面实操,在主服务器中写入的数据,在无感知的情况下就同步到各个从服务器,中间到底经历了什么呢? 接下来简单的了解一下;

在Redis2.8之前同步方式都以全量方式同步,之后为了提高效率,数据复制方式分为两种,一种为全量复制,一种为部分复制:

  • 全量复制:即将主服务器中的数据,全部同步到从服务器;一般是在从服务器启动初始化数据的时候进行全量同步;

  • 部分复制:即将未同步的增量数据,同步到从服务器,无需全部再同步一遍;一般用于因网络中断等无法同步数据的情况,待恢复正常之后,将中断期间数据进行部分同步;

为了方便查看日志分析,使用两台redis服务器进行搭建主从, 将之前搭建的关系去除,通过修改配置文件重启即可;

这里以6388作为主节点(Master),6399作为从节点(Slave),当连接6399执行命令slaveof 127.0.0.1 6388配置主从关系时,主从节点分别打印日志如下:

上图是刚开始建立主从关系时,进行了全量复制,大概流程如下:

简要说明:

  1. 从节点与主节点建立连接,然后发送同步请求psync;

  2. 主节点给从节点发送信息,replid和offset,这两个参数后续是判断是否部分复制的关键数据;

  3. 主节点fork子进程将全部数据生成RDB文件;

  4. 主节点期间接收到的写命令存入到复制缓冲区中;

  5. 当主节点RDB文件完成之后发送给从节点;

  6. 从节点接收到文件,先清空老数据;

  7. 从节点清空数据后,加载接收到的数据到内存中;

  8. 主节点发送复制缓冲区中的数据到从节点;

  9. 从节点接收到命令并执行,最终同步到最新数据;

主从关系是通过网络进行通讯,可能出现网络中断或网络抖动情况,导致短时间的数据不能及时同步到从节点上,理想情况下,当连接恢复的时候,希望只同步中断期间的数据,从而提高同步效率,流程大概如下:

简要说明:

  1. 当主从之间由于网络中断时,从节点会尝试重连主节点;

  2. 在此期间,主节点接收到的写命令会记录到复制缓冲区中;

  3. 当网络恢复,从节点连上主节点,会请求发布同步请求psync,并带上之前主节点发送过来的replid和offset;

  4. 主节点接收到从节点的请求,会验证接收的replid与主节点replid是否匹配,不匹配会进行全量复制;还会验证offset数据偏移量是否在合法范围内,如果中断期间数据量过大,导致复制缓冲区的数据超出,主从节点的offset数据偏移量不一致,也会进行全复制;

  5. 当从节点传递过来的replid和offset验证通过时,则进行部分复制,并记录最新的offset;

总结

主从复制演练看似简单,但还需要不断在实践中获取经验,搭配相关配置参数,从而使得更加适合应用场景;配置没有固定都一样,而是应用场景是否适合。随着主节点宕机不能自动选举的问题,下次在此基础上说说哨兵模式,让自动选举不是问题

国外英文版云购夺宝网站项目开发制作代码解析相关推荐

  1. 一元夺宝类项目的被拒

    2019独角兽企业重金招聘Python工程师标准>>> 发件人 Apple 3. 1.1 BUSINESS: PAYMENTS - IN-APP PURCHASE 5. 3 LEGA ...

  2. 夺宝网站服务器配置,【合区公告】“夺宝奇兵”“决战昆仑”服务器数据互通操作...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 为使游戏拥有更良好的环境,同时应广大玩家要求,我们将对个别服务器进行数据互通操作.光宇在线技术部门已经完成对相应服务器做数据互通的前期准备.如届时未能完成 ...

  3. 夺宝网站服务器配置,3月27日服务器公告:夺宝小分队

    2015年3月25日 寻宝小分队计划了一系列的海洋冒险,本周它们将会进行一次深海航行.跟随绿麟小子一起去经历热血的航海冒险吧! 剧情更新 藏宝地库的敌人 根据藏宝图指示,大家来到了藏宝地库,这里会找到 ...

  4. wcom少彐x片_大数据实战之千万量级小说网站项目开发(存储、复杂搜索、推荐、分析)...

    随着时代的发展,小说已经成为了许许多多的人减压放松的目的,一部小说能够被人看到需要经过许许多多的代码和程序的编辑,从小说的存储.热度.排行.分类再到搜索,基于用户以往看过的小说进行的推荐,以及作者更新 ...

  5. 武纺淘宝网站项目总结

    技术让梦想更伟大 目录 网站目的: 网站与二手交易群的区别: 网站借鉴的模板: 此网站相较于模板,新添或者改动的地方: 1.新增出售模块: 2.新增管理商品模块: 3.新增管理收藏商品模块: 4.新增 ...

  6. React购物网站项目开发

    说明 从无到有编写购物网站,网站参考华为官网,主要是用于学习react 开发环境 需要安装node.js React 开发环境 node请自行百度安装 create-react-app 是来自于 Fa ...

  7. 电商网站项目开发开篇

    许久没有写博客,这一次一定要坚持写下三月份的开发任务,算是给自己做一个交代. 以下是要做的练手项目思维导图.

  8. 【开源】从零构建NB-IOT物联网项目开发,代码实现功能:人体红外传感

    广/深覆盖.比GPRS覆盖增强20dB+ 低功耗.基于AA电池,使用寿命可超过10年 布局NBIOT的企业 生态链快速构建,将成为全球主流技术和产业生态 NB-IOT智能抄表 智能水表 宠物跟踪 其他 ...

  9. web前端期末大作业 绿色环境保护(4个页面) HTML5网站模板农业展示网站 html5网页制作代码 html5网页设计作业代码 html制作网页案例代码

  10. 一元夺宝项目设计(上)

    听说网易的一元夺宝项目一天的现金流水就达到了1个亿,老板听说有这回事,就着手让我这边逆向一个自己的一元夺宝.既然是老板钦定的项目,必须要积极的应对,不过对于外界传言一天一个亿的流水,写个爬虫抓取他们家 ...

最新文章

  1. Java学习总结:40(国际化)
  2. 【专题】“莓日一介”之(BlackBerry 7230“经典”)
  3. 实现页面打开后滚动到最底端的效果(转)
  4. 【转】SAP PS 模块简介
  5. 第一行代码学习笔记第十章——探究服务
  6. mac全选文字的快捷键_最全Mac系统快捷键一览
  7. mysql 分区 性能更差_用案例分析MySQL 5.7分区表性能下降的根本原因
  8. 计算机一级信息技术基础知识,计算机一级考试之信息技术基础.doc
  9. base64与base64url编码
  10. UniX和类UNIX系统入侵检测方法
  11. RS485通信和Modbus通信协议汇总
  12. 如何将ThinkPad T490拆机加内存条
  13. 重庆北大青鸟【学员心声】任何一次的考试,都是一次珍贵的蜕变机会
  14. C语言中图形 * 的输出
  15. 有关MSSQL2000在Win7上的安装
  16. 对话DeepMind创始人:建立通用人工智能
  17. android NFC getId()后进制转换
  18. 怎么下载jQuery文件
  19. 解决MAC系统升级后虚拟机黑屏问题
  20. postgis——几何图形创建使用

热门文章

  1. matlab可以仿真液压系统,基于Matlab计算机仿真在液压系统中的应用
  2. 常见AutoCAD病毒(acad.fas、acad.lsp)清除方法
  3. PCWorld测评的2012版世界级杀毒软件
  4. 驱动人生8新版助力电脑性能起飞
  5. linux vi命令怎么使用方法,Linux下 vi 命令用法
  6. RecSys2020推荐系统论文Recommending the Video to Watch Next: An Offline and Online Evaluation at YOUTV.de
  7. java商城系统设计——秒杀
  8. JAVA商城项目(微服务框架)——第4天 乐优商城项目搭建
  9. 金蝶K3-航天信息税控发票开票软件接口程序
  10. uploadify php demo,uploadify HTML5 版本,多图上传