建设高校图书馆网站的意义软文代发布

diannao/2025/10/14 7:17:03/文章来源:
建设高校图书馆网站的意义,软文代发布,阿里巴巴官网电脑版,公司注册费用计入什么科目实验内容 实现一个分片 k/v 存储系统#xff0c;分片指如所有以“a”开头的键可能是一个分片#xff0c;所有以 “b”开头的键可能是另一个分片。每个副本组仅处理几个分片的 Put、Append 操作#xff0c;实现并行操作#xff0c;系统总吞吐量#xff08;单位时间的放入和…实验内容 实现一个分片 k/v 存储系统分片指如所有以“a”开头的键可能是一个分片所有以 “b”开头的键可能是另一个分片。每个副本组仅处理几个分片的 Put、Append 操作实现并行操作系统总吞吐量单位时间的放入和获取与组的数量成正比。 分片 k/v 存储系统由多个副本组和一个分片控制器组成分片控制器管理配置信息决定哪个副本组为哪个分片服务。 某些组的负载可能远高于其他组实现在多个副本组之间转移分片以达到负载均衡。同时可能会添加新的副本组以增加容量或者现有的副本组可能会脱机以进行修复因此必须移动分片以继续满足要求。 主要挑战是处理重新配置即将分片重新分配给副本组。在单个副本组中 所有组成员必须就客户端的 Put/Append/Get 请求在进行重新配置时达成一致。如 Put 可能与重新配置同时到达重新配置导致副本组不再对 Put 的 key 对应的分片负责。所以组中的所有副本必须就 Put 发生在重新配置之前还是之后达成一致。若在重新配置之前则 Put 应生效并且该分片的新所有者需要看到生效效果若在重新配置之后Put 将不会生效客户必须重新请求该 key 的新所有者。 推荐的方法是让每个副本组使用 Raft 不仅记录请求的ID还记录重新配置的ID。需要确保任何时间最多只有一个副本组为一个分片提供服务。 重新配置还涉及到副本组之间的交互如在配置 10 中组 G1 负责分片 S1在配置 11 中组 G2 负责分片 S1在 10 到 11 的重新配置期间G1 和 G2 必须使用 RPC 将分片 S1 的内容键/值对从 G1 移动到 G2。 实验环境 OSWSL-Ubuntu-18.04 golanggo1.17.6 linux/amd64 Part B: Sharded Key/Value Server Implshardkv/client.go, shardkv/common.go, and shardkv/server.go 实现一个分片 k/v 存储系统每个副本组仅处理其所负责的分片中的键并支持 Get、Put、Append 操作。利用 PartA 中实现的 ShardCtrler 维护配置信息。 No-credit challenge exercises Garbage collection of state 当副本组失去对分片的所有权时该副本组应消除其数据库中对应的key从而避免浪费。但是这在分片迁移上会有一些问题。假设我们有两个组G1和G2并且有一个新的配置C——将Shard S从G1移至G2。如果G1转换为配置C时从其数据库中删除了S中的所有key则G2在尝试移动到C时如何获取S的数据 Client requests during configuration changes 处理配置更改的最简单方法是禁止所有客户端操作直到过渡完成。虽然从概念上讲简单但这种方法在生产级系统中是不可行的。每当将机器带入或取出时它会导致所有客户暂停。 即使配置转换仍在进行中副本组仍然能够使用新配置已经join的分片。 addConfig() 定时检测是否有更新的配置若当前正在更新配置则等待更新完成再继续检测否则向raft提交命令等待达成共识然后执行。 func (kv *ShardKV) addConfig() {for kv.killed() false {if _, isLeader : kv.rf.GetState(); !isLeader {time.Sleep(100 * time.Millisecond)continue}kv.mu.Lock()isAllServing : truefor _, shard : range kv.shards {if shard.State ! Serving {isAllServing falsebreak}}kv.mu.Unlock()if isAllServing {config : kv.manager.Query(kv.config.Num 1) // next configif config.Num kv.config.Num1 {command : Command{CommandType: AddConfig,Data: config,}reply : CommonReply{}kv.startCommand(command, reply)}}time.Sleep(100 * time.Millisecond)} }insertShard() 定时检测是否需要从其他副本组pull shard向pulling状态分片所在的副本组发送GetShards-rpc得到分片信息后向raft提交插入分片的命令达成共识后执行。 func (kv *ShardKV) insertShard() {for kv.killed() false {if _, isLeader : kv.rf.GetState(); !isLeader {time.Sleep(100 * time.Millisecond)continue}kv.mu.Lock()GID2ShardIds : kv.getLastGID2ShardIds(Pulling) // gid in last configwg : sync.WaitGroup{}wg.Add(len(GID2ShardIds))for gid, shardIds : range GID2ShardIds {configNum, servers : kv.config.Num, kv.lastConfig.Groups[gid]go func(gid int, shardIds []int, configNum int, servers []string) {defer wg.Done()// get pulling shards in other groupfor _, server : range servers {args : PullShardArgs{GID: gid,ShardIds: shardIds,ConfigNum: configNum,}reply : PullShardReply{}srv : kv.make_end(server)ok : srv.Call(ShardKV.GetShards, args, reply)if ok reply.Err OK {reply.ConfigNum configNumcommand : Command{CommandType: InsertShard,Data: reply,}kv.startCommand(command, CommonReply{})}}}(gid, shardIds, configNum, servers)}kv.mu.Unlock()wg.Wait()time.Sleep(100 * time.Millisecond)} }adjustGCing()——Garbage collection of state 定时检测是否有GCing状态分片这种状态表示分片已经复制到副本组中。若有则向这些分片之前所在的副本组发送DeleteShards-rpc删除其中BePulling状态分片然后向raft提交将GCing状态修改为Serving状态的命令。 func (kv *ShardKV) adjustGCing() {for kv.killed() false {if _, isLeader : kv.rf.GetState(); !isLeader {time.Sleep(100 * time.Millisecond)continue}kv.mu.Lock()GID2ShardIds : kv.getLastGID2ShardIds(GCing)wg : sync.WaitGroup{}wg.Add(len(GID2ShardIds))for gid, shardIds : range GID2ShardIds {configNum, servers : kv.config.Num, kv.lastConfig.Groups[gid]go func(gid int, shardIds []int, configNum int, servers []string) {defer wg.Done()// remove gcing shards in other groupfor _, server : range servers {args : RemoveShardArgs{ShardIds: shardIds,ConfigNum: configNum,}reply : RemoveShardReply{}srv : kv.make_end(server)ok : srv.Call(ShardKV.DeleteShards, args, reply)if ok reply.Err OK {args : AdjustShardArgs{ShardIds: shardIds,ConfigNum: configNum,}command : Command{CommandType: AdjustState,Data: args,}kv.startCommand(command, CommonReply{})}}}(gid, shardIds, configNum, servers)}kv.mu.Unlock()wg.Wait()time.Sleep(100 * time.Millisecond)} }adjustBePulling() 主要解决快照记录的时间点不同不同服务器回退到了不同的状态。定时检测状态为BePulling的分片若配置落后于被插入分片的副本组即原先分片状态为Pulling的副本组而快照回退正常所有分片正常迁移状态均为Serving而不是GCing的配置则可以判断持久化状态回退失误将BePulling状态转为Serving。 func (kv *ShardKV) adjustBePulling() {for kv.killed() false {if _, isLeader : kv.rf.GetState(); !isLeader {time.Sleep(100 * time.Millisecond)continue}kv.mu.Lock()GID2ShardIds : kv.getNowGID2ShardIds(BePulling)wg : sync.WaitGroup{}wg.Add(len(GID2ShardIds))for gid, shardIds : range GID2ShardIds {configNum, servers : kv.config.Num, kv.lastConfig.Groups[gid]go func(gid int, shardIds []int, configNum int, servers []string) {defer wg.Done()// get bepulling shards in now groupfor _, server : range servers {args : CheckArgs{ShardIds: shardIds,ConfigNum: configNum,}reply : CheckReply{}srv : kv.make_end(server)ok : srv.Call(ShardKV.CheckShards, args, reply)if ok reply.Err OK {args : AdjustShardArgs{ShardIds: shardIds,ConfigNum: configNum,}command : Command{CommandType: AdjustState,Data: args,}kv.startCommand(command, CommonReply{})}}}(gid, shardIds, configNum, servers)}kv.mu.Unlock()wg.Wait()time.Sleep(100 * time.Millisecond)} }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/92610.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

门户网站设计特点wordpress批量修改标题

问题描述 在训练模型的过程中遇到了apex库的报错IndexError: tuple index out of range导致无法训练。在github查询后找到了解决方法 问题解决 需要修改/apex-master/apex/amp/utils.py这个文件的代码 从93行开始修改 if x in cache:cached_x cache[x]next_functions_ava…

茂名网站制作价格舆情app

yum是一个用于管理rpm包的后台程序,用python写成,可以非常方便的解决rpm的依赖关系。在建立好yum服务器后,yum客户端可以通过 http、ftp方式获得软件包,并使用方便的命令直接管理、更新所有的rpm包,甚至包括kernel的更…

申请免费网站多少钱做淘宝客必须建网站吗

上周,我在斯德哥尔摩的Jfokus 2012上做了一个关于JavaFX的演讲,当时我意识到每次活动都会问三个问题。 似乎有一个普遍的兴趣,所以我尝试在这篇文章中回答他们(尽可能的说实话): iPad或其他移动设备上的Jav…

一个空间怎么放两个网站重庆整站seo

总结反思在部署上线短链接项目过程中所踩到的坑 不容易,自己从零到一手敲的短链接项目,中间遇到了不少的曲折,终于部署上线了。 项目的上线地址:短链接系统 由于没有 2 核 4 g 服务器,就使用了两台 2 核 2 g 丐版服务…

网站总体规划设计说明南京十大广告公司

前言本篇展示了如何在ASP.NET Core应用程序中设置IP白名单验证的2种方式。你可以使用以下2种方式:用于检查每个请求的远程 IP 地址的中间件。MVC 操作筛选器,用于检查针对特定控制器或操作方法的请求的远程 IP 地址。中间件Startup.Configure方法将自定义…

软件开发网站模板建设商务网站目的

一、引言 在互联网产品优化和运营策略制定中,AB测试(也称为分组测试或随机化对照实验)是一种科学且严谨的方法。它通过将用户群体随机分配至不同的实验组(通常是A组和B组),对比不同版本的产品或策略对关键…

如何制作网站连接数据库网站建设与管理试题答案

从.NET Framework 迁移到.NET 5 犹如搬家,我们都知道搬家是很痛苦的,我们请求搬家公司来减轻我们的压力,.NET 升级助手 的作用就类似我们聘请的搬家公司,帮助我们处理繁重乏味的迁移工作。.NET 升级助手是一个全局命令行工具&…

教学平台网站开发装修方案

crontab的基本格式: f1  f2  f3  f4  f5  command 分  时 日  月  周  命令 第一列f1代表分钟1~59:当f1为表示每分钟都要执行;为/n表示每n分钟执行一次;为a-b表示从第a分钟到第b分钟这段时间要执行;为a,…

南昌做网站的公司哪家好wordpress主题版权

lsblk查看分区 Linux分区 挂载的经典案例 1. 虚拟机增加磁盘 点击这里,看我的这篇文章操作 添加之后,需要重启系统,不重启在系统里看不到新硬盘哦 出来了,但还没有分区 2. 分区 还没有格式化 3. 格式化磁盘 4. 挂载 5. 卸载…

怎么在自己做的网站上发视频临清网站优化

文章目录 前言C(Consistency 数据一致性)A(Availability 服务可用性)P(Partition Tolerance 分区容错性)CAP理论最后 前言 你好,我是醉墨居士,我一起探索一下分布式系统的三字真经C…

如何在网站投放广告研究生网站 建设 需求

常用查询 对MySQL数据库的查询,除了基本的查询外,有时候需要对查询的结果集进行处理; 例如:只取10条数据、对查询结果进行排序或分组等 一、按关键字排序 ps:类比与windows任务管理器 使用select 语句可以将需要的…

1688精品货源网站入口wordpress 怎么加速

一、Qwen2-VL简介 Qwen2-VL是Qwen-VL的升级版本,能力更强,性能全面提升。尤其是72B参数的版本更是取了惊人的成绩。它可以读懂不同分辨率和不同长宽比的图片,在 MathVista、DocVQA、RealWorldQA、MTVQA 等基准测试创下全球领先的表现&#xf…

wordpress制作商城郑州纯手工seo

问题:在Java里怎将字节数转换为我们可以读懂的格式? 在Java里怎将字节数转换为我们可以读懂的格式 像1024应该变成"1 Kb",而1024*1024应该变成"1 Mb". 我很讨厌为每个项目都写一个工具方法。在Apache Commons有没有这…

培训机构网站设计好吗网站开发的结论

21. 合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 这题虽然也做出来了,但是做得不好,用了额外的新节点去组成新的链表。其实直接改变原有链表的指向就行了,不用开那么多…

宝安网站 建设seo信科贵州建设厅监理协会网站

前言 随着现代软件系统日益复杂和用户规模的不断增长,分布式架构成为了保持系统高可用性与高性能的标准解决方案。然而,随之而来的是对系统容量治理的新挑战。在这样的背景下,容量治理成为了分布式系统设计和运维中不可或缺的一环。要确保系…

正规营销型网站培训中心营销网站建设网站开发

python项目导入eclipse的步骤: 1、首先,打开Eclipse集成开发程序,在菜单栏上点击“File(F)”,在弹出来的列表中点击“导入(I)...”。 2、在弹出来的“导入”窗口中,选择“常规”选项中的“现有…

送给做网站的锦旗语杭州最专业的seo公司

在数字媒体时代,视频已经成为信息传递的主要方式之一。那如何让视频在众多内容中脱颖而出,吸引更多的观众呢?除了内容本身的质量外,视频的封面也是吸引的关键因素之一。下面一起看云炫AI智剪如何通过视频剪辑方法从视频中提取封面…

哪里有手机网站建设公司网站建网站建设seo帮帮您

解析 一直在路径可逆上做功夫,跑偏了。 题目可以转化为一个模型:给出一张无向图,每次可以移动到未移动过的点上,不能移动者判负。 这个的做法就是判断是否完美匹配,完美匹配则后手必胜,否则先手必胜。 …

ae模板下载网站推荐企业网站如何设计网页

转载自 jar包天天见,可是你知道它的运行机制吗 今天介绍两个大家每天都在用但是却很少去了解它的知识点:spi 和 jar 运行机制,废话不多说,开始正题。 spi spi 是 Java 提供的一套用来被第三方实现或者扩展的 API ,…

泉州人才网网站seo诊断分析和优化方案

很多去意大利留学的学生会选择去米兰大学留学,那么留学米兰大学需要了解哪些重要事项呢?跟着出国留学网来看看吧!欢迎阅读。意大利留学米兰大学解析院校基本信息欧洲排名7所在省州伦巴第大区所在城市Milano学校性质公立建校年代1923年学校人数60406人官方…