2014年的时候,老大说数据持久化,当时听的一愣一愣的,不知道啥是持久化;讲了一堆Gearman使用 Redis 和MySQL的东西,表示听不懂;然后他自己在那搞;左后搞出来了,还在launchpad.net 报告了一个bug,当时确实是第一个报告那种使用情况下bug的第一人。
队列,很多流量大的网站都会使用。对于数据,是否需要考虑数据的可靠性,对于一般不重要的数据丢失也没关系;但是对于订单和钱后关系的这类数据是需要高可靠性的。
当时老大设计的系统几乎就是准备跑在缓存上的一个平台系统(当然,不使用缓存一样运行),还有个队列Gearman。内存,数据都在内存上,丢失咋办;先写数据库(持久化)在改内存,这样就没啥意思了。所有的写操作都是先到缓存,判断缓存操作是否成功,失败写日志记录;然后使用队列Gearman写到数据库,那如果缓存中的数据加入到了队列的Job, 还没来得及Worker 消费数据,服务器出现故障,内存数据全部丢失,与之相关操作全部出错。
解决方案:使用Redis 做数据的持久化,即使memcached 数据丢失,在Redis 上还有持久化的数据,当服务器可用后, Gearman 再从Redis 消费数据,持久化到数据库MySQL
毕业后,自己动手配置过该环境,当时虽然配置出来了,但是没有做记录,当再次遇到这个问题时,发