当前位置: 首页 > news >正文

asp.net2.0网站开发全程解析 pdf电商如何推广

asp.net2.0网站开发全程解析 pdf,电商如何推广,韩国手做配件网站,做网站要是要求吗目录 一、Redis的主从复制 1.1 主从复制的架构 1.2 主从复制的作用 1.3 注意事项 1.4 主从复制用到的命令 1.5 主从复制流程 1.6 主从复制实现 1.7 结束主从复制 1.8 主从复制优化配置 二、哨兵模式 2.1 哨兵模式原理 2.2 哨兵的三个定时任务 2.3 哨兵的结构 2.4 哨…目录 一、Redis的主从复制 1.1 主从复制的架构 1.2 主从复制的作用 1.3 注意事项 1.4 主从复制用到的命令 1.5 主从复制流程 1.6 主从复制实现 1.7 结束主从复制 1.8 主从复制优化配置 二、哨兵模式 2.1 哨兵模式原理 2.2 哨兵的三个定时任务 2.3 哨兵的结构 2.4 哨兵模式的实现  三、Redis集群cluster 3.1 cluster作用 3.2 cluster特点 3.3 cluster架构 3.4 cluster的部署 一、Redis的主从复制 1.1 主从复制的架构 主从复制是指将一台 Redis 服务器的数据复制到其他的 Redis 服务器。前者称为主节点(Master)后者称为从节点(Slave)数据的复制是单向的只能由主节点到从节点。 默认情况下每台Redis服务器都是主节点且一个主节点可以有多个从节点(或没有从节点)但一个从节点只能有一个主节点。 1.2 主从复制的作用 数据备份和容灾通过主从复制可以将主数据库的数据实时同步到从数据库以实现数据备份和容灾。如果主数据库发生故障可以快速切换到从数据库保障数据的可用性。负载均衡通过主从复制可以将读操作分摊到多个从数据库上从而降低主数据库的负载实现读写分离提高系统的整体性能和并发能力。数据分发通过主从复制可以将数据分发到不同的地理位置或数据中心以提高数据访问的速度和稳定性。 1.3 注意事项 导致主从服务器数据全部丢失的操作 1.假设节点A为主服务器并且关闭了持久化。然后节点B和节点C从节点A复制数据 2.节点A崩溃然后由自动拉起服务重启了节点A。由于节点A的持久化被关闭了所以重启之后没有任何数据 3.节点B和节点C将从节点A复制数据但是A的数据是空的于是就把自身保存的数据副本删除。 措施 无论何时数据安全都是极其重要的所以应该禁止主服务器关闭持久化的同时自动启动。 1.4 主从复制用到的命令 命令解释info replication查看主从状态repliacaof 或者 slaveof 添加主从配置 例子 repliacaof 192.168.91.100 6379CONFIG SET masterauth 123456临时设置密码repliacaof masterip masterport临时添加主设置REPLICAOF no one取消 主从配置 1.5 主从复制流程 连接建立从数据库连接到主数据库发送 SYNC 命令请求全量复制或 PSYNC 命令请求部分复制。 数据同步主数据库收到同步请求后将当前的数据快照发送给从数据库或者根据 PSYNC 命令发送从指定的复制偏移量开始的数据。 命令传播主数据库接收到写命令后会将这些写操作的命令记录到内存的命令缓冲区中同时将这些命令同步到所有从数据库从数据库接收到命令后按顺序执行相同的写操作保持数据一致性。 重新连接如果从数据库和主数据库之间的连接断开从数据库会尝试重新连接主数据库并从断开的位置继续复制数据以保持同步。 总结 第一次全同步 1从服务器连接主服务器发送[P]SYNC(同步)命令 2主服务器接收到[P]SYNC命令后开始执行BGSAVE命令生成RDB快照文件并使用缓冲区记录此后执行的所有写命令 3主服务器BGSAVE执行完后向所有从服务器发送RDB快照文件并在发送期间继续记录被执行的写命令 4从服务器收到快照文件后丢弃所有旧数据载入收到的快照至内存 5主服务器快照发送完毕后,开始向从服务器发送内存缓冲区中的写命令 6从服务器完成对快照的载入开始接收命令请求并执行来自主服务器缓冲区的写命令 后期部分同步 7后期同步会先发送自己slave_repl_offset位置只同步新增加的数据不再全量同步 1.6 主从复制实现 环境部署 版本Redis-6.2.6 主节点Master192.168.254.10 从节点Slave1192.168.254.20 从节点Slave2192.168.254.30 实验配置 ###############主从服务器################## systemctl stop firewalld setenforce 0###############主服务器################## vim /apps/redis/etc/redis.conf #将监听端口改为任意端口 bind 0.0.0.0 #设置密码 requirepass 123456 #指定日志文件目录 logfile /apps/redis/log/redis.log #指定PID文件位置 pidfile /apps/redis/run/ #指定工作目录rdb、aof文件存放位置 dir /apps/redis/data/ #开启AOF持久化功能 appendonly yes###############从服务器1################## vim /apps/redis/etc/redis.conf #将监听端口改为任意端口 bind 0.0.0.0 #设置密码 requirepass 123456 #设置主从配置连接主服务器的密码 masterauth 123456 #指定日志文件目录 logfile /apps/redis/log/redis.log #指定PID文件位置 pidfile /apps/redis/run/ #指定工作目录rdb、aof文件存放位置 dir /apps/redis/data/ #开启AOF持久化功能 appendonly yes #开启主从复制主的IP和端口 replicaof 192.168.254.10 6379###############从服务器2################## vim /apps/redis/etc/redis.conf #将监听端口改为任意端口 bind 0.0.0.0 #设置密码 requirepass 123456 #设置主从配置连接主服务器的密码 masterauth 123456 #指定日志文件目录 logfile /apps/redis/log/redis.log #指定PID文件位置 pidfile /apps/redis/run/ #指定工作目录rdb、aof文件存放位置 dir /apps/redis/data/ #开启AOF持久化功能 appendonly yes #开启主从复制主的IP和端口 replicaof 192.168.254.10 6379 1.7 结束主从复制 在从节点执行 REPLIATOF NO ONE 指令可以取消主从复制 REPLICAOF no one #取消复制,在slave上执行REPLIATOF NO ONE,会断开和master的连接不再主从复制, 但不会清除slave上已有的数据 1.8 主从复制优化配置 1. 复制缓冲区(环形队列)配置参数 #复制缓冲区大小,建议要设置足够大 repl-backlog-size 1mb #Redis同时也提供了当没有slave需要同步的时候多久可以释放环形队列 repl-backlog-ttl   3600 #最长保持时间 3600秒 该缓冲区即为在主从复制时主服务器在发送快照的同时新的写操作存入内存缓冲区的缓冲区大小需要设置足够大否则超过的部分会覆盖掉未发送的数据。 2. 避免全量复制避免复制风暴 第一次全量复制不可避免,后续的全量复制可以利用小主节点(内存小),业务低峰时进行全量 节点运行ID不匹配:主节点重启会导致RUNID变化,可能会触发全量复制,可以利用故障转移例如哨兵或集群,而从节点重启动,不会导致全量复制 复制积压缓冲区不足: 当主节点生成的新数据大于缓冲区大小,从节点恢复和主节点连接后,会导致全量复制.解决方法将repl-backlog-size 调大 单主节点复制风暴当主节点重启多从节点复制 可以采用级联复制将一台slave服务器设为其他slave服务器的主 3. 性能相关配置 repl-diskless-sync no # 是否使用无盘同步RDB文件默认为nono为不使用无盘需要将RDB文件保存到磁盘后再发送给slaveyes为支持无盘支持无盘就是RDB文件不需要保存至本地磁盘而且直接通过socket文件发送给slaverepl-diskless-sync-delay 5 #diskless时复制的服务器等待的延迟时间repl-ping-slave-period 10 #slave端向server端发送ping的时间间隔默认为10秒repl-timeout 60 #设置主从ping连接超时时间,超过此值无法连接,master_link_status显示为down,并记录错误日志repl-disable-tcp-nodelay no #是否启用TCP_NODELAY如设置成yes则redis会合并小的TCP包从而节省带宽 但会增加同步延迟40ms造成master与slave数据不一致假如设置成no则redis master会立即发送同步数据没有延迟yes关注网络性能no关注redis服务中的数据一致性repl-backlog-size 1mb #master的写入数据缓冲区用于记录自上一次同步后到下一次同步过程中间的写入命令计算公式repl-backlog-size 允许从节点最大中断时长 * 主实例offset每秒写入量比如master每秒最大写入64mb最大允许60秒那么就要设置为64mb*60秒3840MB(3.8G),建议此值是设置的足够大repl-backlog-ttl 3600 #3600秒 如果一段时间后没有slave连接到master则backlog size的内存将会被释放。如果值为0则 表示永远不释放这部份内存。slave-priority 100 #slave端的优先级设置值是一个整数数字越小表示优先级越高。当master故障时将会按照优先级来选择slave端进行恢复如果值设置为0则表示该slave永远不会被选择。min-replicas-to-write 1 #设置一个master的可用slave不能少于多少个否则master无法执行写min-slaves-max-lag 20 #设置至少有上面数量的slave延迟时间都大于多少秒时master不接收写操作(拒绝写入) 二、哨兵模式 哨兵模式是在主从复制的基础上增加了主节点的故障移除功能。 一个被哨兵故障移除的主节点在恢复后会变为新的主节点的从节点。 2.1 哨兵模式原理 哨兵(sentinel)是一个分布式系统用于对主从结构中的每台服务器进行监控当出现故障时通过投票机制选择新的Master并将所有Slave 连接到新的Master。所以整个运行哨兵的集群的数量不得少于3个节点。 2.2 哨兵的三个定时任务 每10秒每个sentinel对master和slave执行info发现slave节点确认主从关系 每2秒每个sentinel通过master节点的channel交换信息(pub/sub)通过sentinel__:hello频道交互交互对节点的“看法”和自身信息 每1秒每个sentinel对其他sentinel和redis执行ping 2.3 哨兵的结构 哨兵结构往往由两部分组成哨兵节点、数据节点 数据节点即主从数据库用于写入和存储数据的节点哨兵节点游离于数据节点哨兵节点不会存储数据它只负责监控数据节点是否正常 哨兵的启动依赖于主从模式所以须把主从模式安装好的情况下再去做哨兵模式所有节点上都需要部署哨兵模式哨兵模式会监控所有的Redis工作节点是否正常当Master出现问题的时候因为其他节点与主节点失去联系因此会投票投票过半就认为这个 Master 的确出现问题然后会通知哨兵间然后从Slaves中选取一个作为新的 Master。 2.4 哨兵模式的实现  环境配置 三台数据节点需要三台哨兵节点为了节省服务器直接在每台节点上配置哨兵节点 主数据库Master192.168.254.10        哨兵节点1 从数据库Slave1192.168.254.20        哨兵节点2 从数据库Slave2192.168.254.30        哨兵节点3 配置前提 基于主从配置已经完成的情况下 配置实现 ################所有主从服务器################## echo requirepass 123456 /apps/redis/etc/redis.conf echo masterauth 123456 /apps/redis/etc/redis.conf systemctl stop firewalld setenforce 0 systemctl restart redis#################所有节点Sentinel配置################## #编译安装时源码包中有sentinel.conf配置文件 cp /data/redis-6.2.6/sentinel.conf /apps/redis/etc/ #给予权限 chown -R redis.redis /apps/redis#编写配置 vim /apps/redis/etc/redis-sentinel.conf bind 0.0.0.0 #修改监听端口 port 26379 #不用修改默认 daemonize no # 不用修改systemd启动模式 修改为yes后systemd启动不了 pidfile /apps/resdis/run/redis-sentinel.pid #指定pid文件 logfile /apps/redis/log/sentinel_26379.log # 指定日志文件 dir /tmp  #工作目录不用修改 sentinel monitor mymaster 192.168.254.10 6379 2 #mymaster是集群的名称此行指定当前mymaster集群中master服务器的地址和端口 #2为法定人数限制(quorum)即有几个sentinel认为master down了就进行故障转移一般此值是所有sentinel节点(一般总数是3的 奇数,如:3,5,7等)的一半以上的整数值比如总数是3即3/21.5取整为2,是master的ODOWN客观下线的依据 sentinel auth-pass mymaster 123456 #mymaster集群中master的密码注意此行要在上面行的下面 sentinel down-after-milliseconds mymaster 3000 #(SDOWN)判断mymaster集群中所有节点的主观下线的时间单位毫秒建议30003秒否则等待时间过长 sentinel parallel-syncs mymaster 1 #发生故障转移后可以同时向新master同步数据的slave的数量数字越小总同步时间越长但可以减轻新master的负载压力 sentinel failover-timeout mymaster 18000 #所有slaves指向新的master所需的超时时间单位毫秒 准备service文件开启服务先开启主的再开从的 #################所有节点################## cat /lib/systemd/system/redis-sentinel.service eof [Unit] DescriptionRedis Sentinel Afternetwork.target [Service] ExecStart/apps/redis/bin/redis-sentinel /apps/redis/etc/sentinel.conf --supervised systemd ExecStop/bin/kill -s QUIT $MAINPID Userredis Groupredis RuntimeDirectoryredis RuntimeDirectoryMode0755 [Install] WantedBymulti-user.target eofsystemctl daemon-reload#################主节点################### systemctl start redis-sentinel.service #先开启主的#################从节点################### systemctl start redis-sentinel.service 验证 ##############所有节点############### tail -f /apps/redis/log/sentinel.log###############主节点################## systemctl stop redis #关闭主节点观察日志变化 三、Redis集群cluster 3.1 cluster作用 在哨兵sentinel机制中可以解决redis高可用问题即当master故障后可以自动将slave提升为master从而可以保证redis服务的正常使用但是无法解决redis单机写入的瓶颈问题即单机redis写入性能受限于单机的内存大小、并发数量、网卡速率等因素。 3.2 cluster特点 所有Redis节点使用(PING机制)互联 集群中某个节点的是否失效是由整个集群中超过半数的节点监测都失效才能算真正的失效 客户端不需要proxy即可直接连接redis应用程序中需要配置有全部的redis服务器IP redis cluster把所有的redis node 平均映射到 0-16383个槽位(slot)上读写需要到指定的redis node上进行操作因此有多少个redis node相当于redis 并发扩展了多少倍每个redis node 承担16384/N个槽位 Redis cluster预先分配16384个(slot)槽位当需要在redis集群中写入一个key -value的时候会使用CRC16(key) 取模 16384之后的值决定将key写入值哪一个槽位从而决定写入哪一个Redis节点上从而有效解决单机瓶颈。 3.3 cluster架构 假如三个主节点分别是M1,M2,M3 三个节点采用哈希槽 (hash slot)的方式来分配16384个slot 的话它们三个节点分别承担的slot 区间可以是 节点M1覆盖 05460                从节点S1 当M1损坏S1会接替M1和S1都坏了则0-5460槽位不可用 节点M2覆盖 546110922        从节点S2 当M2损坏S2会接替M2和S2都坏了则5461-10922槽位不可用 节点M3覆盖 1092316383      从节点S3 当M3损坏S3会接替M3和S3都坏了则10923-16383槽位不可用 3.4 cluster的部署 环境配置 一般cluster集群最起码需要6台服务器3个主节点3个从节点 方便起见这里使用一台服务器分出6个实例来完成 节点1192.168.254.106001 节点2192.168.254.106002 节点3192.168.254.106003 节点4192.168.254.106004 节点5192.168.254.106005 节点6192.168.254.106006 配置演示 #进入redis目录 cd /apps/redis #创建集群文件目录 mkdir -p redis-cluster/redis600{1..6}#准备执行文件到每个实例文件 for i in {1..6} do cp /data/redis-6.2.6/redis.conf /apps/redis/redis-cluster/redis600$i cp /data/redis-6.2.6/src/redis-cli /data/redis-6.2.6/src/redis-server /apps/redis/redis-cluster/redis600$i donechown -R redis.redis /apps/redis#进入6001端口实例配置文件 cd /apps/redis/redis-cluster/redis6001/ vim redis.conf#bind 127.0.0.1 #69行注释掉bind 项默认监听所有网卡 protected-mode no #88行修改关闭保护模式 port 6001 #92行修改redis监听端口 daemonize yes #136行开启守护进程以独立进程启动 如果是systemd 启动不需要修改,这里修改为yes不使用systemd启动 cluster-enabled yes #832行取消注释开启群集功能 cluster-config-file nodes-6001.conf #840行取消注释群集名称文件设置 cluster-node-timeout 15000 #846行取消注释群集超时时间设置 appendonly yes #700行修改开启AOF持久化#将此配置文件复制给每个实例下 for i in {2..6} do \cp -f ./redis.conf /apps/redis/redis-cluster/redis600${i} done#############################分隔符#########################################这里提供一个快捷更改实例中配置的sed命令参考进入不同实例目录中修改 cd /apps/redis/redis-cluster/redis6002 sed -i.bak -e s/bind 127.0.0.1/bind 0.0.0.0/ -e s/protected-mode yes/protected-mode no/ -e s/^port .*/port 6002/ -e s/^daemonize .*/daemonize yes/ -e s/^# cluster-enabled .*/cluster-enabled yes/ -e s/^# cluster-config-file .*/cluster-config-file nodes-6002.conf/ -e s/^# cluster-node-timeout .*/cluster-node-timeout 15000/ -e s/appendonly no/appendonly yes/ redis.conf#6003、6004、6005、6006如上只需要修改端口即可#############################分隔符#########################################先暂停redis服务 systemctl stop redis#进入实例文件夹执行命令 for d in {1..6} do cd /apps/redis/redis-cluster/redis600$d redis-server redis.conf done#检查进程是否全部开启 ss -natp |grep \b600[1-6]\b #若看见6001~6006进程全部开启则成功#开启集群 redis-cli --cluster create 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006 --cluster-replicas 1 #六个实例分为三组每组一主一从前面的做主节点后面的做从节点。 #--replicas 1 表示每个主节点有1个从节点。 #下面交互的时候 需要输入 yes 才可以创建。#注意要是您使用了六台服务器进行操作这里的127.0.0.1需要改为各自服务器的IP#看到OK后即为成功 验证 #加-c参数节点之间就可以互相跳转 redis-cli -p 6001 -c 127.0.0.1:6001 cluster slots #查看节点的哈希槽编号范围 1) 1) (integer) 54612) (integer) 10922 #哈希槽编号范围3) 1) 127.0.0.12) (integer) 6003 #主节点IP和端口号3) fdca661922216dd69a63a7c9d3c4540cd6baef444) 1) 127.0.0.12) (integer) 6004 #从节点IP和端口号3) a2c0c32aff0f38980accd2b63d6d952812e44740 2) 1) (integer) 02) (integer) 54603) 1) 127.0.0.12) (integer) 60013) 0e5873747a2e26bdc935bc76c2bafb19d0a54b114) 1) 127.0.0.12) (integer) 60063) 8842ef5584a85005e135fd0ee59e5a0d67b0cf8e 3) 1) (integer) 109232) (integer) 163833) 1) 127.0.0.12) (integer) 60023) 816ddaa3d1469540b2ffbcaaf9aa867646846b304) 1) 127.0.0.12) (integer) 60053) f847077bfe6722466e96178ae8cbb09dc8b4d5eb127.0.0.1:6001set name zzh # 对name这个键进行算法 得出值为5789 跳到对应的主节点存储并且从节点也会复制 - Redirected to slot [5798] located at 127.0.0.1:6002 OK 127.0.0.1:6002get name zzh#查看name键的槽编号 cluster keyslot name #查看name键的槽编号#查看节点信息 cluster nodes#遍历关闭cluster for i in {1..6} do kill -9 $(ss -natp | grep 600$i | tr -s | cut -d -f2 | cut -d, -f1 | uniq) done
http://www.w-s-a.com/news/172015/

相关文章:

  • 视频制作素材免费网站头像制作在线生成器
  • 网站建设是不是可以免费建站广州做网站 信科网络
  • 闸北区网站设计叫别人做网站后怎么更改密码
  • 为什么想做网站运营建设工程教育网站
  • 站长基地百度推广整体优化网站
  • 门窗 东莞网站建设wordpress外链论坛
  • 安徽省建设部网站官网还能用的wap网站
  • 企业网站设计开发网站关键词优化seo
  • 郑州高档网站建设台州网站建设推广
  • 广东省建设信息港网站WordPress手机缩略图设置
  • 优秀网站主题平顶山专业做网站公司
  • wordpress返回顶部插件wordpress站群seo
  • 企业网站建设报价表百度竞价托管哪家好
  • 织梦网站首页打开慢淄博网站推广那家好
  • 苏州高端网站建设kgwl互动网站建设的主页
  • 宿州网站建设哪家公司好个人网站制作方法
  • 网站正能量晚上在线观看视频站长之家关键词挖掘工具
  • 建设网站怎么判断是电脑还是手机仿租号网站源码网站开发
  • seo百度网站排名软件重庆巫山网站设计公司
  • 搭建视频播放网站网站排名诊断
  • 网站域名注册网站centos做网站服务器
  • 网站服务器共享的 vpsh5页面制作软件电脑版
  • 免费手机网站申请上海网站建设设计公司哪家好
  • 站长工具大全企业网上书店网站建设设计
  • 做网站的专业公司公司网站是做的谷歌的
  • 做网站前期工作wordpress图片并排
  • 免费注册网站哪个好wordpress评论修改
  • 合肥模板网站建设软件赤峰公司网站建设
  • 毕业设计都是做网站吗深圳网站制作企业邮箱
  • 网站排名 优帮云小规模公司简介怎么写