Skip to content

Zeze 是什么

读完这篇,你会知道 Zeze 解决什么问题、它适不适合你的场景。

Zeze 是一个基于缓存一致性的分布式事务应用框架,同时它本身也是一个 Key-Value 数据库。一句话概括它做的事:让你像写单进程单线程程序那样写业务逻辑,框架在背后替你管好事务、并发和持久化。

「分布式」是它的特性,「并发」是它的要求。一个分布式系统如果有一万个窗口却只能排队去一个窗口办事,那是跑不起来的。Zeze 让数据能在多台机器间安全共享,让应用天然就能并发起来。

服务端开发里,有三个问题几乎每个项目都会撞上:

一次操作往往要改好几份数据。如果改到一半抛了异常,已经改完的部分就成了”脏数据”。最合理的做法是放弃全部修改、回到操作前的状态——这就是数据库里”事务”的语义。

可问题在于,程序运行环境里通常没有事务。常见的土办法是:先把所有条件检查一遍,最后再一起改。简单系统还能凑合,一旦模块互相嵌套调用,“提前检查”就会把代码结构拆得七零八落,业务逻辑被技术细节割裂。Zeze 直接在程序里提供完整事务:代码按业务逻辑的自然顺序写,中途出错就整体回滚,就像什么都没发生过。

高并发下,线程间共享数据要加锁。锁带来竞态条件、死锁、优先级反转……即便老手也难完全避免。Zeze 用乐观锁:执行过程完全不加锁,提交时才检测冲突、冲突就自动重试。因为全程不持有排他锁,死锁在原理上不可能发生

内存里的数据写早了浪费 I/O,写晚了有丢失风险;用好几种数据库时同步逻辑更复杂。Zeze 维护一个内存中的一致性缓存,数据先在内存里完成事务操作,再由框架的 Checkpoint 机制自动、批量地同步到后端数据库。你不用写任何 SQL 或持久化代码,切换数据库只改配置。

能力说明
定义即使用用 XML 定义数据结构和表,框架自动生成访问代码,读写数据就像操作普通 Java 对象
事务开箱即用默认所有操作都在可串行化事务里,异常自动回滚
多线程无需操心框架处理全部并发控制,写业务逻辑不需要多线程知识
数据库完全透明内存数据自动与后端数据库同步,支持多库混用
分布式开箱即用通过 Provider-Linkd 架构水平扩展,内置服务发现、负载均衡、可靠消息
简单易用的网络把网络请求直接映射到处理函数,同步异步都支持
  • 自然拥有较高并发 —— 便于把负载分到多台服务器。
  • 数据局部性强、重复访问多 —— 能充分利用 Zeze 的缓存。典型代表是游戏:玩家登录后大多操作自己的数据,同一份数据在登录期间被反复访问。

一般规律:多数长期在线的应用都适合用 Zeze。在线游戏、实时通信、物联网设备管理这类高并发、长连接的服务端系统是它的主场。

不适合的例子也有:比如支付系统里公司到个人的突发交易,数据几乎不重复,缓存用不上,效率最终逼近后端数据库本身——这种场景 Zeze 能用,但发挥不出优势。