不要瞎写!不要瞎写!不要瞎写!
一个老婆儿在河边洗衣服,两只老虎走过来,它们一边走,一边说话。 一只说:“咱把老婆儿吃了。”另一只点头同意。 老婆儿听了老虎的话,回到家愁得哭起来。一只蝎子足出来问:“老婆儿老婆儿,你哭啥?” 老婆儿说:“老虎打赌蹦黄河,半夜三更要吃我。”蝎子说:“别怕,它吃不了你。”说完就爬到炕边上。 老婆儿仍然哭,鸡蛋滚过来问:“老婆儿老婆儿,你哭啥? 老婆儿说:“老虎打赌蹦黄河,半夜三更要吃我。”鸡蛋说:“你别怕,它吃不了你。”说完,就站在火合边。 老婆儿仍然哭,西瓜皮走来问:“老婆儿老婆儿,你哭啥?”老婆儿说:“老虎打赌蹦黄河,半夜三更要吃我。”西瓜皮说:“你别怕,它吃不了你。”说完,就站在门旮旯里。 最后,石磙子骨碌骨碌滚来问:“老婆儿老婆儿,你哭啥?”老婆儿说:“老虎打赌蹦黄河,半夜三更要吃我。”石磙子说:“你别怕,它吃不了你。”说完,它就關房檐上。 到了半夜,老虎来了,它在院子里大声喊:老婆子,为啥不点灯?” 老婆儿说:“家穷,买不起火柴,想点,你抽根干草点吧。” 老虎到炕边抽干草,蝎子狠狠蜇了它一下。它到火边点火,鸡蛋“吧”地一声崩瞎了它一只眼。老虎害怕了,扭头就跑,西瓜皮利溜一下,把
记得最早做app大家都提lamp,学会这4个就完事 现在写个代码,做个系统,设计个架构高低得k8s一下,k8s一来,那链路追踪、微服务监控、服务发现、稳定性方案之类的哗哗的就来了,那多了这么多东西,除了显得高大上,吹牛逼外,实际上多了什么好处? 微服务的目的 我觉得就是2个点 解决复杂的业务: 业务涉及面比较广,一个或少量模块会让业务逻辑过于集中,使得代码越来越复杂,越来越庞大,耦合严重 在将要进行重构改造时会发现历史包袱特别重,很容易迁一发而动全身 稳定性不好,可能产生二级服务出问题拖垮一级服务的问题 扩容不方便,CPU密集型服务和io密集型服务对于扩容需求不一样 解决复杂的人: 参数业务的人数据太多,一个团队十几个人改同一个模块,可能会常常要去解冲突 不同的人不同的想法,一个模块很容易出现很多种不同风格的代码 代码互相耦合但又不互相负责,导致很容易带着别人的bug代码上线 微服务当前问题 有能力要微,没能力也要微 一些团队为了能解决好上面两个点,带入了微服务,但微服务又需要一整套链路才可以发挥一个好的作用,而这套架构需要一个完整的基础、运维团队来维护,这是一笔成
从前,有一户人家:一个老爷爷,一个老婆婆,还喂着一头黑脊背、白胸脯的小胖驴。山上住着一只老虎,山下住着一个贼。老虎嘴馋,一心想着吃这头小胖驴;贼手痒,一心想着偷这头小胖驴。 一天晚上,下着蒙蒙小雨。老虎来了,贼也来了。老虎用爪在墙壁上抓,贼用手在屋顶上挖,不一会儿,墙被老虎抓了个窟窿,屋顶被贼挖了个窟窿。老虎钻进驴圈,贼也正想往下跳。忽然,老爷爷和老婆婆在里屋说起话来,老虎和贼吓得大气都不敢出了。 老爷爷说:“好像有什么声音在响?”老婆婆说:“唉!管他狼哩,管他虎哩,我什么都不怕,就怕漏!”老虎趴在驴圈里想:“翻山越岭我什么都见过,就是没见过‘漏’,莫非‘漏’比我还厉害?”贼蹲在屋顶上想:“走南闯北我什么都听过,就是没听说过‘漏’,莫非‘漏’比我还厉害?” 老虎吓得浑身发抖,贼听得腿脚发软。贼心里害怕,脚下一滑,扑通从屋顶的窟窿里跌下来,正巧摔到虎背上。老虎未料到房上会有东西掉下来,心想:“坏事,‘漏’捉我来了!”撒腿就往外跑。贼栽得昏头转向,一摸是个毛乎乎的东西,心想:“坏事,‘漏’等着吃我哩!”拼命抱住虎脖子不敢松手。 老虎驮着贼,贼骑着老虎,跑哇,跑哇,累得老虎筋都快断了,颠得贼
很久很久以前,一般的动物之间没有战争,和睦相处。但在动物界,猴子的聪明都是知道的,比起其他动物来,总能想出一些聪明的点子,有时也搞个恶作剧。有一天,好动的猴子闲不住,想在平静的生活中弄出点动静来,给大家增添点乐趣。猴子平时觉得狐狸心眼太多,就想找个机会捉弄它一下。这天夜里,大家都睡下了,猴子悄悄地起来,看到狐狸贴着马的身边睡得正熟,便想出了个主意,它将狐狸的尾巴和马的尾巴死死地拴在了一起。然后,它就去找兔子,并对它说:“天快亮的时候,要有一场好戏看!”兔子问猴子什么好戏,猴子说天机不可泄露,你只要按我说的,到时候去看戏就行了。 猴子把计划给兔子说了,让它黎明时分到它们平时常走的一条路上去等着,躲在树丛里别出声,很快就有好戏看。兔子按猴子说的,就提前到那里去等着了。 回来之后,猴子发现狐狸和马都睡得很香,谁也没发现自己的尾巴被拴在了一起。这时候,眼看到了黎明时分,猴子大叫一声:“老虎来了,老虎来了!大家赶紧逃命啊!”猴子这一叫不要紧,很多动物都从睡梦中醒来,迷迷瞪瞪,起身拔腿就跑。那匹高头大马腾地站起来,夺路就跑,它哪里知道尾巴上还拴着那只狐狸!拖着狐狸朝着那条大路一路狂奔。这狐狸也不知
我们服务分层时可能会遇到一些问题: 比如在componentA里我们可能会查一下用户信息,同时componentB里可能也需要用到同一个用户信息,这时我们有几种选择: componentA里查一下db或rpc,componentB里再查一下db或rpc。这样的话会带来多次db或rpc查询,浪费了资源,带来性能损失 在componentA和componentB外层查一次db,然后再传给两个component。这样问题是我们每次遇到这种情况都要改代码,把查询不断往上层提,除非提到最上层,否则也不能从根本上解决,而如果全提到最上层的话那分层意义就会弱很多 其中一个component查完自己存起来,然后一层层往下传,哪里用到就通过参数传过去。这样一是会带来参数无限扩张;二是有顺序问题,比如现在是A请求了存起来B用,那就要求A要在B之前调用,如果A前面再来个C也要用,那就需要把A里请求的代码挪过去,很难维护 很多时候,我们的方法常会产生一些逻辑过程的中间值,用于后面其它逻辑使用,这样的话中间值就会在逻辑里各种传递,可能会越传越深,导致如果这个值有什么变动,就需要改很多地方 request
eLangX