资讯专栏INFORMATION COLUMN

观察者

Ku_Andrew / 1744人阅读

摘要:现在使用做方面的开发工作,使用了和作为基础数据的支撑,因为系统需要长期地运行,所以不确定当中途某个数据库连接断掉之后会发生什么情况,暂时不从源代码入手吧,先手动尝试观察一下,先观察表象,再深入理解经过测试,发现通过的客户端获取的连接在中途发


现在使用nodejs做tcp方面的开发工作,使用了redis和mongodb作为基础数据的支撑,因为系统需要长期地运行,所以不确定当中途某个数据库连接断掉之后会发生什么情况,暂时不从源代码入手吧,先手动尝试观察一下,先观察表象,再深入理解


经过测试,发现通过nodejs的redis客户端获取的连接在中途发生断线之后(模拟场景有手动Kill掉TCP连接和手动关闭redis-server两种情况)会进行自动重连,而且在中途进行操作,回调函数中会返回错误信息,这样的话至少代码不会爆掉,进程也不会挂,最神奇的是之前获取到的操作句柄还能够正常使用,重连发生在这个操作对象内部,对开发者是不可见,应该来说很友好吧,最神奇的是nodejs驱动开发者考虑到了很多细节的问题,比如开始的时候客户端订阅了某个频道,在进行重连后还会初始化一次(内部机制之后看源代码之后才能下结论),看来真是省心啊。


mongodb的官方nodejs驱动有个很厉害的地方,当操作过程中连接被断掉后(直接手动关闭mongodb-server),如果后续还有操作,将会被暂时存储起来,当连接被重新建立之后,所有“缓冲区”的数据将会被写入数据库,看来还是很不错的哦,但是目前待思考的地方是如果有大量数据,“缓存区”会在什么情况下清空呢?(看来研究一下驱动很有必要了)


他们的共同点就是第一次必须先获取操作对象,否则代码直接会爆掉的(不过这点上redis就做得比较好了,无论是否连接上客户端都返回一个操作对象,看来mongodb其实还可以改进一下),这个当然好理解,所以现在系统在最开的时候会有一个初始化阶段,负责初始化数据缓存池连接(包括redis和mongodb),接下来就不怕啦,即使是中途tcp断掉一段时间还是可以接受的


无论在使用mongo还是redis在进行写操作的时候,都一定使用回调函数,这样才能更加保险,否则很有可能都没有写进去,又或者是数据在重连成功前被清除掉了呢。


@todo mongodb nodejs drive buffer size before connected again...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/36048.html

相关文章

  • 设计模式之察者设计模式

    摘要:关键概念理解观察者设计模式中主要区分两个概念观察者指观察者对象,也就是消息的订阅者被观察者指要观察的目标对象,也就是消息的发布者。 原文首发于微信公众号:jzman-blog,欢迎关注交流! 最近补一下设计模式相关的知识,关于观察者设计模式主要从以下几个方面来学习,具体如下: 什么是观察者设计模式 关键概念理解 通知观察者的方式 观察者模式的实现 观察者模式的优缺点 使用场景 下面...

    NotFound 评论0 收藏0
  • 一起学设计模式 - 察者模式

    摘要:观察者模式是一种使用频率非常高的设计模式,无论是移动应用应用或者桌面应用,观察者模式几乎无处不在,它为实现对象之间的联动提供了一套完整的解决方案,凡是涉及到一对一或者一对多的对象交互场景都可以使用观察者模式。 观察者模式(Observer Pattern)属于对象行为型模式的一种,定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。 ...

    cpupro 评论0 收藏0
  • 我的Java设计模式-察者模式

    摘要:为了帮助灰太狼摆脱被老婆平底锅抽的悲剧,发起了解救灰太狼的行动,必须要知道观察者模式。持有观察者对象的集合。设计模式源码下载 相信大家都有看过《喜洋洋与灰太狼》,说的是灰太狼和羊族的斗争,而每次的结果都是灰太狼一飞冲天,伴随着一句我还会回来的......。为灰太狼感到悲哀,抓不到羊,在家也被老婆平底锅虐待。灰太狼为什么会这么背? 很简单,灰太狼本身就有暴露行踪的属性,羊咩咩就能知晓灰太...

    smartlion 评论0 收藏0
  • 我的Java设计模式-察者模式

    摘要:为了帮助灰太狼摆脱被老婆平底锅抽的悲剧,发起了解救灰太狼的行动,必须要知道观察者模式。持有观察者对象的集合。设计模式源码下载 相信大家都有看过《喜洋洋与灰太狼》,说的是灰太狼和羊族的斗争,而每次的结果都是灰太狼一飞冲天,伴随着一句我还会回来的......。为灰太狼感到悲哀,抓不到羊,在家也被老婆平底锅虐待。灰太狼为什么会这么背? 很简单,灰太狼本身就有暴露行踪的属性,羊咩咩就能知晓灰太...

    ShowerSun 评论0 收藏0
  • Java 设计模式 察者模式

    摘要:实际上,设计模式就是通过面向对象的特性,将这些角色解耦观察者模式本质上就是一种订阅发布的模型,从逻辑上来说就是一对多的依赖关系。在添加一个观察者时,把被主题被观察者对象以构造函数的形式给传入了观察者。 每个角色都对应这一个类,比如观察者模式,观察者对应着观察者类,被观察者对应着被观察者类。实际上,设计模式就是通过面向对象的特性,将这些角色解耦 观察者模式本质上就是一种订阅 / 发布的模...

    马忠志 评论0 收藏0
  • 人人都会设计模式:察者模式--Observer

    摘要:转载请注明出处作者地址本文出自简书人人都会设计模式教程简介阅读对象本篇教程适合新手阅读,老手直接略过教程难度初级,本人水平有限,文章内容难免会出现问题,如果有问题欢迎指出,谢谢地址正文一什么是观察者模式生活中的观察者模式警察抓小偷在现实生活 showImg(https://segmentfault.com/img/remote/1460000012295892?w=1240&h=474...

    tianren124 评论0 收藏0

发表评论

0条评论

Ku_Andrew

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<