ZEO - ZODB的单一服务器客户端/服务器数据库服务器
项目描述
ZEO是ZODB的客户/服务器存储,用于在多个客户端之间共享单一存储。使用ZEO时,一个较低级别的存储(通常是文件存储)在ZEO服务器进程中打开。客户端程序通过ZEO ClientStorage连接到该进程。ZEO为所有客户端提供对数据库的一致视图。ZEO客户端和服务器使用TCP之上的自定义协议进行通信。
ZEO的一些替代方案
NEO 是一个分布式服务器客户端服务器存储。
RelStorage 利用关系型数据库管理系统服务器提供客户端服务器存储。
文档可在 readthedocs 上找到。
变更日志
6.0.0 (2023-11-23)
取消对 Python 2.7、3.5、3.6 的支持。
添加对 Python 3.12 的支持。
直接使用 async/await 而不是 @coroutine/yield 进行切换。
取消对凭据对象的实验性支持:对应的 ClientStorage.__init__ 参数 credentials 保留但忽略。从现在开始,ZEO 只支持通过 SSL 证书进行身份验证。
请注意,ZEO 5 从未支持通过 username 和 password 进行身份验证 - 在 2016 年 ZEO 5.0 发布之前就取消了此类基本身份验证的支持。
修复 Python 3.12.0b4 的问题(问题 231 <https://github.com/zopefoundation/ZEO/issues/231>_)。
通过查找具有前缀 check(由 ZODB<6 使用)和 test(由 ZODB>=6 使用)的 ZODB 继承测试,确保测试与 ZODB<6 和 ZODB>=6 都兼容(问题 233 <https://github.com/zopefoundation/ZEO/issues/233>_)。
5.4.0 (2023-01-18)
重新实现并简化 ClientStorage 实现的 asyncio 部分。
从具有显式回调的未来切换到 async/await 样式。
使用标准 asyncio 功能来实现超时。
重新设计实现 ZEO 客户端协议的类的 API。
显著改进源文档和测试。
修复多个并发错误。
添加基于 cython 的可选优化;它加快了读取速度但减慢了写入速度。要使用它,请安装 cython(及其依赖项)并在 src/ZEO/asyncio 中运行 cythonize -i *.pyx。
取消对与 ZEO4 服务器的互操作性的支持。结果发现,与 ZEO5 服务器的互操作性相反,ZEO5 客户端在实现与 ZEO4 服务器的互操作性时存在并发错误,这些错误导致数据损坏。修复并不简单,我们相信在 2022 年没有人实际使用 ZEO5.client-ZEO4.server 配置。这就是为什么我们决定取消对 ZEO4 服务器的支持而不是修复它。
有关详细信息,请参阅 问题 209。
如果 zeopack 脚本无法连接到服务器,则将其退出状态设置为 1。请参阅 #214。
删除 asyncio/mtacceptor 模块。结果发现,多线程 ZEO5 服务器存在并发问题,这些问题导致数据损坏。多线程服务器模式已被弃用并计划删除,因此修复方法是最终删除它。从现在开始,ZEO 服务器始终是单线程的。
有关详细信息,请参阅 问题 209。
仅使用以下存储进行 ZEO 测试:FileStorage(具有服务器端 blob)、FileStorage(具有共享 blob 目录)、MappingStorage(没有 blob)。
这些测试涵盖了影响 ZEO 的所有存储功能:没有 blob、有共享 blob 和有服务器端 blob;加载、存储、两阶段提交、撤销。因此,通过这些存储的测试提供高信心,ZEO 也适用于其他正确实现的存储。请参阅 #198。
使用 flake8 对代码进行代码审查。
添加对 Python 3.10、3.11 的支持。
将 ConflictError 添加到未记录的服务器异常列表中(客户端/其应用程序应确定是否希望记录它们)。
防止 无当前事务: tpc_abort() 服务器日志条目。存储API允许用无效事务(在这种情况下应忽略调用)调用 tpc_abort,而服务器的 tpc_vote 依赖于这一点。
将服务器请求异常的日志消息标签从 无效请求 ... 更改为 ... 抛出异常:,提示服务器而不是客户端问题。
参见 问题 156。
移除对 python setup.py test 的支持。这已经有一段时间没有工作了。从现在起,运行测试的唯一支持方式是通过 zope-testrunner。
5.3.0 (2022-03-24)
5.2.3 (2021-08-09)
5.2.2 (2020-08-11)
移除对 Python 3.4 的支持。
提供适当的 CA 测试证书,以便 Py3 的 SSL 测试成功。
将已废弃的 Thread.isAlive() 替换为 Thread.is_alive()。参见 pull request 154。
将修改和刚创建的对象都包含到无效化中。参见 pull request 160。
5.2.1 (2019-02-09)
5.2.0 (2018-03-28)
修复:快速启动/ad-hoc/play ZEO 服务器依赖于测试依赖项。参见 问题 105。
在 Windows 下不允许将字符串作为地址传递给 ClientStorage,因为字符串地址用于 Unix 域套接字,Windows 上不支持。参见 问题 107。
将所有 async 属性重命名为 async_ 以与 Python 3.7 兼容。参见 问题 104。
修复以与 ZODB 5.4.0 中所做的某些更改兼容。
为 ZODB 5.4.0 或已有 zodbpickle.binary OIDs 的数据库提供客户端更新。参见 问题 113。
现在ZEO同时使用pickle协议3处理Python 2和Python 3(之前Python 2使用的是协议1)。这与ZODB 5.4.0的更改相匹配。
5.1.2 (2018-03-27)
修复:ZEO与ZODB 5.4.0的更改不兼容。
(允许在RPC请求中使用zodbpickle.binary,这对于与Python 2上的ZODB 5.4.0兼容是必要的。参见问题107。)
5.1.1 (2017-12-18)
5.1.0 (2017-04-03)
添加了对使用msgpack而不是pickle序列化ZEO消息的支持。这有助于为支持byteserver铺平道路,但它还允许ZEO服务器支持Python 2或3客户端(但不是同时),可能提供轻微的性能提升。
可能修复了过时且未经验证的zeoctl脚本。
移除了zeopasswd,因为在ZEO认证移除后,它已不再有意义,转而使用SSL。
5.0.4 (2016-11-18)
修复:ZEO需要更改才能与最近的交易更改兼容。
ZEO现在与最新的ZODB和transaction版本兼容。
5.0.3 (2016-11-18)
暂时需要非最新版本的ZODB和transaction,直到我们可以解决一些最近的问题。
5.0.2 (2016-11-02)
在Python 2上提供更好的性能。
当pip尝试在不受支持的Python版本上安装ZEO时,提供更好的错误信息。参见问题75。
5.0.1 (2016-09-06)
与打包相关的文档修复
5.0.0 (2016-09-06)
这是一个主要的ZEO修订版,它替换了ZEO网络协议实现。
新功能
SSL支持
可选的客户端冲突解决。
许多主要是内部清理。
ClientStorage``server-sync配置选项和server_sync构造函数参数,以在事务开始时强制服务器往返,等待事务开始时任何未解决的无效化被传递。
客户端断开连接错误现在是暂时性错误。当应用程序重试引发暂时性错误的作业时,带有断开连接错误的作业将被重试。与断开连接时同步ZEO服务器调用有限时间相结合,此更改应允许因服务器重启而导致的短暂断开,以避免生成客户端可见的错误(例如500个web响应)。
ClientStorage的预取方法以预取oids。
当oids被预取时,请求将一次性发出,但调用者不会阻塞等待结果。相反,当调用者在稍后尝试获取对象id之一的数据时,它要么立即从ZEO缓存中提供,如果对象id的预取已完成,或者调用者将阻塞,直到正在进行的预取完成。(不会发出新的请求。)
已删除的功能
ZEO认证协议。
这将通过利用SSL的新认证机制来替换。
ZEO监控服务器。
完整的缓存验证。
旧于ZODB 3.9的服务器客户端支持。
旧于ZEO 4.2.0的客户端服务器支持。
5.0.0b0(2016-08-18)
添加了ClientStorage server-sync配置选项和server_sync构造函数参数,以在事务开始时强制服务器往返,等待事务开始时任何未解决的无效化被传递。
在创建一个临时的服务器时,默认情况下不会创建日志文件。您必须传递一个log选项来指定日志文件名。
现在 ZEO 服务器注册方法返回存储的最后一个事务,允许客户端在缓存验证过程中避免额外的往返。
客户端断开连接错误现在是暂时性错误。当应用程序重试引发暂时性错误的作业时,带有断开连接错误的作业将被重试。与断开连接时同步ZEO服务器调用有限时间相结合,此更改应允许因服务器重启而导致的短暂断开,以避免生成客户端可见的错误(例如500个web响应)。
修复了使用 ZEO 5 客户端与 ZEO 4 服务器时的错误。
5.0.0a2 (2016-07-30)
添加了在创建客户端存储时传递凭证的能力。
这是实验性的,因为传递凭证会导致连接到普通 ZEO 服务器失败,但它方便了对自定义 ZEO 服务器的实验。由于涉及多个层次的结构,使用自定义 ZEO 客户端进行此操作将会很尴尬。
未来,我们预计将支持服务器安全插件,这些插件消耗凭证进行身份验证(通常是通过 SSL)。
请注意,凭证对 ZEO 来说是不可见的。它们可以是具有真实值的任何对象。客户端仅仅将它们传递给服务器,服务器将来会将它们传递给一个插件。
5.0.0a1 (2016-07-21)
添加了 ClientStorage 预取方法以预取 oids。
当oids被预取时,请求将一次性发出,但调用者不会阻塞等待结果。相反,当调用者在稍后尝试获取对象id之一的数据时,它要么立即从ZEO缓存中提供,如果对象id的预取已完成,或者调用者将阻塞,直到正在进行的预取完成。(不会发出新的请求。)
修复:具有签名证书的服务器客户端未加载默认证书,无法连接。
5.0.0a0 (2016-07-08)
这是一个主要的ZEO修订版,它替换了ZEO网络协议实现。
新功能
SSL支持
可选的客户端冲突解决。
许多主要是内部清理。
已删除的功能
ZEO认证协议。
这将通过利用SSL的新认证机制来替换。
ZEO监控服务器。
完整的缓存验证。
旧于ZODB 3.9的服务器客户端支持。
旧于ZEO 4.2.0的客户端服务器支持。
4.2.0 (2016-06-15)
将 loadBefore 的行为改为更接近 load,特别是在加载锁方面。这允许 ZEO 与即将推出的 ZODB 5 一起工作,ZODB 5 使用 loadBefore 而不是 load。
重新实现了 load 使用 loadBefore,从而通过现有测试广泛测试 loadBefore。
与 ZODB 5(以及 ZODB 4)一起工作的其他更改
修复:ZEO 缓存 loadBefore 方法未能利用当前数据。
停止支持 Python 2.6 和 3.2。
修复:当 StorageServer 创建失败时,出现 AttributeError: ‘ZEOServer’ 对象没有属性 ‘server’。
4.2.0b1 (2015-06-05)
添加了对 PyPy 的支持。
4.1.0 (2015-01-06)
添加了对 Python 3.4 的支持。
添加了一个新的 ruok 客户端协议,用于在不创建完整的客户端连接和不记录服务器日志的情况下获取 ZEO 端口上的服务器状态。
即使在多线程延迟的情况下,也在服务器端记录错误。
4.0.0 (2013-08-18)
在设置 auth_digest 会话时避免读取过多的随机字节。
优化 ZEO 客户端的套接字地址枚举(避免非 TCP 类型)。
改进 Travis CI 测试支持。
为所有线程分配名称以进行更好的运行时调试。
修复:在 ‘ZEO.scripts.zeoqueue’ 中 Py3k 下的 “assignment to keyword” 错误。
4.0.0b1 (2013-05-20)
依赖于 ZODB >= 4.0.0b2
添加了对 Python 3.2 / 3.3 的支持。
4.0.0a1 (2012-11-19)
很长时间以来的第一次独立的 ZEO 发布。
自 ZODB 3.10.5 以来
存储服务器现在会发出 Serving 和 Closed 事件,以便订阅者在使用动态端口分配(绑定到端口 0)时发现地址。例如,这可以用于更新 ZooKeeper 数据库中的地址信息。
客户端存储有一个 new_addr 方法,可以用来更改服务器地址(们)。这可以用于,例如,从 ZooKeeper 数据库中的信息更新动态确定的服务器地址。
项目详情
下载文件
下载适合您平台的应用程序文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
ZEO-6.0.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | be238b5abf9ea3396935b33530f66a9afa61ccf8b6b813c2cfdcb2aa18541be7 |
|
MD5 | d13665162cbdc42abfaa8e61305efc67 |
|
BLAKE2b-256 | 1a85ab008e84445dcd39b2d079fdc7eb5475d5597de9504e2a0cb6bb44ca9a4b |
ZEO-6.0.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4fd6569e00a6f9c91fdfe7d917887666893252be7c0a6e4afc3901ef8d4b4ae5 |
|
MD5 | bdcd1a83fc67c36297ccd061a59cb806 |
|
BLAKE2b-256 | ce36dfb1aa57d58f39745dd97873c10be8568e4b19ec2c5d139dc3c62ccd70e5 |