Zeze 是什么
Zeze 是什么
Section titled “Zeze 是什么”读完这篇,你会知道 Zeze 解决什么问题、它适不适合你的场景。
Zeze 是一个基于缓存一致性的分布式事务应用框架,同时它本身也是一个 Key-Value 数据库。一句话概括它做的事:让你像写单进程单线程程序那样写业务逻辑,框架在背后替你管好事务、并发和持久化。
「分布式」是它的特性,「并发」是它的要求。一个分布式系统如果有一万个窗口却只能排队去一个窗口办事,那是跑不起来的。Zeze 让数据能在多台机器间安全共享,让应用天然就能并发起来。
它解决的三个老大难
Section titled “它解决的三个老大难”服务端开发里,有三个问题几乎每个项目都会撞上:
1. 数据改一半,出错了
Section titled “1. 数据改一半,出错了”一次操作往往要改好几份数据。如果改到一半抛了异常,已经改完的部分就成了”脏数据”。最合理的做法是放弃全部修改、回到操作前的状态——这就是数据库里”事务”的语义。
可问题在于,程序运行环境里通常没有事务。常见的土办法是:先把所有条件检查一遍,最后再一起改。简单系统还能凑合,一旦模块互相嵌套调用,“提前检查”就会把代码结构拆得七零八落,业务逻辑被技术细节割裂。Zeze 直接在程序里提供完整事务:代码按业务逻辑的自然顺序写,中途出错就整体回滚,就像什么都没发生过。
2. 多线程并发与死锁
Section titled “2. 多线程并发与死锁”高并发下,线程间共享数据要加锁。锁带来竞态条件、死锁、优先级反转……即便老手也难完全避免。Zeze 用乐观锁:执行过程完全不加锁,提交时才检测冲突、冲突就自动重试。因为全程不持有排他锁,死锁在原理上不可能发生。
3. 内存数据何时写库
Section titled “3. 内存数据何时写库”内存里的数据写早了浪费 I/O,写晚了有丢失风险;用好几种数据库时同步逻辑更复杂。Zeze 维护一个内存中的一致性缓存,数据先在内存里完成事务操作,再由框架的 Checkpoint 机制自动、批量地同步到后端数据库。你不用写任何 SQL 或持久化代码,切换数据库只改配置。
| 能力 | 说明 |
|---|---|
| 定义即使用 | 用 XML 定义数据结构和表,框架自动生成访问代码,读写数据就像操作普通 Java 对象 |
| 事务开箱即用 | 默认所有操作都在可串行化事务里,异常自动回滚 |
| 多线程无需操心 | 框架处理全部并发控制,写业务逻辑不需要多线程知识 |
| 数据库完全透明 | 内存数据自动与后端数据库同步,支持多库混用 |
| 分布式开箱即用 | 通过 Provider-Linkd 架构水平扩展,内置服务发现、负载均衡、可靠消息 |
| 简单易用的网络 | 把网络请求直接映射到处理函数,同步异步都支持 |
什么样的应用最匹配 Zeze
Section titled “什么样的应用最匹配 Zeze”- 自然拥有较高并发 —— 便于把负载分到多台服务器。
- 数据局部性强、重复访问多 —— 能充分利用 Zeze 的缓存。典型代表是游戏:玩家登录后大多操作自己的数据,同一份数据在登录期间被反复访问。
一般规律:多数长期在线的应用都适合用 Zeze。在线游戏、实时通信、物联网设备管理这类高并发、长连接的服务端系统是它的主场。
不适合的例子也有:比如支付系统里公司到个人的突发交易,数据几乎不重复,缓存用不上,效率最终逼近后端数据库本身——这种场景 Zeze 能用,但发挥不出优势。
- 想立刻动手 → 环境搭建
- 想先搞懂原理 → Zeze 解决的三大痛点(强烈建议至少读这一篇)