cn12's Profile

1
points

Questions
7

Answers
0

  • 我在百度工作了十五年,下面我就说一说我如何以一项技能混了十五年的 一个了不起的创意会产生一个很棒的产品,如果它一炮走红,你发现手中的是下一个facebook 或者twitter,而且随着用户越来越多,会变得越来越慢,该怎么办呢?对全栈而言,解决这类问题的一个重要技能就是——负载均衡。 什么是负载均衡 负载(load)一词起源于典型系统,指连接在电路中消耗电能的装置,负载(用电器)的功能是把电能转变为其他形式能。引申出来,一个是实体,一个转化。 于是,对于实体,有了通信帧或者报文中数据字段的内容被称为信息负载(payload),网络负载指的就是网络中继承载的流量以及网络设备承载的用户量。 转化被进一步阐释为资源的使用情况,系统平均负载是CPU的Load 即workload,它所包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息。 了解了负载,那么负载均衡就容易理解了。wiki百科给出的定义是这样的: 负载均衡(Load balancing)是一种计算机网络技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最佳化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。使用带有负载平衡的多个服务器组件,取代单一的组件,可以通过冗余提高可靠性。负载平衡服务通常是由专用软件和硬件来完成。 并且,wiki百科自身的系统就使用了负载均衡。 每一种技术都有它应用的场景和领域,负载均衡主要解决的是系统性能问题。但是,了解了根源,就可以知道不能够一提到性能问题就非负载均衡莫属,如果负载减少了,可能少一点均衡也可以解决问题,这样的技术例如缓存。 基于DNS的负载均衡 基于DNS的负载均衡是负载均衡的最简方法,可以说是穷人的负载均衡。 DNS会将域名映射为IP地址,反之亦然。所有核心DNS服务器都是集群,用的最多的DNS服务器大概就是BIND了。查询DNS服务器时,推荐使用dig;查询DNS解析时,推荐使用nslookup。 使用DNS缓存可以提高DNS解析的性能。Dig 在mac上的使用示例如下: 对于DNS实现的负载均衡非常简单,采用轮转的方式,只要为所要服务的域名增加多个A记录即可。 例如: …

    cn12 Asked on 2016年10月20日 in 云计算.
    • 1312 views
    • 0 answers
    • 0 votes
  • 版权声明:本文为foruok原创文章,未经博主允许不得转载。 在分答(在行的付费问答产品)上,有个小伙伴抛给我一个问题,“35 岁以后怎么混?”。这个问题好大啊,我都不知道怎么回答,虽然我刚刚过了 35 岁。后来我回想和廖瑾老师(通过在行约的)聊天时她讲自己的精力分配时画的图,觉得正好可以回答这个问题,就从家庭、事业、灵性、健康四个方面蜻蜓点水做了简要描述。回答参考了下图: 60 秒语音很短,每一个方面都只能蜻蜓点水一带而过,来不及展开,所以,我当时回答完专门记下了这个问题,现在展开来聊一下。 这次先说灵性,它是一切的基础。 灵性 佛教里有一种说法,叫无明,指一个人不能明心见性,始终被外在的环境、人、事、物所影响,不知道烦恼因何而生,也不知道喜悦从何而来,诸般情绪因境而生,纷纷扰扰,不受自己控制,甚且自己成了情绪的奴隶,被倏忽来去的情绪左右着像尘粒一样做布朗运动。 当你陷入无明烦恼时,你意识不到色、受、想、行、识五蕴皆空,真我是被蒙蔽的,你做出的各种选择往往是因为各种杂念,而不是心中最想要的。 当我们 35 岁以后,应该努力练习觉知,明心见性,了解自己,知道自己是什么样一个人,知道自己想要什么,明了自己最珍视的人、事、物,对自己最想成为什么样的人有清晰的认知。通过对真我的感知和辨析,知道做什么最能体现自己的价值,知道自己的成就感、归属感在哪里,形成自己的文化,尽量不被世俗风气、习惯、价值观所左右,依着自己的内心,行所当行。 惟其如此,四十不惑才有可能。 惟其如此,事业、家庭、健康才有真正的根基。 灵性的修炼有很多途径,读书、旅行、瑜伽、参禅、定静、NLP、运动,每个人发现自己的方式都不同,每个人剥落包裹在自己内心外面的层层小我的方式都不同,你需要找到自己的方式,哪种方式能让你回归自然还原本真,就采用哪种方式。 一旦你对自己有了恰当的认识,知道自己最想要的是什么,面对纷繁的信息,就能有意识地做出有价值的选择,做得更少,但做得更好。 事业 用舒伯的生涯理论,31~44 …

    cn12 Asked on 2016年10月20日 in 职位快报.
    • 1072 views
    • 0 answers
    • 0 votes
  • 版权声明:本文为foruok原创文章,未经博主允许不得转载。         我发了一篇题为“35岁程序员的独家面试经历”的文章,结果引起了不少大龄程序员的共鸣和感慨,大家都对大龄技术人员的未来非常关心,有的迷惘,有的坚定,不一而足。因此,我准备写一篇文章专门来谈谈这个问题。 大龄程序员的界定 老早网上有人说,软件开发干不过30岁,后来又有人说干不过35岁,后来又有人说干不过40岁,后来又有人说干不过45岁……各种说法很多,所以我写了一篇文章,题为“程序员的年龄天花板”来讨论这个问题,感兴趣的可以跟进去看看。 这里我采取通俗的说法,认为过了30岁的程序员算是大龄程序员,只是为了讨论方便,不同意的请保留自己的意见。 人生的阶段发展理论 《论语•为政》篇: 子曰:“吾十有五而志于学,三十而立,四十而不惑,五十而知天命,六十而耳顺,七十而从心所欲,不逾矩。” 这是至圣先师孔老夫子对人一生的发展阶段的精辟概括,里面谈到三十而立。所谓三十而立,是指人在三十岁之后,就应该在稳定在某一个职业上,有所建树。 现代社会,对人生职业发展阶段研究最为著名的学者是美国的舒伯(D.E.Super),他是世界职业规划发展史上里程碑式的人物。舒伯对人的生命发展过程,提出了以成长、探索、确立、维持、衰退为中心的五个阶段模型。每个阶段都有不同的职业课题需要完成,当前阶段的职业课题没有完成的话,就会影响后续的职业发展和人生生活。 对舒伯感兴趣的可以问下贴心的度娘,她会微微一笑很倾城地告诉你舒伯职业生涯阶段理论的细节。我这里只涉及与大龄程序员相关的阶段。 在舒伯的生涯阶段里有个确立阶段,25岁~44岁。在这个阶段,职业上的发展课题有这些: 逐渐稳定于一项工作   确立自己将来的保障   …

    cn12 Asked on 2016年10月20日 in 职位快报.
    • 1117 views
    • 0 answers
    • 0 votes
  • 本文由被点击了一千万次的联想高管秘书撰写,版权声明:本文为foruok原创文章,未经博主允许不得转载。 在一个岗位上持续努力多年,领导也表示他很满意,但迟迟得不到晋升。什么原因呢? 这是我在分答上回答过的一个问题(感兴趣的可以点这里收听),也是很多人都遇到过的。原因大概有下面四点: 1. 比你现有职位更高的那些职位,一个萝卜一个坑,没有人走,你就无法挪动 很多企业的都是层级结构,想走管理路线的员工,沿着设定好的层级结构,一层一层往上攀升。跟夜晚登华山类似,就窄窄的一条道,前面的人不走,你就没法前进。所以你看很多政府单位、国企,有的人会在副处、副局的位置上蹲十年八年甚至几十年……绝望到要死要活…… 其实这种原因,很容易看得出来。遇见这种情况,没什么好办法,要么等,等到白头;要么走,到更能发挥你能力的场域去。 2. 你的领导实际上不能决定你的升迁,这事他的老板说了算,但他的老板管理多个部门,需要在多个部门的多个候选人之间来权衡。而你的老板不够强势,拼不过他的那些同级老板。 以IBM为例,经理们分一线、二线、三线。一个二线经理下面可能有四五个一线,一个三线经理下面可能有四五个二线。假如你是一个基层员工,现在有一个一线经理的空缺,你觉得你有能力做那个位置。你的老板推荐了你,可别的一线也推荐了他们的人。你的老板(一线经理)在他的老板(二线经理)前不得势也不强势,那你晋升的可能性就很小。 这种情况,你可以在工作中留意,让二线注意到你的工作表现,也让其他一线经理注意到你,给他们留下好的印象,这样,当你被提名一线时,二线知道你,觉得你干得不错,你的可能性就大多了,而其他的一线也对你有不错的印象,起码不会那么拒绝你,你的事儿就少了不少阻力。 3. 你的领导只是想让你保持干劲,而已 虽然你确实干得不错,但你的老板其实并没有要晋升你的打算,他只是希望你保持干劲,所以他会不断用感谢、赞赏来激励你,仅此而已。他给你发的是好人票。 有时你很难区分老板的真意是什么……比如这种原因和下面的第四点原因,就不大容易区分……但如果你身边有同事被提升,那基本就确定是这种了。你需要把自己放到你老板的位置(或者老板的老板的位置)上去,从他们的角度出发来看待工作,看看你的目标职位需要哪些能力,这些能力中哪点是你不具备的,有针对性的思考和练习,做好准备。 没有职位也可以是领导哦,请参看《横向领导力》一书。当你已经具备了上层职位所需的各项能力,别的萝卜被拔走有坑空出来的时候,你的可能性就很大了。 4. 你做得太好,无可替代 你的执行力太强,部门里有很多问题,只有你才能搞定,你能解决别人解决不了的实际问题,你一天就能完成别人一个星期也干不完的活儿。你的同事,或者你的下级,没办法替代你。假如你的老板让你升职,就没有人接得下来你那一摊子,整个部门的效率就会受影响。所以,你只能待在那里,继续做一个强大的执行者。 如果是这种原因,你需要培养接班人,需要帮助你的同事或下属成长,把你手上的工作慢慢交给他们,当有人能替代你时,你就能去做更大的事情,就有机会向上走。 …

    cn12 Asked on 2016年10月20日 in 职位快报.
    • 1168 views
    • 0 answers
    • 0 votes
  • 作者:李庆丰,微博研发中心研发总监,负责微博消息箱及开放平台的技术研发工作。微博Motan RPC框架项目负责人。十年互联网架构研发及技术管理经验,专注高性能高可用架构。 本文为《程序员》原创文章,未经允许不得转载,更多精彩文章请订阅2016年《程序员》 Motan(https://github.com/weibocom/motan)是微博技术团队研发的基于Java的轻量级RPC框架,已在内部大规模应用多年,每天稳定支撑微博上亿次的内部调用。 RPC调用优势 随着公司业务发展,微博内部调用和依赖越来越多,传统方式逐渐显现出弊端。 jar包依赖调用使得服务间耦合太紧,相互影响,同时也存在跨语言调用问题; HTTP依赖调用在协议上比较重,常在性能和效率上出现瓶颈。 越是大型复杂的系统,越需要轻量的依赖调用方式,RPC依赖调用很好地解决了上述问题。 典型RPC框架对比 目前,业界RPC框架大致分为两类,一种偏重服务治理,另一种侧重跨语言调用。服务治理型的RPC框架代表是Dubbo和DubboX。前者是阿里开源的分布式服务框架,实现高性能的RPC调用同时提供了丰富的管理功能,是一款应用广泛的优秀RPC框架,但现在维护更新较少。后者则是当当基于Dubbo扩展,支持REST风格的远程调用、Kryo/FST序列化,增加了一些新功能。 这类RPC框架的特点是功能丰富,提供高性能远程调用、服务发现及服务治理能力,适用于大型服务的解耦及治理,对于特定语言(如Java)项目可以实现透明化接入。缺点是语言耦合度较高,跨语言支持难度较大。 跨语言调用型RPC框架有Thrift、gRPC、Hessian、Hprose等。这类框架侧重于服务的跨语言调用,能支持大部分语言,从而进行语言无关调用,非常适合多语言调用场景。但这类框架没有服务发现相关机制,实际使用时需要代理层进行请求转发和负载均衡策略控制。 Motan倾向于服务治理型,跨语言方面正在尝试与PHP调用集成。与Dubbo系列相比,功能或许不那么全,扩展实现也没那么多,但更注重简单、易用以及高并发高可用场景。 功能特点 Motan是一套轻量级的RPC框架,具有服务治理能力,简单、易用、高可用。其主要特色如下: 无侵入集成、简单易用,通过Spring配置方式,无需额外代码即可集成分布式调用能力; 集成服务发现和服务治理能力,灵活支持多种配置管理组件,如Consul、ZooKeeper等; 支持自定义动态负载均衡、跨机房流量调整等高级服务调度能力; 基于高并发、高负载场景优化,具备Failover、Failfast能力,保障RPC服务高可用。 …

    cn12 Asked on 2016年10月20日 in 云计算.
    • 1080 views
    • 0 answers
    • 0 votes
  • 有一次去小杨烤肉吃饭,去洗手间时发现过道墙壁上贴了一张职业通路图: 这张图包含了管理通道、技能通道、组织内职业转型三种情况,非常清晰。 我们以基层员工为例,他可以沿着“基层员工–>前厅领班–>前厅主管–>前厅经理–>店长–>片区运营总监–>运营副总–>分公司总经理–>集团董事”这样的管理通道前进,也可以走“基层员工–>四星员工–>五星员工–>功勋员工”这样的技能(荣誉)通道,管理和执行两种职业通路都考虑到了。不仅如此,基层员工到一定时候,还可以转为培训师,最后进入培训中心,完成组织内的职业转型。 再举个例子,烧烤技师,既有1~9级的技能通路,又有“档口负责人–>厨部主管–>厨师长–>廚部经理–>行政总厨”这样的管理通路,还可能转行为培训师。 总之这是一张组织内的职业通道地图,每个人都可以看到自己下一步可以往哪个方向发展。看了这张图,你就对自己在公司内的各种可能性有了清晰的概念,如果你打算持续做下去,就可以依据这张图为自己设立一个目标,持续投入时间和精力来实现它。 这张职业通路图让我想起程序员的职业晋升通路来。我觉得程序员也需要一张类似的图,而这张图应当由公司根据实际情况来绘制,让公司的每一个研发人员都能知道,这样每一个想前进的程序员都可以选择一条通路来走,通过不断实现小目标来前进,最终实现大目标。 而实际上,很多软件公司木有这样的职业通路设计,或者说有,但从未向员工做足够多的解释,远没有达到让每个人都清晰自己的下一位置的程度。而恰恰是这种模糊处理,让很多基层员工失去了努力工作的动力——没有目标哪来动力呢。 有人说,一个人的价值不需要他人给个标准来衡量。 可是亲,比较是人的天性哦,80%以上的人,是活在比较中,是通过不断的比较来肯定自己的。一个人不但需要知道自己在哪里,还需要知道他人在哪里,这样才可以比较哦,才可能因此而获得存在感(优越感)。 还有人说,薪水的多少就代表了你水平的高低,职级评定做不做关系不大,职业通路有没有无关紧要。 可是亲,一个员工把他每周最重要的40个小时给了公司,公司难道不应该为他负责吗?难道不应该让他清楚地知道自己可以在公司这里获得什么样的发展吗? 总之,一张清晰的职业通路图,对员工非常重要,既可以让他知道自己的位置,也可以让他明了下一步的方向并因此而产生积极工作的动力,这无论对公司还是对员工,都是极好的事。 顶 5 踩

    cn12 Asked on 2016年10月20日 in 侃爷到.
    • 1153 views
    • 0 answers
    • 0 votes
  • 作为一个合格的程序员,有太多的理由促使你去编写干净利落且可读性强的代码。最重要的是因为你编写的代码,将来会有很多人一次次地阅读。当你有一天回过头来看自己的代码时,你就会明白编写优雅的代码是多么的重要。另外,如果别人来阅读你编写的代码,你是否想知道别人看到那些烂代码无比抓狂的感受。因此,花多一点的时间去编写优雅的代码,将来说不定会给你节省更多的时间。 那么,如何编写更棒的代码,下面是11条基本规则: 1、保持方法简短扼要 2、永远永远不要将同一个变量用于不同的目的 3、尽可能让变量和方法的名称能够描述要实现的功能 4、尽可能将变量定义在最靠近它们的地方 5、不要出现让人费解的数字 6、要像对待朋友一样对待你擅长的语言 7、不要逆常规而行 8、千万小心过早的优化代码 9、要常常重构经过测试的代码 10、不要沉溺于过度的设计技巧 11、随时随地学习新的知识 下面我们来对每一点详细展开介绍。 1、保持方法简短扼要 尽管很多人都遵循这条规则,但是它依然很重要。总的来说,编写的方法最好能在首屏完全显示。试想,如果你需要滚动页面才能看到整一个方法,那是一件多么分散注意力的事情。一个方法最好能保持在5 – 20行之间,当然,你也要视具体情况而定,并不是一概而论的。对于getter和setter方法,通常只需一行代码,所以它们看起来更像是类成员的存取访问器。 2、永远永远不要将同一个变量用于不同的目的 一个变量应该只能被用于一个目的,我们可以通过使用常量(C++中用const标识,Java中用final标识),帮助编译器优化代码编译,也可以向程序标识“这个变量是不能被改变的”,这样我们编写的代码就有更好的可读性。 …

    cn12 Asked on 2016年10月19日 in C/C++语言.
    • 1098 views
    • 0 answers
    • 0 votes