IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

TT的作者出新作品鸟:kyoto tycoon

互联网,请记住我 2010-10-26 22:13:17 累计浏览 7,953 次
本机暂存

嗯 ,这个TT不是那个宾馆床头的TT.它是tokyo tyrant.作者在推出了一堆性能出色的开源产品后,近期又推出了一个基于kyoto cabinet的server:kyoto tycoon.
其实关于kyoto cabinet,我在这里提到过。kyoto cabinet对应的就是tokyo cabinet,而跟tokyo tyrant对应的,就是今天要介绍的kyototycoon.
直接上翻译,原文在:http://www.1978th.net/kyototycoon/spex.html

Kyoto Tycoon 是一个轻量级的数据库服务器, 支持自动过期的实现,这个在各种需要处理缓存数据的程序中很有用。Kyoto Tycoon 也是一个叫Kyoto cabinet的DBM的网络接口。虽然这个DBM拥有很高的性能和并发能力,但是你在处理多进程共享一个数据库,或是需要远程访问一个数据库时感到头痛。而Kyoto Tycoon就是提供来处理Kyoto cabinet的并发处理和远程连接的。Kyoto tycoon由管理各种各样数据库的服务器进程和访问服务器的客户端程序库组成。

The server features high concurrency due to thread-pool modeled implementation and the epoll/kqueue mechanism of the modern Linux/*BSD kernel. It can handle more than 10 thousand connections at the same time. Because such system-specific features as epoll/kqueue are encapsulated and abstracted as the same interface, Kyoto Tycoon has high portability and works almost all UNIX-like systems and Windows.

这个服务器的特性是高并发,这是源于它用了现在linux/BSD内核上的epoll/Kqueue机制以及一个线程池模型实现。它能同时处理高于10k的并发连接。因于像epoll/kqueue这些OS的属性都做了封闭并且抽象得如此之相像,Kyoto Tycoon拥有较高的移植性,能工作在几乎所有类unix系统 和windows系统上。(嗯,作者你就吹吧…)

它的客户端和服务器端是通过HTTP协议来交互的。因此,你可以用任何流行的语言来写它的客户端库和客户端程序。Restful风格的GET,HEAD,PUT,DELETE方法和RPC风格的POST式方法都是它所支持的。RPC风格的接口是基于一个叫TSV-RPC的协议之上的。(嗯 ,这个协议好像不是一个标准协议,如果我没猜错的话,应该是作者自创的,在之前的tokyocabinet什么的库中就出现地p).整个请求的主体系和响应数据都是用tab键分格的值 ,所以解析起来是相当容易。(嗯,是很容易 ,那我想问一下,大哥你怎么表示复杂数据?我猜您的答案:那我们就不支持复杂数据类型好了。。。)。

服务器端可以嵌入lua,一个轻量级的脚本语言。虽然你可能无法找到符合你需求的内置操作类型,你可以在lua中定义函数来实现各种各样的变态的无聊的抑或是吃饱了没事的干的需求。(我这个翻译是不是离主题太远了).Lua脚本的API提供了Kyoto cabinet的全套的各种操作,包括有访问,游标和事务机制。

Kyoto Tycoon的服务器端是用C++ 实现的(好吧,最近作者除开原始c和lua以外,终于学会C++了?嗯 ,其实kyoto cabinet也是c++写的),它在各种有 支持c++03标准TR1扩展的系统上都是可用的。Kyoto tycoon是一个以GNU GPL 的license发布的开源程序。如果你使用HTTP协议和服务端通信而不使用核心库的话,你可以写各种不受我们license控制的客户端程序。

同分类推荐文章

  1. 使用deepseek进行Oracle恢复,引起重大故障 (2026-06-22 10:56:00)
  2. 接手一个只差临门一脚的数据库恢复 (2026-06-18 00:13:09)
  3. 我做了一个 AI 版的 StarRocks 升级风险扫描工具,直接帮我定位到一个风险 (2026-06-15 01:00:00)

查看更多 数据库 文章 →

建议继续学习

  1. 一种常见的并发编程场景的处理 (累计阅读 23,588)
  2. 浅析http协议、cookies和session机制、浏览器缓存 (累计阅读 17,446)
  3. 无锁消息队列 (累计阅读 14,276)
  4. 一种高效无锁内存队列的实现 (累计阅读 12,095)
  5. 我对技术方向的一些反思 (累计阅读 11,319)
  6. 淘宝图片存储架构 (累计阅读 10,960)
  7. 数据分析中常用的数据模型 (累计阅读 7,948)
  8. Buffer和cache的区别是什么? (累计阅读 7,939)
  9. TinyURL设计方案 (累计阅读 7,329)
  10. 程序中的“多线程” (累计阅读 7,323)