发明内容
针对上述属性存储于一个可靠节点导致***性能下降的问题,本发明提供了一种文件***的属性同步控制方法、装置和***,以至少解决上述问题。
根据本发明的一个方面,提供了一种文件***的属性同步控制方法,包括:申请单板根据当前对属性的更新操作类型确定同步方式;其中,该更新操作类型包括:简易操作和复杂操作;申请单板按照确定的同步方式与属性的元数据单板进行属性同步操作,并在本地存储同步后的属性。
上述申请单板根据当前对属性的更新操作类型确定同步方式包括:如果当前对属性的更新操作类型为简易操作,申请单板确定同步方式为更新不受限的同步操作;如果当前对属性的更新操作类型为复杂操作,申请单板确定同步方式为更新受限的同步操作。
上述申请单板按照确定的同步方式与属性的元数据单板进行属性同步操作包括:当申请单板确定的同步方式为更新不受限的同步操作时,申请单板对本地的属性进行更新操作,并将更新前的属性和更新后的属性发送给属性的元数据单板;申请单板接收元数据单板的响应消息,如果响应消息指示更新操作成功,申请单板将更新后的属性作为新属性;如果该响应消息指示更新操作失败,申请单板将响应消息中携带的属性作为新属性。
上述申请单板按照确定的同步方式与属性的元数据单板进行属性同步操作包括:当申请单板确定的同步方式为更新受限的同步操作时,申请单板向属性的元数据单板发送获取更新权限的请求;申请单板接收元数据单板返回的授予更新权限的指示和指示对应的属性;申请单板对属性进行更新操作,并定期将更新后的属性发送给元数据单板。
上述申请单板对属性进行更新操作之后,上述方法还包括:申请单板接收到第三单板获取属性的请求后,将更新后的属性发送给第三单板。
上述申请单板将更新后的属性发送给第三单板之前,该方法还包括:申请单板记录第三单板的地址和获取时间;申请单板根据记录的第三单板的获取时间判断第三单板在指定时长内的获取次数是否大于阈值,如果是,标记第三单板为属性的热节点,用以后续对属性进行更新操作之后,将更新后的属性发送给属性的热节点。
根据本发明的另一个方面,提供了一种文件***的属性同步控制方法,包括:元数据单板接收申请单板的更新请求;元数据单板根据更新请求中携带的信息确定同步方式;元数据单板按照确定的同步方式与申请单板进行属性同步操作,并在本地存储同步后的属性。
上述数据单板根据更新请求中携带的信息确定同步方式包括:如果更新请求中携带的信息是申请单板更新前的属性和更新后的属性,元数据单板确定同步方式为更新不受限的同步操作;如果更新请求中携带的信息是获取更新权限的请求,元数据单板确定同步方式为更新受限的同步操作。
上述元数据单板按照确定的同步方式与申请单板进行属性同步操作包括:当元数据单板确定的同步方式为更新不受限的同步操作时,元数据单板比较申请单板更新前的属性与本地属性是否一致;如果一致,元数据单板向申请单板发送携带有更新操作成功指示的响应消息,将申请单板更新后的属性作为新属性,并向除申请单板之外的其它单板广播新属性;如果不一致,元数据单板向申请单板发送携带有更新操作失败指示和本地属性的响应消息。
上述元数据单板按照确定的同步方式与申请单板进行属性同步操作包括:当元数据单板确定的同步方式为更新受限的同步操作时,元数据单板判断是否授予申请单板更新权限;如果授予,元数据单板向申请单板发送授予更新权限的指示和指示对应的属性,并向除申请单板之外的其它单板广播申请单板的地址和设置缓存属性为无效的通知;元数据单板定期接收申请单板更新后的属性,将更新后的属性作为新属性。
上述方法还包括在以下情况之一发生时,元数据单板取消申请单板的更新权限:元数据单板接收到申请单板发送的属性更新完成通知;元数据单板在设定时长内均未收到来自申请单板的消息;元数据单板接送到第三单板的更新权限请求,且确认第三单板对属性的更新优于申请单板对属性的更新。
根据本发明的又一方面,提供了一种文件***的属性同步控制装置,包括:第一同步方式确定模块,用于根据当前对属性的更新操作类型确定同步方式;其中,该更新操作类型包括:简易操作和复杂操作;第一同步操作模块,用于按照第一同步方式确定模块确定的同步方式与属性的元数据单板进行属性同步操作,并在本地存储同步后的属性。
上述第一同步方式确定模块包括:第一同步方式确定单元,用于如果当前对属性的更新操作类型为简易操作,确定同步方式为更新不受限的同步操作;第二同步方式确定单元,用于如果当前对属性的更新操作类型为复杂操作,确定同步方式为更新受限的同步操作。
上述第一同步操作模块包括:更新属性发送单元,用于当申请单板确定的同步方式为更新不受限的同步操作时,对本地的属性进行更新操作,并将更新前的属性和更新后的属性发送给属性的元数据单板;第一新属性确定单元,用于接收元数据单板的响应消息,如果响应消息指示更新操作成功,将更新后的属性作为新属性;如果响应消息指示更新操作失败,将响应消息中携带的属性作为新属性。
上述第一同步操作模块包括:权限请求单元,用于当申请单板确定的同步方式为更新受限的同步操作时,向属性的元数据单板发送获取更新权限的请求;信息接收单元,用于接收元数据单板返回的授予更新权限的指示和指示对应的属性;第二更新属性发送单元,用于对信息接收单元接收的属性进行更新操作,并定期将更新后的属性发送给元数据单板。
根据本发明的再一方面,提供了一种文件***的属性同步控制装置,包括:更新请求接收模块,用于接收申请单板的更新请求;第二同步方式确定模块,用于根据更新请求接收模块接收的更新请求中携带的信息确定同步方式;第二同步操作模块,用于按照第二同步方式确定模块确定的同步方式与申请单板进行属性同步操作,并在本地存储同步后的属性。
上述第二同步方式确定模块包括:第三同步方式确定单元,用于如果更新请求中携带的信息是申请单板更新前的属性和更新后的属性,确定同步方式为更新不受限的同步操作;第四同步方式确定单元,用于如果更新请求中携带的信息是获取更新权限的请求,确定同步方式为更新受限的同步操作。
上述第二同步操作模块包括:属性比较单元,用于当第一同步方式确定单元确定的同步方式为更新不受限的同步操作时,比较申请单板更新前的属性与本地属性是否一致;同步处理单元,用于如果属性比较单元的比较结果为一致,向申请单板发送携带有更新操作成功指示的响应消息,将申请单板更新后的属性作为新属性,并向除申请单板之外的其它单板广播新属性;如果属性比较单元的比较结果为不一致,向申请单板发送携带有更新操作失败指示和本地属性的响应消息。
上述第二同步操作模块包括:权限判断单元,用于当第二同步方式确定单元确定的同步方式为更新受限的同步操作时,判断是否授予申请单板更新权限;广播单元,用于如果权限判断单元的判断结果为授予,向申请单板发送授予更新权限的指示和指示对应的属性,并向除申请单板之外的其它单板广播申请单板的地址和设置缓存属性为无效的通知;属性更新单元,用于定期接收申请单板更新后的属性,将更新后的属性作为新属性。
根据本发明的还一方面,提供了一种文件***的属性同步控制***,包括申请单板和元数据单板,其中,申请单板包括上述本发明又一方面中的属性同步控制装置,元数据单板包括上述本发明再一方面中的属性同步控制装置。
通过本发明,按照属性的更新操作类型有针对地与元数据单板进行属性的同步过程,进而可以简化属性同步过程,同时通过将同步后的属性在申请单板侧进行存储,为后续申请单板获取该属性提供了便捷方式,这种方式避免了属性存储于一个可靠节点导致***性能下降的问题,降低了属性的访问和修改所带来的性能和资源的消耗,优化了***性能。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本发明实施例中的文件***中设置有多个单板(也可以称为节点),其中,将存储元数据的单板称为元数据单板,将当前进行属性操作的单板称为申请单板,下面分别从申请单板和元数据单板侧描述文件***的属性同步控制方法。
如图1所示的文件***的属性同步控制方法的流程图,该方法以从申请单板侧描述为例进行说明,该方法包括以下步骤:
步骤S102,申请单板根据当前对属性的更新操作类型确定同步方式;其中,该更新操作类型包括:简易操作和复杂操作;
例如:chmod(文件权限修改)、chown(文件属主修改)、chgrp(文件用户组修改)等操作均可以通过操作一次完成,这些操作就可以归类为简单操作,而像createfile(创建文件)、writefile(写文件)等连续的操作中的属性不能一次更新到位,则可以将这些操作归类为复杂操作;或者当前操作需要修改多个元数据的属性的情况也可以归类为复杂操作;
步骤S104,申请单板按照上述确定的同步方式与属性的元数据单板进行属性同步操作,并在本地存储同步后的属性。
本实施例按照属性的更新操作类型有针对地与元数据单板进行属性的同步过程,进而可以简化属性同步过程,同时通过将同步后的属性在申请单板侧进行存储,为后续申请单板获取该属性提供了便捷方式,这种方式避免了属性存储于一个可靠节点导致***性能下降的问题,降低了属性的访问和修改所带来的性能和资源的消耗,优化了***性能。
如果当前申请单板对属性的更新操作类型为简易操作,则申请单板无需向元数据单板获取更新权限,申请单板可以确定同步方式为更新不受限的同步操作;如果当前对属性的更新操作类型为复杂操作,为了避免申请单板与元数据单板间频繁的消息交互,本实施例的申请单板可以确定同步方式为更新受限的同步操作。下面分别对更新不受限的同步操作和更新受限的同步操作进行描述。
一、更新不受限的同步操作
当申请单板确定的同步方式为更新不受限的同步操作时,申请单板先对本地的属性进行更新操作,并将更新前的属性(也可以称为原始属性)和更新后的属性发送给该属性的元数据单板;
申请单板接收上述元数据单板的响应消息,如果响应消息指示更新操作成功,则申请单板将更新后的属性作为新属性;如果响应消息指示更新操作失败,申请单板将响应消息中携带的属性作为新属性。
这种方式下,申请单板将会在本地保存上述新属性,当申请单板下次在需要对该属性进行访问时,可以直接在本地获取到该属性,为了保证属性的有效性,可以为该属性设置一个状态标志位,如果该状态标志位为I,则该属性为无效的属性,否则,该属性有效。
二、更新不受限的同步操作
当申请单板确定的同步方式为更新受限的同步操作时,申请单板向该属性的元数据单板发送获取更新权限的请求;
申请单板接收元数据单板返回的授予更新权限的指示和该指示对应的属性;
申请单板对该属性进行更新操作,并定期将更新后的属性(即新属性)发送给元数据单板。
这种同步方式之后,申请单板将在本地存储更新后的属性,因为这种复杂操作方式会对属性进行多次操作,因此本实施例采用了定期向元数据单板发送更新后的属性的方式,以使元数据单板上的属性为最新属性。
本发明实施例考虑到***中有很多的单板,为了便于其它单板就近且分散访问属性,本实施例使用MOSIE(Modifier Owner Share Exclusive Invalid,修改、拥有、共享、独享和无效)的方式管理属性,图2给出了属性缓存中单个属性的状态变迁状态图,其中,各个状态如下:
M:数据的修改者位,获得该权限的节点即拥有读写权限(可以与其他属性位共存,拥有M的节点需要记录O的位置,方便更新O的状态),相当于上述更新权限;
O:指属性的拥有者,只拥有只读的权限(目前是元数据所在的地方,同时记录M的位置);
S:属性的共享者,该节点只拥有属性只读的权限;
E:属性的独享者,拥有属性独享的权限(此时的节点一定拥有M权限,却不一定是O,可能O已被置换了,需要记录O的位置);
I:该状态的节点上的属性为无效的,没有意义。
申请单板对属性进行更新操作之后,元数据单板将会将申请单板的地址通知给其它节点,此后,第三单板可以保存申请单板的地址,在需要访问上述属性时,向申请单板发送请求即可。基于此,上述方法还包括:申请单板接收到第三单板获取属性的请求后,将更新后的属性发送给第三单板。这种方式能够使第三单板方便地获取到上述属性,并且可以避免大量的节点频繁地访问元数据单板,减轻了元数据单板的压力。
为了进一步降低***将的通信量,申请单板将更新后的属性发送给第三单板之前,上述方法还包括:申请单板记录第三单板的地址和获取时间;申请单板根据记录的第三单板的获取时间判断第三单板在指定时长内的获取次数是否大于阈值,如果是,标记该第三单板为该属性的热节点,用以后续对上述属性进行更新操作之后,将更新后的属性直接发送给该属性的热节点。这种方式不需要该属性的热节点发属性获取请求给申请节点,便可以使该属性的热节点及时地获取到更新的属性。
如图3所示的文件***的属性同步控制方法的流程图,该方法以从元数据单板侧描述为例进行说明,该方法包括以下步骤:
步骤S302,元数据单板接收申请单板的更新请求;
步骤S304,元数据单板根据上述更新请求中携带的信息确定同步方式;
步骤S306,元数据单板按照确定的同步方式与上述申请单板进行属性同步操作,并在本地存储同步后的属性。
本实施例按照申请单板的更新请求中的信息确定同步方式,进而能够有针对地与申请单板进行属性的同步过程,简化了属性同步过程,同时通过将同步后的属性在元数据单板侧进行存储,为后续其它单板获取该属性提供了便捷方式,这种方式避免了属性存储于一个可靠节点导致***性能下降的问题,降低了属性的访问和修改所带来的性能和资源的消耗,优化了***性能。
本实施例中,如果更新请求中携带的信息是申请单板更新前的属性和更新后的属性,则元数据单板可以确定同步方式为更新不受限的同步操作;如果更新请求中携带的信息是获取更新权限的请求,元数据单板可以确定同步方式为更新受限的同步操作。
当元数据单板确定的同步方式为更新不受限的同步操作时,元数据单板比较上述申请单板更新前的属性与本地属性是否一致;如果一致,元数据单板向申请单板发送携带有更新操作成功指示的响应消息,将申请单板更新后的属性作为新属性,并向除申请单板之外的其它单板广播该新属性;如果不一致,元数据单板向申请单板发送携带有更新操作失败指示和本地属性的响应消息。这样可以简单地完成属性的更新过程。
当元数据单板确定的同步方式为更新受限的同步操作时,元数据单板判断是否授予申请单板更新权限(具体判断方式可以结合当前操作的具体内容进行,判断该申请节点是否适合进行当前操作);如果授予,元数据单板向申请单板发送授予更新权限的指示和指示对应的属性,并向除申请单板之外的其它单板广播申请单板的地址和设置缓存属性为无效的通知;这种方式下,元数据单板将可以定期接收申请单板更新后的属性,将更新后的属性作为新属性。
优选地,上述方法还包括在以下情况之一发生时,元数据单板取消申请单板的更新权限:1)元数据单板接收到申请单板发送的属性更新完成通知;2)元数据单板在设定时长内均未收到来自申请单板的消息;3)元数据单板接送到第三单板的更新权限请求,且确认第三单板对属性的更新优于申请单板对属性的更新。本实施例通过适时取消申请单板的更新权限,能够使其它单板获取到该更新权限,便于属性的同步操作。
本发明上述实施例中仅对属性的更新进行了描述,上述方法对应的***中可以对属性进行下述操作:
1)获取属性:即读取属性,如果所读取的属性的元数据不在本板,那么对应的元数据的单板也会得到该属性的一份数据,本板状态为S,记录元数据单板的标识(例如:单板的IP地址等可以在集群中唯一标识单板身份的一个唯一确定值),而元数据单板状态为S+O,并记录拥有的该属性的2个单板的标识,例如:当一个非元数据单板的单板(非元数据单板)获取了属性,那么元数据单板需要记录本板和获取到该属性的单板这两个单板的相关信息。
2)更新属性:通常指修改属性,如上述实施例所述,本发明实施例中涉及到两种形式:简单模式和复杂模式,即对应上述更新不受限的同步操作和更新受限的同步操作。
3)释放更新权限:归还M权限,然后对全域做一次更新。
4)删除属性:可以借助于广播方式通知给各个单板,清除相关的属性缓存,元数据单板(O节点)将清除相应的元数据。
如图4所示的简单修改属性的同步方法流程图,其中包括以下步骤:
步骤S402,简单修改单板将原始属性与改后属性(即新属性)同时发给属性的拥有者O(即元数据单板);
步骤S404,元数据单板(简称为“O单板”或者“O节点”)根据自身记录的属性与接收到的简单修改单板发送的原始属性进行对比,如果二者一致,保存上述新属性,并执行步骤S406;如果不一致,执行步骤S410;
步骤S406,元数据单板向简单修改单板发送修改成功通知,然后执行步骤S408;
步骤S408,元数据单板向广播域内的单板广播上述新属性;
其中,上述步骤S406和步骤S408的顺序可以互换;
步骤S410,元数据单板向简单修改单板返回修改失败通知,该通知携带有元数据单板上记录的属性。
如图5所示的复杂修改属性的同步方法流程图,其中包括以下步骤:
步骤S502,复杂修改单板向元数据单板获取修改权限M,发送获取M请求时,携带有自身的原始属性;
步骤S504,元数据单板根据自身记录的属性与接收到的复杂修改单板发送的原始属性进行对比,如果相同,且复杂修改单板适合授予M,执行步骤S506;否则,执行步骤S510;
步骤S506,元数据单板授予复杂修改单板M,记录复杂修改单板的地址并将自己记录的所有拥有本属性信息的数据返回给复杂修改单板,然后执行步骤S508;
步骤S508,元数据单板向广播域内的单板发送更新M的通知,该通知携带有复杂修改单板的地址和设置缓存属性为无效的指示(Invalid);即对非O广播节点下发更新M节点信息,同时无效该节点上的属性。如果对方节点需要该属性,可以向复杂修改单板申请;
其中,上述步骤S506和步骤S508的顺序可以互换;
此时复杂修改单板获得修改权限M,可以简称为M节点或者M单板,同时复杂修改单板将作为属性的更新方负责更新相关的修改。具体包括:
1)定期更新数据单板上的属性信息,同时,这种方式也是维护M状态的心跳通信方式,如果连续丢失心跳(即元数据单板设定时长内为收到该心跳通信),元数据单板将结束复杂修改单板的M状态,并以自己目前所得到的属性对记录的广播域内的单板解除复杂修改单板的M状态,并更新相关信息。同时元数据单板会将本地记录的M状态解除(就是集群中这个元数据失去了M的单板,所有的更新和读取会重新向数据的O(即元数据单板)发起请求)(本实施例中,设置有一个保护期30s,在解除复杂修改单板M状态的30s内,别的单板无法申请到M状态;如果复杂修改单板对解除M状态有异议,可以再次申请M权限,***将更新相关信息);
2)复杂修改单板在更新期间都没有出现异常,复杂修改单板完成相应操作之后需要解除M状态,例如:首先对所有广播域内的单板更新属性,同时向元数据单板发送解除M状态的通知,收到更新属性广播的单板可以给元数据单板发送确认更新的消息,此时元数据单板将作为同步的关键节点,保证收到所用广播域内的消息。
步骤S510,元数据单板向复杂修改单板返回申请失败通知,该通知携带有元数据单板上记录的属性和已经具有M权限的单板的地址(当然,如果***中没有单板具有M权限,则该通知中无此地址项)。
上述流程是复杂的属性修改流程,目的是在文件***创建、写等连续操作过程中提高本地响应速度的一种做法。
上述简单修改单板或者复杂修改单板在与其它节点进行属性同步时,可以采用广播、组播或者单波的方式,例如:需要进行同步节点的个数超过规定个数,则可以采用广播模式(需要进行同步的节点的属性状态为S,如果没有具有M权限的节点,则由O节点进行同步),通常***中的一、二层节点(假设当前文件***挂载在/mnt下面,那么/mnt/a这个文件或目录就是第一层节点,而/mnt/a/b这个文件目录就是第二层节点,因为缓存的设计是树形的,所以对于每一个缓存树,树根部分基本上每个单板都存在,设计时就可以对这两层节点做特殊处理),默认为采用广播方式。当需要同步属性的节点个数小于规定个数时,可以采用组播方式进行同步;如果需要同步属性的节点个数为1,或者该节点的状态为E(这两个节点应该是并列的状态),则可以采用单波方式。
上述流程中如果存在下述冲突的问题,本实施例优选采用下述方式处理:
1、简单修改的方式下如果有节点获得M状态
A)此时如果广播域内有其他单板需要进行简单修改也可以,但是可以选择与M状态的节点进行通讯,而不选择具有O状态的节点;
B)广播域外由于获取节点信息后就进入广播域,所以不存在广播域外简单修改的可能。
2、关于多个节点争抢M状态的解决办法
A)所有需要M状态的操作在出现无法申请到M状态后,对于具有M状态的新节点建立简单的非M状态操作流程;即由复杂流程退化到简单流程,但是操作的对象是元数据的M单板,而不是O单板,用于当O单板通知之前的M单板解除M状态回刷数据时,该M单板再次申请M权限,这样说明目前的M单板对流程的依赖很大,此时可以由M状态回退到O单板上修改为新申请的M节点退化到简单流程,在具体实现时,可以通过API程序来处理的,能够使客户了解自己的需求去申请这个权限。
B)对于目前的M状态节点,O节点将发起目前M状态的节点解除M状态的动作,以保证各个节点的公平;(即:原始的O节点要求收回M权限的流程,这个流程后所有的M请求单板(复杂请求)都会退化到简单请求,该处理是不做特殊处理的一般流程)。
3、关于O节点缓存不足,需要释放掉缓存的问题
因为是缓存,所以有可能会出现内存不够的情况,在内存不足时,缓存***为了提高性能,一般来说采取回刷到硬盘,下次需要时再从硬盘读取,如果此时O节点记录的状态是S(有自己以外的单板拥有这个状态),那么在存在M单板的时候就直接释放掉了;而如果没有O节点会指定一个S的单板为M状态同时释放掉自己的内存,这样控制权在M单板上,如果有修改的话,由M单板代行O节点的权限进行处理;当属性有修改时,M单板需要同步到O节点;此时O节点再申请内存,重新同步M单板修改过的属性(此时不需要读取磁盘上数据);
O节点当发现出现O状态必须要释放的时候,将随机选一个节点,并更新该节点的状态为M,以保证数据可以继续运行。
对应与上述方法,本发明实施例还提供了一种文件***的属性同步控制装置,该装置可以设置在上述申请单板上,参见图6,该装置包括:
第一同步方式确定模块62,用于根据当前对属性的更新操作类型确定同步方式;其中,更新操作类型包括:简易操作和复杂操作;
第一同步操作模块64,与第一同步方式确定模块62相连,用于按照第一同步方式确定模块62确定的同步方式与属性的元数据单板进行属性同步操作,并在本地存储同步后的属性。
本实施例按照属性的更新操作类型有针对地与元数据单板进行属性的同步过程,进而可以简化属性同步过程,同时通过将同步后的属性在申请单板侧进行存储,为后续申请单板获取该属性提供了便捷方式,这种方式避免了属性存储于一个可靠节点导致***性能下降的问题,降低了属性的访问和修改所带来的性能和资源的消耗,优化了***性能。
其中,第一同步方式确定模块62包括:第一同步方式确定单元,用于如果当前对属性的更新操作类型为简易操作,确定同步方式为更新不受限的同步操作;第二同步方式确定单元,用于如果当前对属性的更新操作类型为复杂操作,确定同步方式为更新受限的同步操作。
优选地,第一同步操作模块64包括:更新属性发送单元,用于当申请单板确定的同步方式为更新不受限的同步操作时,对本地的属性进行更新操作,并将更新前的属性和更新后的属性发送给属性的元数据单板;第一新属性确定单元,用于接收元数据单板的响应消息,如果响应消息指示更新操作成功,将更新后的属性作为新属性;如果响应消息指示更新操作失败,将响应消息中携带的属性作为新属性。
优选地,第一同步操作模块64包括:权限请求单元,用于当申请单板确定的同步方式为更新受限的同步操作时,向属性的元数据单板发送获取更新权限的请求;信息接收单元,用于接收元数据单板返回的授予更新权限的指示和指示对应的属性;第二更新属性发送单元,用于对信息接收单元接收的属性进行更新操作,并定期将更新后的属性发送给元数据单板。
对应于上述方法,本发明实施例还提供了一种文件***的属性同步控制装置,该装置可以设置在上述元数据单板上,参见图7,该装置包括:
更新请求接收模块72,用于接收申请单板的更新请求;
第二同步方式确定模块74,与更新请求接收模块72相连,用于根据更新请求接收模块72接收的更新请求中携带的信息确定同步方式;
第二同步操作模块76,与第二同步方式确定模块74相连,用于按照第二同步方式确定模块74确定的同步方式与申请单板进行属性同步操作,并在本地存储同步后的属性。
本实施例按照申请单板的更新请求中的信息确定同步方式,进而能够有针对地与申请单板进行属性的同步过程,简化了属性同步过程,同时通过将同步后的属性在元数据单板侧进行存储,为后续其它单板获取该属性提供了便捷方式,这种方式避免了属性存储于一个可靠节点导致***性能下降的问题,降低了属性的访问和修改所带来的性能和资源的消耗,优化了***性能。
优选地,第二同步方式确定模块74包括:第三同步方式确定单元,用于如果更新请求中携带的信息是申请单板更新前的属性和更新后的属性,确定同步方式为更新不受限的同步操作;第四同步方式确定单元,用于如果更新请求中携带的信息是获取更新权限的请求,确定同步方式为更新受限的同步操作。
优选地,第二同步操作模块76包括:属性比较单元,用于当第一同步方式确定单元确定的同步方式为更新不受限的同步操作时,比较申请单板更新前的属性与本地属性是否一致;同步处理单元,用于如果属性比较单元的比较结果为一致,向申请单板发送携带有更新操作成功指示的响应消息,将申请单板更新后的属性作为新属性,并向除申请单板之外的其它单板广播新属性;如果属性比较单元的比较结果为不一致,向申请单板发送携带有更新操作失败指示和本地属性的响应消息。
优选地,第二同步操作模块76包括:权限判断单元,用于当第二同步方式确定单元确定的同步方式为更新受限的同步操作时,判断是否授予申请单板更新权限;广播单元,用于如果权限判断单元的判断结果为授予,向申请单板发送授予更新权限的指示和指示对应的属性,并向除申请单板之外的其它单板广播申请单板的地址和设置缓存属性为无效的通知;属性更新单元,用于定期接收申请单板更新后的属性,将更新后的属性作为新属性。
对应于上述方法和装置,本发明实施例还提供了一种文件***的属性同步控制***,包括申请单板60和元数据单板70,其中,申请单板60包括上述图6所示的装置,元数据单板70包括上述图7所示的装置。
本***可以显著提高局部访问的性能,同时在高压力访问的情况下,可以通过策略,分散***元数据单板的处理压力。
以上实施例中的状态指一个属性对应的状态,一个节点上可能有上百个属性,每个属性对应着相应的状态。
从以上的描述中可以看出,本发明实施例使用一种高效的同步方式管理起整个文件***的属性,从而使远端客户端可以根据本***的记录数据确定出缓存的元数据是否是可用的,从而提高本地节点的性能,同时又可以依托本***,降低属性的访问和修改所带来的性能和资源的消耗,进而避免了***中的各个节点均向一个节点获取属性引起的***性能下降问题。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。