zookeeper的snapshot可以删除吗

zookeeper的snapshot可以删除吗,第1张

2006年的时候Google出了Chubby来解决分布一致性的问题(distributed consensus problem),所有集群中的服务器通过Chubby最终选出一个Master Server ,最后这个Master Server来协调工作。简单来说其原理就是:在一个分布式系统中,有一组服务器在运行同样的程序,它们需要确定一个Value,以那个服务器提供的信息为主/为准,当这个服务器经过n/2+1的方式被选出来后,所有的机器上的Process都会被通知到这个服务器就是主服务器 Master服务器,大家以他提供的信息为准。很想知道Google Chubby中的奥妙,可惜人家Google不开源,自家用。
但是在2009年3年以后沉默已久的Yahoo在Apache上推出了类似的产品ZooKeeper,并且在Google原有Chubby的设计思想上做了一些改进,因为ZooKeeper并不是完全遵循Paxos协议,而是基于自身设计并优化的一个2 phase commit的协议,如图所示:
ZooKeeper跟Chubby一样用来存放一些相互协作的信息(Coordination),这些信息比较小一般不会超过1M,在zookeeper中是以一种hierarchical tree的形式来存放,这些具体的Key/Value信息就store在tree node中。
当有事件导致node数据,例如:变更,增加,删除时,Zookeeper就会调用 triggerWatch方法,判断当前的path来是否有对应的监听者(watcher),如果有watcher,会触发其process方法,执行process方法中的业务逻辑

maven对构件的更新判断基本上是两种,一种是稳定版本,一种是maven特有的SNAPSHOT版本。
稳定版本很好判断,直接根据maven构件的坐标体系就能够获得。先从本地仓库中找,如果本地仓库没有,就从pomxml和settingxml配置的远程仓库来找。
SNAPSHOT版本的判断比较麻烦,基本步骤如下:
假设我在2014年08月22日09时40分52秒在我自己的电脑上使用 “mvn install” 构建了“commycompanydemo:test:10-SNAPSHOT”。
那么Maven会在本地仓库目录“~/m2/com/mycompany/demo/test/10-SNAPSHOT/”下生成文件“maven-metadata-localxml”,内容如下:
<xml version="10" encoding="UTF-8">
<metadata modelVersion="110">
<groupId>commycompanydemo</groupId>
<artifactId>test</artifactId>
<version>10-SNAPSHOT</version>
<versioning>
<snapshot>
<localCopy>true</localCopy>
</snapshot>
<lastUpdated>20140822084052</lastUpdated>
<snapshotVersions>
<snapshotVersion>
<extension>jar</extension>
<value>10-SNAPSHOT</value>
<updated>20140822084052</updated>
</snapshotVersion>
<snapshotVersion>
<extension>pom</extension>
<value>10-SNAPSHOT</value>
<updated>20140822084052</updated>
</snapshotVersion>
</snapshotVersions>
</versioning>
</metadata>
十点钟的时候,其他同事更新了commycompanydemo:test:10-SNAPSHOT的内容,并通过 "mvn deploy" 发布到了公司的Maven服务器上。
公司Maven服务器上产生了文件:
test-10-20140822100021-1jar
test-10-20140822100021-1pom
并更新了maven-metadataxml,内容如下:
<xml version="10" encoding="UTF-8">
<metadata modelVersion="110">
<groupId>commycompanydemo</groupId>
<artifactId>test</artifactId>
<version>10-SNAPSHOT</version>
<versioning>
<snapshot>
<timestamp>20140822100021</timestamp>
<buildNumber>34</buildNumber>
</snapshot>
<lastUpdated>20140822100021</lastUpdated>
<snapshotVersions>
<snapshotVersion>
<extension>jar</extension>
<value>10-20140822100021-1</value>
<updated>20140822100021</updated>
</snapshotVersion>
<snapshotVersion>
<extension>pom</extension>
<value>10-20140822100021-1</value>
<updated>20130407081828</updated>
</snapshotVersion>
</versioning>
</metadata>

可以使用复制存储过程以编程方式定义和修改快照属性,而使用的存储过程取决于发布的类型。在创建快照发布或事务发布时配置快照属性在发布服务器上,执行 sp_addpublication。为 @publication 指定发布名称,将 @repl_freq 的值指定为 snapshot 或continuous,并指定一个或多个下列与快照相关的参数:@alt_snapshot_folder - 如果此发布的快照可从某位置访问,而不是或者也能从快照的默认文件夹访问,则指定相应路径。@compress_snapshot - 如果备用快照文件夹内的快照文件是 Microsoft CAB 文件格式的压缩文件,则将值指定为 true。@pre_snapshot_script - 指定在初始快照应用之前的初始化过程中将在订阅服务器上执行的 sql 文件的文件名和完整路径。@post_snapshot_script - 指定在初始快照应用之后的初始化过程中将在订阅服务器上执行的 sql 文件的文件名和完整路径。@snapshot_in_defaultfolder - 如果快照仅在非默认位置可用,则将值指定为 false。有关创建发布的详细信息,请参阅如何创建发布(复制 Transact-SQL 编程)。创建合并发布时配置快照属性在发布服务器上,执行 sp_addmergepublication。为 @publication 指定发布名称,将 @repl_freq 的值指定为 snapshot 或continuous,并指定一个或多个下列与快照相关的参数:@alt_snapshot_folder - 如果此发布的快照可从某位置访问,而不是或者也能从快照的默认文件夹访问,则指定相应路径。@compress_snapshot - 如果备用快照文件夹内的快照文件是 CAB 文件格式的压缩文件,则将值指定为 true。@pre_snapshot_script - 指定在初始快照应用之前的初始化过程中将在订阅服务器上执行的 sql 文件的文件名和完整路径。@post_snapshot_script - 指定在初始快照应用之后的初始化过程中将在订阅服务器上执行的 sql 文件的文件名和完整路径。@snapshot_in_defaultfolder - 如果快照仅在非默认位置可用,则将值指定为 false。有关创建发布的详细信息,请参阅如何创建发布(复制 Transact-SQL 编程)。修改现有快照发布或事务发布的快照属性在发布服务器上,对发布数据库执行 sp_changepublication。将 @force_invalidate_snapshot 的值指定为 1,并为 @property 指定下列值之一:alt_snapshot_folder - 也为 @value 指定备用快照文件夹的新路径。compress_snapshot - 也将 @value 的值指定为 true 或false,以指示备用快照文件夹内的快照文件是否为 CAB 文件格式的压缩文件。pre_snapshot_script - 也为 @value 指定在初始快照应用之前的初始化过程中将在订阅服务器上执行的 sql 文件的文件名和完整路径。post_snapshot_script - 也为 @value 指定在初始快照应用之后的初始化过程中将在订阅服务器上执行的 sql 文件的文件名和完整路径。snapshot_in_defaultfolder - 也将值指定为 true 或false,以指示快照是否仅在非默认位置可用。(可选)在发布服务器上,对发布数据库执行 sp_changepublication_snapshot。 指定 @publication 以及将要更改的一个或多个计划或安全凭据参数。安全说明如果可能,请在运行时提示用户输入安全凭据。 如果必须在脚本文件中存储凭据,则必须保护文件以防止未经授权的访问。在命令提示符处运行复制快照代理或启动快照代理作业以生成新的快照。 有关详细信息,请参阅如何创建初始快照(复制 Transact-SQL 编程)。 修改现有合并发布的快照属性在发布服务器上,对发布数据库执行 sp_changemergepublication。将 @force_invalidate_snapshot 的值指定为 1,并为 @property 指定下列值之一:alt_snapshot_folder - 也为 @value 指定备用快照文件夹的新路径。compress_snapshot - 也将 @value 的值指定为 true 或false,以指示备用快照文件夹内的快照文件是否为 CAB 文件格式的压缩文件。pre_snapshot_script - 也为 @value 指定在初始快照应用之前的初始化过程中将在订阅服务器上执行的 sql 文件的文件名和完整路径。post_snapshot_script - 也为 @value 指定在初始快照应用之后的初始化过程中将在订阅服务器上执行的 sql 文件的文件名和完整路径。snapshot_in_defaultfolder - 也将值指定为 true 或false,以指示快照是否仅在非默认位置可用。在命令提示符处运行复制快照代理或启动快照代理作业以生成新的快照。 有关详细信息,请参阅如何创建初始快照(复制 Transact-SQL 编程)。示例此示例创建一个使用备用快照文件夹和压缩快照的发布。TSQL -- This script uses sqlcmd scripting variables They are in the form -- $(MyVariable) For information about how to use scripting variables -- on the command line and in SQL Server Management Studio, see the -- "Executing Replication Scripts" section in the topic -- "Programming Replication Using System Stored Procedures" --Declarations for adding a merge publication DECLARE @publicationDB AS sysname; DECLARE @publication AS sysname; DECLARE @article AS sysname; DECLARE @owner AS sysname; DECLARE @snapshot_share AS sysname; SET @publicationDB = N'AdventureWorks'; SET @publication = N'AdvWorksSalesOrdersMergeAltSnapshot'; SET @article = N'SpecialOffer'; SET @owner = N'Sales'; SET @snapshot_share = '\\' + $(InstanceName) + '\AltSnapshotFolder'; -- Enable merge replication on the publication database, using defaults USE master EXEC sp_replicationdboption @dbname = @publicationDB, @optname=N'merge publish', @value = N'true'; -- Create new merge publication with an alternate snapshot location USE [AdventureWorks] EXEC sp_addmergepublication -- required parameters @publication = @publication, @snapshot_in_defaultfolder = N'false', @alt_snapshot_folder = @snapshot_share, @compress_snapshot = N'true'; -- Create the snapshot job for the publication EXEC sp_addpublication_snapshot @publication = @publication, @job_login = $(Login), @job_password = $(Password); -- Add an article EXEC sp_addmergearticle @publication = @publication, @article = @article, @source_object = @article, @type = N'table', @source_owner = @owner, @destination_owner = @owner; -- Start the snapshot job EXEC sp_startpublication_snapshot @publication = @publication; GO 请参阅概念备用快照文件夹位置压缩的快照在应用快照之前和之后执行脚本复制系统存储过程概念通过FTP 传输快照更改发布和项目属性


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13452113.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-09
下一篇 2023-08-09

发表评论

登录后才能评论

评论列表(0条)

保存