锁紧机构¶
- 作者
托马斯堡
- 联系
t在terriscope.fr的端口
mapcache有时需要对给定资源的独占访问,并提供一些机制以确保在该资源上不能有多个mapcache实例操作。这种情况可能发生在:
向源WMS服务器发送给定metatile的请求。只有一个mapcache实例应发送该请求;处理来自同一metatile的tile的其他mapcache实例应等待该请求完成,而不是再次发送相同的确切请求(以避免重载WMS服务器)。
在TIFF缓存中写入磁贴。TIFF库不处理并发写入,因此MapCache必须确保只有一个实例正在访问给定的TIFF文件进行写入。
储物柜配置有:
<locker type="...">
<timeout>60</timeout>
<retry>0.1</retry>
...
</locker>
当一个mapcache实例由于已经被另一个实例获取而无法获取锁时,它将:
每隔`<retry>`秒检查一次,查看另一个实例是否释放了锁。
考虑在`<timeout>`秒后,另一个实例失败,并在获取锁之前将其删除。
磁盘锁¶
这个锁定机制将文件放在文件系统的某个地方。为了同步多个mapcache实例,文件系统可以是网络共享。
<locker type="disk">
<directory>/path/to/lockdir</directory>
</locker>
配置的目录应该可以被mapcache实例读/写访问。
内存缓存锁¶
这个锁定机制使用第三方memcache实例来跟踪锁。
<locker type="memcache">
<server>
<host>localhost</host>
<port>11211</port>
</server>
<server>
<host>memcache-host</host>
<port>11212</port>
</server>
</locker>
后退锁¶
如果第一个锁失败,这个“meta”锁将返回到第二个配置的锁(通常在memcache实例关闭时与memcache实例一起使用)。
<locker type="fallback"
<locker type="memcache">
<server>
<host>localhost</host>
<port>11211</port>
</server>
<server>
<host>memcache-host</host>
<port>11212</port>
</server>
</locker>
<locker type="disk">
<directory>/path/to/lockdir</directory>
</locker>
</locker>