优盈娱乐-优盈娱乐注册「官网登陆」

优盈娱乐-优盈娱乐注册「官网登陆」专注于回合制战斗,并且围绕游戏开办了专业比赛,优盈娱乐-优盈娱乐注册「官网登陆」是一个以游戏交流、娱乐休闲为主的温馨家园.我们提供最新的游戏资讯,优盈娱乐-优盈娱乐注册「官网登陆」游戏等众多项目,共同打造全新公益模式。

出轨,千万别来真的

某人发了一篇Don’t use MongoDB的血泪控诉,我把原文翻译如下,你可以看看。不过,我想我们还要去看看10gen CTO的对此事的回复,我们还要去在Reddit上看看大家的说法,10gen CTO的对此事的回复后面也有一堆人在讨论这个事,还有一些程序员开始去读MongoDB的源码了,呵呵。看样子,说MongoDB的这些事并不是真的。

图片 1

10gen CTO 对此事的并不完全知道,其在回复,对些文中的每一条都做了回复。我把其回复的大体意思也放在原文中。不过,很有意思的是那些程序员的讨论。建议大家看看。

“爱是恒久忍耐,又有恩慈;爱是不嫉妒,爱是不自夸,不张狂,不做害羞的事,不求自己的益处,不轻易发怒,不计算人的恶,不喜欢不义,只喜欢真理;凡事包容,凡事相信,凡事盼望,凡事忍耐。爱是永不止息。”

正文

因为各种政治原因,我这段时间没有说什么,但是现在我觉得因为要对社会负责,所以我要阻止大家不要把你们的业务放在MongoDB上。

我的团队在一个有巨大用户量(一个有千万用户级的大型的公司)系统上使用的MongoDB,这个系统上让MongoDB有非常大的负载。早期,我们以为使用MongoDB会像10gen公司(MongoDB背后的公司)宣扬其在长期性能扩展有很多好处。但是,我们错了,而这个rant(长篇抱怨)就是为了让你不要相信那些所谓的成功经验而和我们一样犯了大错。如果有人能避免你上当,那么就得我写这么多。希望能警醒更多的人。

注意,对于和10gen打交道的经历来说,他们给予了我们充分了热情和帮助,而且非常地好。但是这并不能成为我不告诉大家他们的产品失败的理由。

 

提起爱,总会想起《圣经》里的这段话,这里的“爱”自然是“大爱”,是对神的爱,而如果我们把它当成“小爱”,凡尘俗世的爱,其实也是很好的感情准绳:我们一开始喜欢一个人的时候,都是这样想的,都以为自己毫无疑问会一辈子那样喜欢下去,恒久忍耐,永不止息。

为什么这么说?

数据库应该是正确的,或是仅可能的正确,因为数据库的错误会比其它使用更大。不仅仅是因为其对运行,性能,开销,和其价值影响巨大,还因为其连带的东西。匆忙去去移植TB级的数据相比起去修改代码中的一个逻辑错误来说是一个很巨大的工作。而在系统出问题后需要恢复TB级的数据,而你即被限制住了,你会有一种绝望的感觉。

数据库是一个很复杂的系统,对于开发者来说就像一个黑盒一样。你需要对你所采用的数据库持绝对信任的态度,信任它会做正确的事,并尽会保持 一致笥和可用性。

为什么MongoDB会流行?

说句公道话,我们必需承认MongoDB是流行的,因为下面这些原因让其流行变得很合理:

  • 它非常容易地运行
  • 非常自由的Schema模型,而且可以很容易地和JSON类的数据结果映射起来,这对于程序员来于有很大的感染力(它完全符合程序员的逻辑思维),而且,程序员总是在项目可以做技术选型的人。
  • 成熟和分健壮,有记录,被真实的Use Case测试过,等等。对于那些喜欢选择成熟的技术的系统管理员和运营专业来说,这是一个很典型的选择。
  • 它单系统,低读并发的性能测试非常令人惊讶,而对于那些没有经验的评估者来说,这基本上来说是最重要的。

现在,你可能正在开发一个随便玩一玩的网站,或是一个原型,或是那种只考虑开发速度不考虑别的的项目。老实说,对于这种项止,无所谓你用什么样的技术,只要搞定工作就行了。

但是,如果你想要在MongoDB上搞一个大规模的系统,在上面运行真实的业务,那么,请不要用MongoDB。

可是,从什么时候开始,你/我变了?麻木了?厌倦了?蠢蠢欲动了?其实,背叛的并不只是曾经深爱的那个TA,背叛总是从背叛爱的初心,背叛曾经专注的自己开始的。
中年危机,靠出轨能冶吗?

为什么不?

1)MongoDB为了赢得Benchmark测试而默认使用了不安全的写方式

如果你不调用getLastError(),MongoDB就不会在确认数据库写操作完成就返回了,这会引入至少两种问题:

  • 在并发的环境下(连接池,等),在一个读操作“完成”后的连续地读操作会出错,MongoDB没有“栅栏条件锁”来知道什么时候完成写。
  • 未知个数的保存操作会被丢弃,因为保存操作的队列会在不同的地方。比如TCP缓存等。当你和数据库连接因为一些意味情况断开的时候,这些东西就被丢弃了。

10gen CTO 回复: 这和Benchmark没有任何关系,并说这个就是API的设计,其交给用户自己去选择,因为写的方式也有很多种。

2)MongoDB会以令人震惊的方式丢失数据

下面是一个我们所经历过的它丢数据的列表:

  • 数据就是丢了,原因未知
  • 从损坏的数据库中恢复数据不成功,如事务日志。
  • 主从结点间的数据复制有缺口,导致从结点丢失主结点有的数据。是的,没有CheckSum,并且是的,你还会看到数据复制过去了。
  • 数据复制有时会停了,没有错误。你可以监控你的复制状态。

10gen CTO 逐一回复:1)从来没有一个数据丢失的BUG我们没有马上fix的事情。你能告诉我你报给我们的问题号吗?我们至少要明的是怎么一回事。如果是我们的问题,我们会马上fix的。2)从损坏了的数据库中不能完全恢复数据 ,这不挺正常的吗?但是如果有主从服务器互为备份应该会好一些。3)请告诉我你的问题号,我们从来没有接到过这样的错误报告。如果有,的确很严重。4)如果是说错误条件发生的时候没有通知,这有可能。另外,你可以监控数据复制的写操作,你可以使用w=2 为getLastError的参数。

3)MongoDB 需要全局写锁来请求写操作

在写操作频繁的时候,这等同于杀了你。如果你运行一个blog,你也许不会关心这个事,因为你的读写操作不高。

10gen CTO 回复:读写锁永远都是问题,但是2.0会好很多,2.2会解决得更好一些。

4)MongoDB 的Sharding(分区) 在高负载下会停止工作

在高负载下加一个shard是一场恶梦。Mongo要么会移动其数据块太快而导致DOS攻击产生很多流量占用带宽,要么就完全地拒绝更多的数据块。这会使一个高流量的网站承受着沉重地写操作。

10gen CTO 回复:如果系统已经超过了其负载,那么移动数据当然会变得很难。我每一次的演讲都说得很清楚,不要在系统性能不行的时候才去加shard,这不行的。

5)Mongo 不可靠

Mongod/配置服务器/mongos的架构确定合理且聪明。不幸的是,mongos完全就是垃圾。在有负载的情况下,它时不时就都会崩溃,有时几个小时,有时几天。进程重启监控有时也不管用,因为他会抛出一些断言会伪造出一个关键线程,其导致进程还在运行。Double Fail。

最坏的是,唯一可行的方式是在一堆mongos实例前放一个HaProxy(一种负载均衡器),运行一个作业其缓慢地轮着访问这些mongos实例,并定期kill掉他们,以变可以重新启动新的实例。我没有在开玩笑。

10gen CTO 回复:不可能有这种事,你能不能告诉我更多的细节?

6)MongoDB有一次甚至删除了整个数据库

MongoDB 1.6,在数据同步配置中,有时会配置了一个错误的结点(经常是一个空结点)是一个最新的数据结点。于是其它同步数据的结果上的数据就这样被干掉了(我说的是700GB的好数据),因为其把这个空结点的数据同步回有数据的结点上。数据库永远永远都不应该干这个。如果出现这种问题,数据库应该抛出一个错误而让DBA来选择合理的操作,或是强制使用正确的配置。而不应该删除所有的数据(那天太糟糕了)。

他们在1.8中修复了这个问题,偶滴神啊。

10gen CTO 回复:找不到这样的事,也找不到相应提交的代码,你能多给点信息吗?

7)发布了一些不应该发布东西

众所周知,在稳定版里能找到一些尴尬的bug其会导致数据问题——而我们总是在出了问题后他们才告诉我们这些问题,这是因为我们购买了10gen他们那超级诈骗的白金技术支持。他们回应是,发给我们一个hot patch,他们内部叫RC的玩意,然后让这个hot patch运行在我们的数据上。

10gen CTO 回复:关于白金的技术支持,我们所接手的所有问题都会公开,fix也会公开。没有特定的情景,这种事很难讨论。我们会根据不同的情况作出不同的反应。我们希望我们的用户的问题能尽快得到解决。

8)复制器在繁忙的服务器上黯然失色

复制器经常性的向Master发起DOS攻击,或是复制非常慢,花了巨长无比的时间,而oplog几乎被耗尽(就算是50GB的oplog)。

我们有一个繁忙的,大的数据集我们不会复制他因为它是动态的。那是令人痛苦的一个月,或是我们需要在选择不同的数据库系统前交叉双指(注:好运的手势)

10gen CTO 回复:这看起来像上服务器负载过重了。我前面提到过了。

但是最糟糕的问题是:

你可能会说,我这些问题都是过去式了;他们修复了所有这些问题或是他们会在下一版本中修复这些问题;X问题可以用Y实践来减轻。等等,等等。

不幸的是,你说这些东西一点用也没有。

真正的问题是,这么多的问题都是首要的问题。 数据库开发者要能hold住比一般程序员更高的标准。也就是说,你的优先级应该像下面这个样子:

  1. 别搞丢数据,对数据要有完全的把握
  2. 通过实践保证可用性
  3. 多结点的性能扩展性
  4. 最小延迟应该保持在99%和95%之间
  5. 每个资源的每秒请求数

10gen的顺序好像是 #5  为每一,其它项随便,#1 并不在前3位。

10gen CTO 回复:这明显不是真的。看一看我们提交的代码,看一看我们的fix。 我们从来不会在release版中隐藏一个bug。如果我们非常在乎性能的benchmark的话,我们会花精力解决那些锁的问题,这样一来,多线程并发会更快一些。

MongoDB是一个新生的东西,还有很多东西需要打磨。如果你想来认识一下我们,我们欢迎你来认识一下我们。

这些失败,还有那所暗示的公司的优先级,指出了一个最基本的企业文化的问题,其会让问题出现在任一发布版中:因为他们缺乏尊守必要的数据库系统的设计律条。

请慎重考虑这些警告。

(全文完)

*
去看《情圣》之前,我在心里对它是有所排斥的。因为不少影评都将这部电影归为一部直男思维的电影,台上:三个好哥们变着法子同谋助力男主出轨;台下:男人看着手心出汗,女人看了暗自思量,挑战女性对“渣”的容忍极限不说,还把婚姻中的鸡毛蒜皮和鸡飞狗跳展露无遗。

电影开场,老公“嘘嘘”不给力被老婆嘲笑,冲个马桶被老婆责怪干嘛不一起冲,上厕所被剥内裤,手机响被查岗,连心跳加速都在老婆的监控范围。

说实话,一开始男主几分尴尬又无奈的窘态博得了我的几分同情,但随之,“兄弟连”的联手坑蒙拐骗、男主的猥琐与犯贱又引得我一阵反感。谁说这部电影只有男人会代入,作为女人,我怎么觉得分分钟场景都似曾相识?

图片 2

记得一位女友曾向我哭诉:老公跟她离婚后才告诉她——讨厌她上厕所不关门、即使是夫妻也不要太随便诸如此类种种原因,所以他爱上了别人;而一位男友则很不解老婆大人为什么那么爱吃生蒜,跟她接吻时简直想戴上防毒面具。

好像被尼采言中了一样:平淡的生活,往往是最危险的。

原来,每一个执手相看两不厌的背后都可能是千年王八万年龟一样的隐忍,而每一个不堪回首的回首看到的都是一地的鸡零狗碎。

婚姻的实质往往是:就算你耐得烦给我做一辈子的炸酱面,我也会有胃口不对咽不下的时候;而原来不被你搂着就睡不着的我,现在伴着你的鼾声却恨得直想一脚把你踹下床。

不要以为婚姻中每一次小风小浪之后一切归为云淡风轻,其实波澜不惊的水面下早已危机四伏,冷不丁你就得中招,跟电影中男男女女一样,被卷进“中年危机”的漩涡里。

就像肖央被小沈阳撺掇着“男人要靠女人才能保持活力”,坐腻味了旋转木马,也要过把坐过山车的瘾。而女人们则一边在“豆腐渣”的年纪里小心翼翼地保养自己,一边惴惴不安得像个女间谍,为了看紧丈夫十面埋伏、盯岗放哨。

图片 3

有人说,中年危机有两种:一种早上一睁眼,全是要依靠自己的人,没有一个自己能依靠的。另一种早上一睁眼,梦想全实现了,脑子里一个冲动都没了。

好像《夏洛特烦恼》里的夏洛属于前者,那是一种人近中年还一无所有的失意;而《情圣》中的肖央则属后者,看似是饱暖思淫欲,其实是对现世安稳的一种不屑与反叛。

“生命是一团欲望,欲望不满足便痛苦,满足便无聊。人生就在痛苦和无聊之间摇摆。”叔本华的这句话十分贴近“中年危机”的实质。

“中年危机”的产生,非“痛”即“痒”。痛的往往是“过不好”的,人生十之八九不如意,不惑之年更是濒临生活大厦倾塌的边缘。上有老、下有小,工作、生活层层压得人喘不过气只想逃离;而“痒”则属无聊范畴,心跳太正常了就忘记了悸动的感觉,生活太安稳了人生反而没了意思,就是小沈阳在电影里那句““no zuo no die”。

然而,不管是“逃”还是“作”,“出轨”好像成为了一种化解“中年危机”的方式,就像一场渴望已久又潦草收场的春梦,不做不甘心,做了好像又白做。

像《情圣》中的肖央末了那不知如何收场的纵身一跃,在孤助无援的漩涡中终于惊醒,那些曾经心跳加速的瞬间和越搔越痒的孟浪,或许只是一场不可再言说的秘密而已。

醒来的那个瞬间,他看到卧室的风扇灯,叹息的同时应该更多的还是庆幸:“还好,还好,只是一场春梦而已”。

本文由优盈娱乐发布于政治,转载请注明出处:出轨,千万别来真的

相关阅读