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

网站视频链接怎么做wordpress 商品 模板下载

网站视频链接怎么做,wordpress 商品 模板下载,语文建设编辑部官方网站,大良外贸网站设计目录 一、单点 Redis 的问题 1. 数据丢失问题 2. 并发能力问题 3. 故障恢复问题 4. 存储能力问题 5. 四种问题的解决方案 二、Redis持久化#xff08;两种方案#xff09; 1. RDB持久化 1.1. 简介 1.2. 执行时机 save命令 bgsave命令 停机时 触发RDB条件 1.3. …目录 一、单点 Redis 的问题 1. 数据丢失问题 2. 并发能力问题 3. 故障恢复问题 4. 存储能力问题 5. 四种问题的解决方案 二、Redis持久化两种方案 1. RDB持久化 1.1. 简介 1.2. 执行时机 save命令 bgsave命令 停机时 触发RDB条件 1.3. RDB原理 1.4. 知识小结 RDB方式bgsave的基本流程 RDB会在什么时候执行save 60 1000代表什么含义 RDB的缺点 2. AOF持久化 2.1. AOF原理 2.2. AOF配置 2.3. AOF文件重写 3. RDB与AOF对比 三、Redis 主从集群 1. 搭建主从架构 2. 主从数据同步原理 2.1. 全量同步 2.2. 增量同步 2.3. repl_backlog原理 3. 主从同步优化 4. 知识小结 简述全量同步和增量同步区别 什么时候执行全量同步 什么时候执行增量同步 四、Redis 哨兵集群 1. 哨兵原理 1.1. 集群结构和作用 哨兵的结构 哨兵的作用 1.2. 集群监控原理 1.3. 集群故障恢复原理 1.4. 知识小结 Sentinel 的三个作用是什么 Sentinel 如何判断一个 redis 实例是否健康 故障转移步骤有哪些 2. 搭建哨兵集群 3. RedisTemplate 3.1. 导入Demo工程 3.2. 引入依赖 3.3. 配置Redis地址 3.4. 配置读写分离 五、Redis 分片集群 1. 搭建分片集群 2. 散列插槽 2.1. 插槽原理 2.2. 知识小结 Redis如何判断某个key应该在哪个实例 如何将同一类数据固定的保存在同一个Redis实例 3. 集群伸缩 3.1. 需求分析 3.2. 创建新的redis实例 3.3. 添加新节点到redis 3.4. 转移插槽 4. 故障转移 4.1. 自动故障转移 4.2. 手动故障转移 5. RedisTemplate访问分片集群 一、单点 Redis 的问题 1. 数据丢失问题 2. 并发能力问题 3. 故障恢复问题 4. 存储能力问题 5. 四种问题的解决方案 二、Redis持久化两种方案 1. RDB持久化 1.1. 简介 RDB 全称 Redis Database Backup file Redis 数据备份文件也被叫做 Redis 数据快照。 简单来说就是把内存中的所有数据都记录到磁盘中。 当 Redis 实例故障重启后从磁盘读取快照文件恢复数据。 快照文件称为 RDB 文件默认是保存在当前运行目录。 1.2. 执行时机 RDB持久化在四种情况下会执行 执行 save 命令执行 bgsave 命令Redis 停机时触发 RDB 条件时 save命令 执行下面的命令可以立即执行一次 RDB save 命令会导致主进程执行 RDB这个过程中其它所有命令都会被阻塞。只有在数据迁移时可能用到。 bgsave命令 下面的命令可以异步执行 RDB 这个命令执行后会开启独立进程完成RDB主进程可以持续处理用户请求不受影响。 停机时 Redis 停机时会执行一次 save 命令实现 RDB 持久化。 触发RDB条件 Redis 内部有触发 RDB 的机制可以在 redis.conf 文件中找到格式如下 # 900秒内如果至少有1个key被修改则执行bgsave 如果是save 则表示禁用RDB save 900 1 save 300 10 save 60 10000 RDB 的其它配置也可以在 redis.conf 文件中设置 # 是否压缩 ,建议不开启压缩也会消耗cpu磁盘的话不值钱 rdbcompression yes# RDB文件名称 dbfilename dump.rdb # 文件保存的路径目录 dir ./ 1.3. RDB原理 bgsave 开始时会 fork 主进程得到子进程子进程共享主进程的内存数据。 完成 fork 后读取内存数据并写入 RDB 文件。 fork 采用的是 copy-on-write 技术 当主进程执行读操作时访问共享内存当主进程执行写操作时则会拷贝一份数据执行写操作。 物理内存 “物理内存Physical memory是相对于虚拟内存而言的。 物理内存指通过物理内存条而获得的内存空间而虚拟内存则是指将硬盘的一块区域划分来作为内存。 内存主要作用是在计算机运行时为操作系统和各种程序提供临时储存。 1.4. 知识小结 RDB方式bgsave的基本流程 fork 主进程得到一个子进程共享内存空间子进程读取内存数据并写入新的 RDB 文件用新 RDB 文件替换旧的 RDB 文件 RDB会在什么时候执行save 60 1000代表什么含义 默认是服务停止时代表 60 秒内至少执行 1000 次修改则触发 RDB RDB的缺点 RDB 执行间隔时间长两次 RDB 之间写入数据有丢失的风险fork 子进程、压缩、写出 RDB 文件都比较耗时 2. AOF持久化 2.1. AOF原理 AOF 全称为 Append Only File追加文件。 Redis 处理的每一个写命令都会记录在 AOF 文件可以看做是命令日志文件。 2.2. AOF配置 AOF 默认是关闭的需要修改 redis.conf 配置文件来开启 AOF # 是否开启AOF功能默认是no appendonly yes # AOF文件的名称 appendfilename appendonly.aof AOF 的命令记录的频率也可以通过 redis.conf 文件来配 # 表示每执行一次写命令立即记录到AOF文件 appendfsync always # 写命令执行完先放入AOF缓冲区然后表示每隔1秒将缓冲区数据写到AOF文件是默认方案 appendfsync everysec # 写命令执行完先放入AOF缓冲区由操作系统决定何时将缓冲区内容写回磁盘 appendfsync no 三种策略对比 2.3. AOF文件重写 因为是记录命令AOF 文件会比 RDB 文件大的多。而且 AOF 会记录对同一个 key 的多次写操作但只有最 后一次写操作才有意义。 通过执行 bgrewriteaof 命令可以让 AOF 文件执行重写功能用最少的命令达到相同效果。 如图AOF 原本有三个命令但是 set num 123 和 set num 666 都是对 num 的操作第二次会覆盖第一次 的值因此第一个命令记录 下来没有意义。所以重写命令后AOF 文件内容就是mset name jack num 666 Redis 也会在触发阈值时自动去重写 AOF 文件。 阈值也可以在 redis.conf 中配置 # AOF文件比上次文件 增长超过多少百分比则触发重写 auto-aof-rewrite-percentage 100 # AOF文件体积最小多大以上才触发重写 auto-aof-rewrite-min-size 64mb 3. RDB与AOF对比 RDB 和 AOF 各有自己的优缺点如果对数据安全性要求较高在实际开发中往往会结合两者来使用。 三、Redis 主从集群 1. 搭建主从架构 单节点 Redis 的并发能力是有上限的要进一步提高 Redis 的并发能力就需要搭建主从集群 实现读写分离。 具体搭建流程参考《Redis集群 待更新》 2. 主从数据同步原理 2.1. 全量同步 主从第一次建立连接时会执行全量同步将master节点的所有数据都拷贝给slave节点流程 这里有一个问题master 如何得知 salve 是第一次来连接呢 有几个概念可以作为判断依据 Replication Id简称 replid是数据集的标记id 一致则说明是同一数据集。每一个 master 都有唯一的 replidslave 则会继承master节点的replid offset偏移量随着记录在 repl_baklog 中的数据增多而逐渐增大。slave完成同步时也会记录当前同步的 offset。 如果 slave 的 offset 小于 master 的 offset说明 slave 数据落后于 master需要更新。 因此 slave 做数据同步必须向 master 声明自己的 replication id 和 offsetmaster 才可以判断到底需要同 步哪些数据。 因为 slave 原本也是一个 master有自己的 replid 和 offset当第一次变成 slave与 master 建立连接时 发送的 replid 和 offset 是自己的 replid 和 offset。 master 判断发现 slave 发送来的 replid 与自己的不一致说明这是一个全新的 slave就知道要做全量同步 了。 master 会将自己的 replid 和 offset 都发送给这个 slaveslave保存这些信息。以后 slave 的 replid 就与 master 一致了。 因此master判断一个节点是否是第一次同步的依据就是看replid是否一致。 如图 完整流程描述 slave 节点请求增量同步master 节点判断 replid发现不一致拒绝增量同步master 将完整内存数据生成 RDB发送 RDB 到slaveslave 清空本地数据加载 master 的 RDBmaster 将 RDB 期间的命令记录在 repl_baklog并持续将 log 中的命令发送给 slaveslave 执行接收到的命令保持与 master 之间的同步 2.2. 增量同步 全量同步需要先做RDB然后将RDB文件通过网络传输给slave成本太高了。 因此除了第一次做全量同步其它大多数时候slave与master都是做增量同步。 什么是增量同步 就是只更新slave与master存在差异的部分数据。 如图 那么master怎么知道slave与自己的数据差异在哪里呢? 2.3. repl_backlog原理 master 怎么知道 slave 与自己的数据差异在哪里呢? 这就要说到全量同步时的 repl_baklog 文件了。 这个文件是一个固定大小的数组只不过数组是环形 也就是说角标到达数组末尾后会再次从0开始读写这样数组头部的数据就会被覆盖。 repl_baklog 中会记录 Redis 处理过的命令日志及 offset包括 master 当前的 offset和 slave 已经拷贝到 的 offset slave 与 master 的 offset 之间的差异就是 salve 需要增量拷贝的数据了。 随着不断有数据写入master 的 offset 逐渐变大slave 也不断的拷贝追赶 master 的 offset 直到数组被填满 此时如果有新的数据写入就会覆盖数组中的旧数据。不过旧的数据只要是绿色的说明是已经被同步到 slave 的数据即便被覆盖了也没什么影响。因为未同步的仅仅是红色部分。 但是如果 slave 出现网络阻塞导致 master 的 offset 远远超过了 slave 的 offset 如果 master 继续写入新数据其 offset 就会覆盖旧的数据直到将 slave 现在的 offset 也覆盖 棕色框中的红色部分就是尚未同步但是却已经被覆盖的数据。此时如果 slave 恢复需要同步却发现自己 的 offset 都没有了无法完成增量同步了。只能做全量同步。 3. 主从同步优化 主从同步可以保证主从数据的一致性非常重要。 可以从以下几个方面来优化 Redis 主从就集群 在 master 中配置 repl-diskless-sync yes 启用无磁盘复制避免全量同步时的磁盘 IO。Redis 单节点上的内存占用不要太大减少 RDB 导致的过多磁盘适当提高 repl_baklog 的大小发现 slave 宕机时尽快实现故障恢复尽可能避免全量同步限制一个 master 上的 slave 节点数量如果实在是太多 slave则可以采用主-从-从链式结构减少 master 压力 主从从架构图 4. 知识小结 简述全量同步和增量同步区别 全量同步master 将完整内存数据生成 RDB发送 RDB 到 slave。后续命令则记录在 repl_baklog逐个发送 给 slave。 增量同步slave 提交自己的 offset 到 mastermaster 获取 repl_baklog 中从 offset 之后的命令给 slave 什么时候执行全量同步 slave 节点第一次连接 master节点时slave 节点断开时间太久repl_baklog 中的 offset 已经被覆盖时 什么时候执行增量同步 slave 节点断开又恢复并且在 repl_baklog 中能找到 offset 时 四、Redis 哨兵集群 Redis 提供了哨兵 Sentinel 机制来实现主从集群的自动故障恢复。 1. 哨兵原理 1.1. 集群结构和作用 哨兵的结构 哨兵的作用 监控Sentinel 会不断检查您的 master 和 slave 是否按预期工作 自动故障恢复如果 master 故障Sentinel 会将一个 slave 提升为 master。当故障实例恢复后也以新的 master 为主 通知Sentinel 充当 Redis 客户端的服务发现来源当集群发生故障转移时会将最新信息推送给 Redis 的客 户端 1.2. 集群监控原理 Sentinel 基于心跳机制监测服务状态每隔 1 秒向集群的每个实例发送 ping 命令 主观下线如果某 sentinel节点发现某实例未在规定时间响应则认为该实例主观下线。 客观下线若超过指定数量quorum的 sentinel 都认为该实例主观下线则该实例客观下线。 quorum 值最好超过 Sentinel 实例数量的一半。 1.3. 集群故障恢复原理 一旦发现 master 故障sentinel 需要在 salve 中选择一个作为新的 master选择依据是这样的 首先会判断 slave 节点与 master 节点断开时间长短如果超过指定值down-after-milliseconds * 10 则会排除该 slave 节点 然后判断 slave 节点的 slave-priority 值越小优先级越高如果是 0 则永不参与选举如果 slave-prority 一样则判断 slave 节点的 offset 值越大说明数据越新优先级越高最后是判断 slave 节点的运行 id 大小越小优先级越高。 当选出一个新的master后该如何实现切换呢流程如下 sentinel 给备选的 slave1 节点发送 slaveof no one 命令让该节点成为 mastersentinel 给所有其它 slave 发送 slaveof 192.168.150.101 7002 命令让这些 slave 成为新 master 的从 节点开始从新的 master ]]上同步数据。 最后sentinel 将故障节点标记为 slave当故障节点恢复后会自动成为新的 master 的 slave 节点 1.4. 知识小结 Sentinel 的三个作用是什么 监控故障转移通知 Sentinel 如何判断一个 redis 实例是否健康 每隔 1 秒发送一次 ping 命令如果超过一定时间没有相向则认为是主观下线如果大多数 sentinel 都认为实例主观下线则判定服务下线 故障转移步骤有哪些 首先选定一个 slave 作为新的 master执行 slaveof no one然后让所有节点都执行 slaveof 新 master修改故障节点配置添加 slaveof 新 master 2. 搭建哨兵集群 具体搭建流程《Redis集群 待更新》 3. RedisTemplate 在 Sentinel 集群监管下的 Redis 主从集群其节点会因为自动故障转移而发生变化Redis 的客户端必须感知 这种变化及时更新连接信息。Spring 的 RedisTemplate 底层利用 lettuce 实现了节点的感知和自动切换。下 面我们通过一个测试来实现 RedisTemplate 集成哨兵机制。 3.1. 导入Demo工程 首先我们引入资料提供的 Demo 工程 3.2. 引入依赖 在项目的 pom 文件中引入依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency3.3. 配置Redis地址 然后在配置文件 application.yml 中指定 redis 的 sentinel 相关信息 spring:redis:sentinel:master: mymasternodes:- 192.168.150.101:27001- 192.168.150.101:27002- 192.168.150.101:27003 3.4. 配置读写分离 在项目的启动类中添加一个新的 bean Bean public LettuceClientConfigurationBuilderCustomizer clientConfigurationBuilderCustomizer(){return clientConfigurationBuilder - clientConfigurationBuilder.readFrom(ReadFrom.REPLICA_PREFERRED); } 这个bean中配置的就是读写策略包括四种 MASTER从主节点读取MASTER_PREFERRED优先从 master 节点读取master 不可用才读取 replicaREPLICA从 slave replica 节点读取REPLICA _PREFERRED优先从 slave replica 节点读取所有的 slave 都不可用才读取 master 五、Redis 分片集群 1. 搭建分片集群 主从和哨兵可以解决高可用、高并发读的问题。但是依然有两个问题没有解决 海量数据存储问题高并发写的问题 使用分片集群可以解决上述问题如图 分片集群特征 集群中有多个 master每个 master 保存不同数据每个 master 都可以有多个 slave 节点master 之间通过 ping 监测彼此健康状态客户端请求可以访问集群任意节点最终都会被转发到正确节点 具体搭建流程《Redis集群 待更新》 2. 散列插槽 2.1. 插槽原理 Redis 会把每一个 master 节点映射到 0~16383 共 16384 个插槽 hash slot 上查看集群信息时就能看到 数据 key 不是与节点绑定而是与插槽绑定。redis 会根据 key 的有效部分计算插槽值分两种情况 key 中包含 {}且 “{}” 中至少包含 1 个字符“{}” 中的部分是有效部分key 中不包含 “{}”整个 key 都是有效部分 例如 key 是 num那么就根据 num 计算如果是 {project}num则根据 project 计算。 计算方式是利用 CRC16 算法得到一个 hash 值然后对 16384 取余得到的结果就是 slot 值。 如图在 7001 这个节点执行 set a 1时对 a 做 hash 运算对 16384 取余得到的结果是 15495因此要存储 到 103 节点。 到了 7003 后执行 get num 时对 num 做 hash 运算对 16384 取余得到的结果是 2765因此需要切换 到 7001 节点 2.2. 知识小结 Redis如何判断某个key应该在哪个实例 将 16384 个插槽分配到不同的实例根据 key 的有效部分计算哈希值对 16384 取余余数作为插槽寻找插槽所在实例即可 如何将同一类数据固定的保存在同一个Redis实例 这一类数据使用相同的有效部分例如 key 都以 { typeId } 为前缀 3. 集群伸缩 redis-cli --cluster 提供了很多操作集群的命令可以通过下面方式查看 比如添加节点的命令 3.1. 需求分析 1、向集群中添加一个新的master节点并向其中存储 num 10 启动一个新的 redis 实例端口为 7004添加 7004 到之前的集群并作为一个 master 节点给 7004 节点分配插槽使得 num 这个 key 可以存储到 7004 实例 2、这里需要两个新的功能 添加一个节点到集群中将部分插槽分配到新插槽 3.2. 创建新的redis实例 1、创建一个文件夹 mkdir 7004 2、拷贝配置文件 cp redis.conf /7004 3、修改配置文件 sed /s/6379/7004/g 7004/redis.conf 4、启动 redis-server 7004/redis.conf 3.3. 添加新节点到redis 添加节点的语法如下 执行命令 redis-cli --cluster add-node 192.168.150.101:7004 192.168.150.101:7001 通过命令查看集群状态 redis-cli -p 7001 cluster nodes 如图7004 加入了集群并且默认是一个 master 节点 但是可以看到 7004 节点的插槽数量为 0因此没有任何数据可以存储到 7004 上 3.4. 转移插槽 我们要将 num 存储到7004节点因此需要先看看num的插槽是多少 如上图所示num 的插槽为 2765. 我们可以将 0~3000 的插槽从 7001 转移到 7004命令格式如下 具体命令如下 建立连接 得到下面的反馈 询问要移动多少个插槽我们计划是3000个 新的问题来了 那个 node 来接收这些插槽 显然是 7004那么 7004 节点的 id 是多少呢 复制这个 id然后拷贝到刚才的控制台后 这里询问你的插槽是从哪里移动过来的 1. all代表全部也就是三个节点各转移一部分2. 具体的id目标节点的 id3. done没有了 这里我们要从 7001 获取因此填写 7001 的 id 填完后点击 done这样插槽转移就准备好了 确认要转移吗输入 yes 然后通过命令查看结果 可以看到 目的达成。 4. 故障转移 集群初识状态是这样的 其中 7001、7002、7003 都是 master我们计划让 7002 宕机。 4.1. 自动故障转移 当集群中有一个 master 宕机会发生什么呢 直接停止一个 redis 实例例如 7002 redis-cli -p 7002 shutdown 首先是该实例与其它实例失去连接然后是疑似宕机 最后是确定下线自动提升一个 slave 为新的 master 当 7002 再次启动就会变为一个 slave 节点了 4.2. 手动故障转移 利用 cluster failover 命令可以手动让集群中的某个 master 宕机切换到执行 cluster failover 命令的这个 slave 节点实现无感知的数据迁移。 其流程如下 这种 failover 命令可以指定三种模式 1. 缺省默认的流程如图 1~6 歩2. force省略了对 offset 的一致性校验3. takeover直接执行第 5 歩忽略数据一致性、忽略 master 状态和其它 master 的意见 案例需求在 7002 这个 slave 节点执行手动故障转移重新夺回 master 地位 步骤如下 利用 redis-cli 连接 7002 这个节点执行 cluster failover 命令 如图 效果 5. RedisTemplate访问分片集群 RedisTemplate 底层同样基于 lettuce 实现了分片集群的支持而使用的步骤与哨兵模式基本一致 引入 redis 的 starter 依赖配置分片集群地址配置读写分离 与哨兵模式相比其中只有分片集群的配置方式略有差异如下 spring:redis:cluster:nodes:- 192.168.150.101:7001- 192.168.150.101:7002- 192.168.150.101:7003- 192.168.150.101:8001- 192.168.150.101:8002- 192.168.150.101:8003
文章转载自:
http://www.morning.bwqcx.cn.gov.cn.bwqcx.cn
http://www.morning.krxzl.cn.gov.cn.krxzl.cn
http://www.morning.xlxmy.cn.gov.cn.xlxmy.cn
http://www.morning.rdlrm.cn.gov.cn.rdlrm.cn
http://www.morning.mgkcz.cn.gov.cn.mgkcz.cn
http://www.morning.jxtbr.cn.gov.cn.jxtbr.cn
http://www.morning.sxhdzyw.com.gov.cn.sxhdzyw.com
http://www.morning.mlcnh.cn.gov.cn.mlcnh.cn
http://www.morning.wgdnd.cn.gov.cn.wgdnd.cn
http://www.morning.lnsnyc.com.gov.cn.lnsnyc.com
http://www.morning.krfpj.cn.gov.cn.krfpj.cn
http://www.morning.gfkb.cn.gov.cn.gfkb.cn
http://www.morning.pnfwd.cn.gov.cn.pnfwd.cn
http://www.morning.yfpnl.cn.gov.cn.yfpnl.cn
http://www.morning.ranglue.com.gov.cn.ranglue.com
http://www.morning.wmdlp.cn.gov.cn.wmdlp.cn
http://www.morning.fkfyn.cn.gov.cn.fkfyn.cn
http://www.morning.lqlhw.cn.gov.cn.lqlhw.cn
http://www.morning.wftrs.cn.gov.cn.wftrs.cn
http://www.morning.qgwdc.cn.gov.cn.qgwdc.cn
http://www.morning.pphbn.cn.gov.cn.pphbn.cn
http://www.morning.zglrl.cn.gov.cn.zglrl.cn
http://www.morning.qswws.cn.gov.cn.qswws.cn
http://www.morning.wbyqy.cn.gov.cn.wbyqy.cn
http://www.morning.mjbjq.cn.gov.cn.mjbjq.cn
http://www.morning.bpncd.cn.gov.cn.bpncd.cn
http://www.morning.drjll.cn.gov.cn.drjll.cn
http://www.morning.ynlpy.cn.gov.cn.ynlpy.cn
http://www.morning.fmjzl.cn.gov.cn.fmjzl.cn
http://www.morning.tzcr.cn.gov.cn.tzcr.cn
http://www.morning.cxtbh.cn.gov.cn.cxtbh.cn
http://www.morning.cpctr.cn.gov.cn.cpctr.cn
http://www.morning.qxdrw.cn.gov.cn.qxdrw.cn
http://www.morning.nlygm.cn.gov.cn.nlygm.cn
http://www.morning.dtlqc.cn.gov.cn.dtlqc.cn
http://www.morning.xbbrh.cn.gov.cn.xbbrh.cn
http://www.morning.zzfqn.cn.gov.cn.zzfqn.cn
http://www.morning.rrhfy.cn.gov.cn.rrhfy.cn
http://www.morning.ddxjr.cn.gov.cn.ddxjr.cn
http://www.morning.ypqwm.cn.gov.cn.ypqwm.cn
http://www.morning.dpzcc.cn.gov.cn.dpzcc.cn
http://www.morning.xxlz.cn.gov.cn.xxlz.cn
http://www.morning.nlffl.cn.gov.cn.nlffl.cn
http://www.morning.pmjhm.cn.gov.cn.pmjhm.cn
http://www.morning.baguiwei.com.gov.cn.baguiwei.com
http://www.morning.dtpqw.cn.gov.cn.dtpqw.cn
http://www.morning.hgsylxs.com.gov.cn.hgsylxs.com
http://www.morning.krlsz.cn.gov.cn.krlsz.cn
http://www.morning.ysbrz.cn.gov.cn.ysbrz.cn
http://www.morning.gbfzy.cn.gov.cn.gbfzy.cn
http://www.morning.gydsg.cn.gov.cn.gydsg.cn
http://www.morning.rxnxl.cn.gov.cn.rxnxl.cn
http://www.morning.btblm.cn.gov.cn.btblm.cn
http://www.morning.bnxnq.cn.gov.cn.bnxnq.cn
http://www.morning.qfcnp.cn.gov.cn.qfcnp.cn
http://www.morning.pakistantractors.com.gov.cn.pakistantractors.com
http://www.morning.rchsr.cn.gov.cn.rchsr.cn
http://www.morning.qmnhw.cn.gov.cn.qmnhw.cn
http://www.morning.hmnhp.cn.gov.cn.hmnhp.cn
http://www.morning.krswn.cn.gov.cn.krswn.cn
http://www.morning.cwyfs.cn.gov.cn.cwyfs.cn
http://www.morning.ghpld.cn.gov.cn.ghpld.cn
http://www.morning.nndbz.cn.gov.cn.nndbz.cn
http://www.morning.rhzzf.cn.gov.cn.rhzzf.cn
http://www.morning.fssmx.com.gov.cn.fssmx.com
http://www.morning.dbsch.cn.gov.cn.dbsch.cn
http://www.morning.ruyuaixuexi.com.gov.cn.ruyuaixuexi.com
http://www.morning.yfqhc.cn.gov.cn.yfqhc.cn
http://www.morning.kttbx.cn.gov.cn.kttbx.cn
http://www.morning.ztnmc.cn.gov.cn.ztnmc.cn
http://www.morning.rsjng.cn.gov.cn.rsjng.cn
http://www.morning.gjlml.cn.gov.cn.gjlml.cn
http://www.morning.zcqbx.cn.gov.cn.zcqbx.cn
http://www.morning.pangucheng.cn.gov.cn.pangucheng.cn
http://www.morning.zsfooo.com.gov.cn.zsfooo.com
http://www.morning.wgrm.cn.gov.cn.wgrm.cn
http://www.morning.jrlxz.cn.gov.cn.jrlxz.cn
http://www.morning.gsqw.cn.gov.cn.gsqw.cn
http://www.morning.wzwyz.cn.gov.cn.wzwyz.cn
http://www.morning.jxwhr.cn.gov.cn.jxwhr.cn
http://www.tj-hxxt.cn/news/258670.html

相关文章:

  • 上海平台网站建设价格前端跟后端哪个就业难
  • 网站建设那家好兰州企业建设网站
  • 网站里面网友点评怎么做wordpress win调试
  • 山东济南网站建设公司什么网站推广比较好
  • 企业网站建设的步骤过程乐陵人力资源网站
  • 网站建设实战案例最新的跨境电商平台有哪些
  • 网站建设合同报价上海市中小企业服务中心
  • 青岛中小企业建设网站有扶持资金吗一个网站如何做cdn加速器
  • 免费的建网站软件建站公司 phpwind
  • 濮阳网站建设兼职wordpress分类
  • iis7.5添加网站今天贵阳最新头条新闻
  • 自己的服务器做网站要备案vue低代码开发平台
  • 济南建设公司网站网站网站制作需要多少钱
  • 望谟网站建设网站设计 网站建设 手机网站建设
  • 简约设计网站黄页推广是什么
  • 网站备案备注怎么写找工程承包
  • 金山做网站的公司有什么网站可以下做闭软件
  • 网站开发的职位要求四川建设厅官方网站查询资料员
  • 政务服务网站建设文档一套完整的工程施工流程
  • 用dw做的网站怎么发布江苏无锡网站推广及优化
  • 网站 白名单wordpress主题布局教程
  • 南昌网站建设模板下载网址外贸英语怎么自学
  • wordpress怎么搜站点怎么做有个捐款的网站
  • 整站优化该怎么做网站出租建设
  • 网站版块下载大连工业大学艺术与信息工程学院
  • 新手建站素材品牌网站建设报价单
  • 做网站在哪里找素材wordpress店铺模板
  • 国家电网交流建设分公司网站网站运营规划
  • 音乐网站素材有哪些企业可以做招聘的网站
  • 西宁市网站建设价格雄安移动网络