
28
|
第
3
章
Graphite
组件
基于
Twisted
库(一个事件驱动的网络引擎)。但是,仅把它理解成一个缓存,将是一个
严重的误解。
carbon-cache
是一种网络服务,它接收从客户端流入的指标,将指标临时
存储在内存(缓存)中,然后将它们写入
Whisper
数据库文件中。它支持
TCP
或
UDP
传输协议,可以接收纯文本格式的指标,或者是经
Python pickle
协议序列化过的指标。
如果你采用大规模分布式系统,
Graphite
甚至可以支持
AMQP
消息总线。由于
Graphite
需要访问持久化指标和内存中的指标,因此缓存守护进程还有一个查询端口,
Graphite
Web
应用程序利用该端口轮询尚未写入磁盘的“热”指标。
固态磁盘驱动器
由于
carbon-cache
的大部分工作和
I/O
相关,因此它对磁盘读写速度和内存大
小很敏感。慢速磁盘或内存过小都会导致
carbon-cache
的性能和稳定性加速
恶化。因此,我通常建议所有的
Carbon
节点使用固态(
SSD
)硬盘,当然,你
可以在条带化
RAID
配置中使用传统硬盘,但从长远来看,
SSD
更快、更可靠。
使用基本安装时通常只会有一个
carbon-cache
进程。每个缓存绑定一个
CPU
内核,因
此很容易用简单的
UNIX
命令(如
top
或
ps
)跟踪到超负荷的缓存进程。根据历史经验,
你的基本款的
Graphite Server
会很受欢迎,并且很快会到达单个进程的
I/O
上限。幸运
的是,
carbon-cache
被设计成允许多个实例并行运行。而且,由于每个进程都运行在独 ...