关于发送邮件的身份
在使用SMTP发送邮件时,有几个地方涉及到发件人身份。有些同学对这些地方感到困惑,我简单解释下。
比如你用foo@bar.com这个邮箱,使用SMTP客户端发送一份邮件,那么在AUTH阶段,需要输入用户名和密码进行认证(普通的MTA外发都需要验证,除非是内部自己配置的信任MTA)。这个用户名是不是一定是foo呢?答案是否。可以使用任何用户名,只要能通过MTA的身份鉴定。这是第一个涉及到身份的地方。
通过身份认证后,使用mail from命令,这里需要输入你的sender邮箱,是不是必须是mail from:<foo@bar.com>呢?答案是否。理论上可以是任何邮箱,比如any@mail.com。这是第二个涉及到身份的地方。
MQ队列堆积太长,消费不过来怎么办
我们现有的业务就面临此问题,消息生产太快,消费不过来,导致队列堆积很长,把服务器内存耗尽,这时RabbitMQ的处理能力很低下。
我在RabbitMQ社区发邮件问了下:
生查子
看到两首熟悉的词,词牌都是生查子,摘录如下。
其一:
去年元夜时,花市灯如昼。
月上柳梢头,人约黄昏后。
今年元夜时,月与灯依旧。
不见去年人,泪满春衫袖。
作者欧阳修,北宋文坛泰斗。
如果Gmail没有了,用什么代替
最近Google关闭了reader服务,Yahoo关闭了中国邮箱,引起网友广泛的讨论。昨天在一个邮件列表里,有人还讨论Gmail如果关闭了怎么办。风河曾经在网易邮件工作过,对邮件系统保持持续的兴趣,手中有各种资源的测试邮箱不下100个。Gmail无疑十分强大,无论是用户体验还是安全性都非常好。但天下没有不散的宴席,如果Gmail真被关闭了,那么考虑如下邮件服务作为代替也是不错的。
关于Scribe的安装和使用
最近重新看了下分布式日志系统Scribe。之前我在Ubuntu 9.10很顺利装上过,现在换到Ubuntu 10.04,Ruby手工升级到1.9.3后,怎么也装不上Thrift(最新版本0.9)。卡在这个地方:
Successfully built RubyGem Name: thrift Version: 0.9.0.1 File: thrift-0.9.0.1.gem gem install thrift-*.gem ERROR: Could not find a valid gem 'thrift-*.gem' (>= 0) in any repository rake aborted!
RabbitMQ向项目主机广播事件通知
我们这有许多项目,每个项目的服务器组,需要接受一些公共通知,可以里用RabbitMQ的fanout交换机来广播通知。具体做法是,项目里的每个主机都订阅到broker,并创建fanout交换机,中央控制台需要发通知时,也连到这个交换机,并发送消息,这条消息就会被广播到每一个项目主机。结构图如下:
诗词里的春天
闲来无事,重读宋词,至李元膺的《洞仙歌》,有句:
一年春好处,不在浓芳,小艳疏香最娇软。
到清明时候,百紫千红花正乱,已失春风一半。
心有同感焉。一年春光最好处,犹在早春,不在乱红深处。
古兜温泉谷
公司在江门新会的古兜温泉开年会,去年也是在这里开的,今年是第二次了。离珠海不远,一小时车程,主要是高速。温泉谷三面环山,地形开阔。正是春天,树木发芽,花儿开放,远处青山黛绿,溪水潺潺,一片勃勃生机。上两张小米拍的照片。
RabbitMQ in Action: 测试RabbitMQ的高可用性
我在之前的blog里已描述如何搭建RabbitMQ的Cluster(集群),集群里的每个节点都能访问到公共队列的消息。然而,这个集群只完成了高可用的1/3配置,本文剩下的内容讲述如何配置真正的RabbitMQ高可用性。
RabbitMQ in Action 内存节点与磁盘节点
RabbitMQ集群里有内存节点与磁盘节点之分。所谓内存节点,就是将元数据(metadata)都放在内存里,磁盘节点就是放在磁盘上。如果RabbitMQ是单节点运行,默认就是磁盘节点。在RabbitMQ集群里,至少有一个磁盘节点,它用来持久保存元数据。新的节点加入集群后,会从磁盘节点上拷贝数据。但是,集群里也不必要每个节点都是磁盘节点,这主要是性能问题。例如,压力大的RPC服务,每秒都要创建和销毁数百个队列,如果集群里都是磁盘节点,意味着队列定义在每个节点上,都要写入磁盘才算成功,这样就会非常慢。