来小米面试通过了,小米6你不知道的功能以后前途会怎么样

a 当前位置:
雷军自述:小米如何成功逆转
&雷军 o  来源:雷军个人微信公众号 E794
本文转载自小米创始人雷军个人微信公众号:leijunxiaomi
近日,亚布力中国企业家论坛的三十多位理事访问了我们小米公司的总部,亚布力论坛理事长陈东升主持了这场主题为&互联网+与中国制造升级&的CEO研讨会。
在会上,我分享了小米的商业模式、价值观,小米在过去遇到了哪些困难,以及在今年如何成功实现了逆转,围绕小米模式,陈东升、张维迎、阎焱、汪潮涌、俞渝、张树新、王兴等理事跟我进行了深度的交流,大家讨论地非常热烈,会后我还带大家参观了小米之家。
由于我当时介绍解读的时间比较长,下面节选一部分内容跟大家分享。
大家对小米存在一些认知差异,主要因为小米属于新物种,有着前所未有的新商业模式结构,所以在不够了解小米的时候很容易误解。比如,小米创业初期很成功,大家就觉得小米模式是王道,互联网思维就是厉害,后来小米遇到困难,大家又觉得小米模式不行,互联网思维是忽悠。实际上,互联网思维是源自互联网精神的思维,但不是只有互联网才适用,它的本质是透明和高效。互联网是0,实业是1,如果实业立不住,再多的互联网思维也没有用。
7月份,当我们二季度的业绩逆转后,我们在高管战略研讨会上做了研讨总结,核心内容就是PPT上的这四个问题。
一、小米创业之初,仅仅两年半时间,为什么能够从零做到中国第一?
我们今天回想一下,2010年一个小创业公司拿着三千万人民币做手机,进入了全球竞争最激烈的行业。这个行业竞争有多激烈呢?国际手机市场上,其实只有两大玩家,一家叫苹果、一家叫三星,你们再想想哪个行业只有两大玩家。在中国市场上,我们入场时有300家,到现在活下来只有20多家,其中前几家我认为基本上能活下来,后面10多家还在抢夺生存权。这是全球竞争最激烈的领域。在这么激烈竞争的领域,一个从零开始的创业公司只用两年半干到第一名,到今天我自己都觉得匪夷所思。但是奇迹发生了,为什么?
创办小米是在我卖掉了卓越、金山成功上市、退休了三四年之后,在我40岁的时候决定干的事情。小米想干什么事情呢?我想为中国解决点实际困难,这个实际困难就是当时的国货不够好、价格很贵,很多人就去国外买买买。
 二、过去两年,小米到底遇到什么困难?
过去两年外界舆论几乎一边倒的觉得我们不行了,那么我们究竟遇到了什么问题?如果不搞清楚我们自身的问题,其实很容易乱决策,尤其是企业遇到压力的时候。我跟一些企业家交流的时候说到四个字:守正出奇。遇到问题的时候,大家希望用奇招来逆转,这是错的。遇到困难一定是某个基本功出了问题,守正比出奇更重要。其实企业都是被自己击败的,只有当你守正了,立住之后至多是好一点差一点,然后你再想奇招怎么胜出。尤其是大规模的企业,像小米现在一千多亿的营业额、一万多人的时候,守正非常重要。
我们今年一季度的出货量是1362万台,去年几个季度的数字都不好,全球出货量跌出了前五,负面报道很多,甚至今年年初的时候,还有一个评论说&世界没有任何一家手机公司销售下滑后,能够成功逆转的,小米前途堪忧。&
为什么手机销量下滑以后很难逆转?因为这是供应链全球高度整合的行业,而且上游也是高度垄断,技术迭代又非常快,你的成功是需要很多合作伙伴共同努力才能达成的。如果大家不看好你就意味着投到给你的支持就减少,就会一步一步滑向深渊。
我们遇到了什么困难呢?第一个困难,线上市场遭遇恶性竞争。当我们450亿美金估值出来以后,所有人都觉得他也能干,只要烧钱就行了。所以在过去两年时间里,一些同行在手机市场赔的钱是天文数字。
第二个困难,我们专注线上,但错过了县乡市场的线下换机潮。小米整个商业模式就是为了高品质、高性价比。高性价比是效率革命,要提高效率在当时的市场情况下只有电商能够完成小米要的效率。所以我们在过去几年里面专注于电商,但是有一个天大的缺陷,电商只占商品零售总额的10%,到今天为止90%的人买东西还是在线下买,也就是说就算线上100%是你的,你也只有10%的市场。在过去几年中小米面临的最大问题是战略如何升级、如何才能胜出,所以我们最痛苦的是如何高效率做线下。
手机行业普遍定价是成本价的2-2.5倍,就是你需要花很多钱才能做的动线下市场。原来我们做电商接近零毛利就可以做,今天做线下的时候定价结构就有问题,我要成本价做电商的同时,又要加100%的价钱做线下,就开始左右手互博、人格扭曲。所以过去两年我们都在进行战略突围,要么就甘于做一个还算不错的手机电商公司,要么想办法提高整个中国零售业的效率,就要有像当年沃尔玛、Costco创办时一样的决心来改变中国的商业业态。
第三个困难,高速成长带来的管理挑战。各位想一想,一个公司从十几个人长到超过一万人,天呐,到处漏水。关于我们做的生意我一再讲是&海鲜&生意,半天就要搞定,否则下午就臭了。上次我们小米CFO周受资说,有一个手机公司老板跟他讲我们做的是&冰块&生意,拿出去太阳一晒就没了。我们的生意很复杂,而且涉及到巨大的现金流、库存和非常长的周期:订货需要提前4个月,库存周转要求很高。在这种情况下快速成长的公司稍有不慎就是万丈深渊。
其实就是上述三个问题,我觉得这三个问题中最要命的是第二个:商业模式能不能突破?
三、今天的小米为什么能够成功逆转?
我们是怎么解决刚才提到的三大困难呢?其实在去年年初小米的全员动员会就提了两个字:补课。我觉得要认识到之前我们的第一还很虚,我们还没有真正与之相衬的实力,我们要放下架子从零开始创业,缺啥补啥,对标行业领先者,保持谦卑的心态。我们就只提了补课,销量都不在我们的计划当中,坚持补好课,基础能力上来,还能不赢吗?关键是练好基本功。
这个课具体怎么补?第一、组织结构对标,每个行业都有行业的规律。行业中领先的公司在一次次组织优化里面都找到了最优解,我们要尊重行业规律,向同行学习。
在业务管理上,最核心的是意识到手机工业的复杂度,需要产供销一体化。我们在手机部、供应链、小米网销售团队分别组建专门的参谋规划协调部门,一年里从0开始建立起超过100人的协同团队。就是这100个人在帮我协调整个庞大的产供销体系联合作战。
在几种能力具备了以后,我今年提了三大命题。我们面临的问题有300个,我说300个解决不了,我们要以创新、质量和交付三个命题为龙头来解决问题。对手机业务来说,质量是生命线,我们是靠质量在中国成为第一的,我们也是靠质量消灭了所有山寨机,但是今年的问题是对手不是山寨机了,我们的对手是中国企业里面最牛X的公司,问题是怎么能在质量上全面超过他们?
今年年初,我亲自牵头质量委员会,经过十多次专项会议的讨论,制定了翔实的质量行动纲要,并组建质量办公室专门督办。我们的目标是用品质的铁拳赢得市场。
当然,我在今年年初讲最坏的时候已经过去了,很快第二季度就立竿见影,我们第二季度出货2316万部,环比增长70%,重返世界前五。现在看来,业绩回来的速度比我们想象要快很多,我觉得它是我们过去一年半夯实基础、苦练内功的必然结果,所以我们又创造了一个奇迹,基本实现逆转。我认为逆转的核心是分清楚了优势和劣势,重点抓住劣势,放弃了KPI和销量,全力夯实基础,保证公司健康运营。
我觉得小米之所以能够逆转,还有一个关键原因是在于创新,因为不创新是逆转不了的,我们在创新方面做了哪些事情呢?首先说一个结果,就是我们在最困难的时候,今年年初Boston
Consulting Group(波士顿咨询公司)发布的世界创新50强报告中,有两家中国公司入选,小米在35位。FAST
COMPANY(快杂志)全球最具创新力的公司排名榜上,有6家中国公司入选,小米排在13位。
核心技术创新
什么是核心结束创新?举个例子,我们去年在全球发布了全面屏手机小米MIX,惊艳了全球。这款全陶瓷机身的手机屏占比达到了91.3%。我们把这种新手机设计形态命名为&全面屏&。现在包括今年的三星Galaxy
S8、9月份即将发布的iPhone8,大家都跟进了这种设计,整个行业都接受了&全面屏手机&这种定义。我们站到世界的巅峰,引领了整个技术的潮流。
接着再讲在相机上面的投入,小米6被用户高度认可的是:变焦双摄、拍人更美,我们在变焦双摄上比同行旗舰机要好很多,我们找了一个公证处,认真做了小米6和另外两款同行旗舰手机的盲测,有63%的人觉得小米的手机好。其实不光是屏幕,我们孩子啊包括芯片在内的一系列核心元器件方面招揽人才组建业内顶尖团队,投入巨大,下了苦功夫,实现了大量核心技术创新。
截至目前,小米已获得授权专利4806件,其中一半是国际专利。去年我们申请了7071件专利,获得了2895项专利。在支撑产品技术创新不断涌现的同时,这些专利储备也为我们未来进军欧美市场打下了良好的基础。
商业模式创新
理解商业模式创新的本质题眼是&小米是一家什么样的公司&。以前很多人问过我小米的商业模式是什么,我很难一句话说清楚,后来我终于想明白了,因为我们是一个新物种,所以你没有办法定义这家公司是什么。我最近把它简单总结成一句话:小米是手机公司,也是移动互联网公司,更是新零售公司。我们在移动互联网领域做了不少事情,也到了很大规模,今年收入也是过百亿的。而很多还没意识到小米另外的价值:我们从一家电商平台公司已经进化到新零售平台。
看了这张图,就更能理解小米所有的战略。小米手机做得好,带动了小米网的销售,小米网做起来以后,又销售了更多的手机给用户,然后在小米手机里预置了小米商城APP又再次拉动了销售,简单讲就是爆品推动平台,平台又推动爆品,是一种良性互动的模式。
接着我们更大的战略突破是做了小米之家。小米之家是具备电商效率的线下零售店,每平方米的坪效是27万人民币,目前排在世界第二。我认为是小米在过去两年巨大的创新,就是可以用电商成本做线下零售店!
买手机是一个低频的行为,厂商打了大量的广告说服用户两年买一次,两年以后又需要再打大量的广告。那怎么解决这个问题呢?它需要产品组合,我们为此发明了硬件生态链的打法,丰富完善产品组合,用一两百个产品黏住用户。
我们的哲学和所有的公司不一样。我努力的目标就是做最优质的产品,卖的越来越便宜,这是我七年前做小米,能让我自己激动的伟大的梦想。
这个模型的缺点是什么呢?太复杂,这个人要懂硬件、软件、IOT、零售等等,几乎是个&全能型&的模型,这对整个团队的要求非常高,执行难度非常大。全球有哪家公司又能做平台、又能做硬件产品、还能干互联网?寥寥无几。小米模式本身有着非常大的难度,在每一个纬度上都有世界级的竞争对手,你还必须胜出。
这是我们总结的小米模式图,我们叫旋风图,从图上可以清楚看出小米的各个业务都是环环相扣,循序渐进,持续升维。
我们最早先建起了小米社区,聚集了一批手机发烧友。随后做了MIUI操作系统,MIUI发布之后我们又做了手机,然后做了小米网电商。电商成功后马上以巨大的决心做了云服务和大数据,然后马上渗透电视和路由器。其实电视也是我们最早准备做的,只是我们对产品要求太严苛,发布晚了几个月。做路由器是想做智能家居的中心,接着做了全网电商、互娱、生态链、小米之家、互联网金融和有品商城(原名叫&米家有品&)。有品商城是以众筹筛选为主的全网精品电商平台,目前规模也已经很大了。我们定义有品商城要有2万个SKU、小米商城有2000个SKU、小米之家有200个SKU。
四、小米的核心竞争力到底是什么?
我在小米内部反复讲的话有这么几句:第一是米粉文化,就是和用户交朋友。其实和用户做朋友是件挺难的事。很多人永远想的marketing方法都是怎么把东西更贵地卖给消费者,这样的用户都是敌人怎么会是朋友?把他口袋里面的钱放到你的口袋就是&抢&。所以怎么样能和用户交朋友,是我们所有业务展开的基础。第二做感动人心、价格厚道的好产品。第三是铁人三项,就是三项基本功:硬件+新零售+互联网,第四是实业+投资,用生态链完善产品组合。
小米生态链部门加上小米公司自己的投资部一共投资了200多家公司,覆盖面可能远超大家的想象。我的观点是自己能不干的就不干,因为我们的业务极为复杂,永远要强调专注、简单。
我们生态链业务发展的历程可以比喻为&大船到舰队&。2014年初联合创始人刘德带着十几个人建立了生态链部门,陆续做了各种产品。现在手环做到了世界第一,空气净化器去年是中国第一,实际上也是世界第一。平衡车是世界第一,充电宝是世界第一,扫地机器人也是世界第一。
整个公司获得了145多项工业设计大奖,包括小米手机、电视、盒子、音箱在内。我认为好产品也是要好在设计,在我们8个创始人里面,刘德是Art Center
college of
Design毕业的,之前担任过北京科技大学工业设计系主任。我在组建小米的时候,认为中国产品要改变设计,以前大家认为品质是功能上的品质,其实感受上的品质也很重要。各位去了小米之家,就知道今天中国制造业设计出来的东西都是世界顶级的,每天都吸引了很多外国人来我们小米之家&海淘&。
小米之家从去年2月份开了第一家,到今年8月份开了156家。目前开一家火一家
,坪效非常惊人,仅次于苹果,居世界第二。我们是用和用户交朋友这种理念持续地去思考如何提高效率,如何让用户有更好的购物体验。
周末去小米之家,每家都是人山人海。大家觉得零售业不行,其实是传统零售业不行,要想在零售业领域大有可为,关键是达到电商效率,并且与传统的零售业在展示和体验上的优势相结合。
我们小米之家的目标是三年开到1000家,五年内营业收入力争破700亿。目前一家店平均200个平方米,平均营业额在6500万到7000万之间。
怎么能在短短一年多时间就做出这样的业绩呢?我觉得关键是小米的价值观。第一是和用户交朋友。你把用户当成朋友,你想对待朋友应该是给到什么样的价钱、什么样的服务。第二要有合适的产品组合。第三坚持高品质、高性价比。当高品质、高性价比植入消费者的印象以后,用户觉得在小米买什么东西都不是要钱的,现在小米之家都是像超市一样摆着筐的,很多人都是拿着筐买东西。
小米模式的核心是获取用户的信任。我的观念是把产品做好做便宜,让用户不要思考,买东西的时候不看价钱,这样的销售效率才能做到最高。如果用户要是说你有的毛利高、有的毛利低,要去挑,这就是普通商场的做法。在我们这里买任何东西都不需要挑,任何东西都是超值的。如果小米做到了这件事,小米的商业模式就是第一的,就是顶级信誉!其实美国的Costco做到了这一点。我们有很多朋友,他们在Costco买东西是不看价钱的。我们想一想如果做生意,用户不看价钱这意味着什么?我认为这是经商的最高境界。你要把生意做到用户不需要看价钱,这是用户对你的信任,这就是商业上最大的成功。
本文来源前瞻网,转载请注明来源!(图片来源互联网,版权归原作者所有)
广告、内容合作请点这里:
前瞻网官方微信
发现趋势,预见未来!
前瞻产业研究院
如何抓准行业的下一个风口?未来5年10年行业趋势如何把握?扫一扫立即关注。
相关阅读RELEVANT
文章评价COMMENT
还可以输入<em class="orange" id="emCmtLen" maxlen="个字
网友评论仅供其表达个人看法,并不表明前瞻网同意其观点或证实其描述。
前瞻产业研究院
Copyright (C)
深圳前瞻资讯股份有限公司 All rights reserved.    增值电信业务经营许可证:面霸的八月:小米面试记 - 文章 - 伯乐在线
& 面霸的八月:小米面试记
书接上回,今天叙述小米的面试经历。这里可能有一些技术理解和技术方案,欢迎讨论。另昨天共计收入7笔共95元,够我喝几杯咖啡了,谢谢所有捐钱的朋友。
小米:运维部
在小米是聊了两个部门的,首先是运维部门,在 @wilbur井源 的热情招待下,吃了顿大餐,抱歉的是我没有带足现金,所以付款时我无法“客气”,改天补请。
wilbur井源同两位同事与我四人边吃边聊,我简单介绍当前的网站的服务结构以及部分业务的技术设计,比如网站架构的分布情况,分布式文件系统fastDFS的使用状况、Redis和MySQL的一些部署结构和技术,其中尤其对监控这件事情我做了详细一些的说明(详见服务可用性监控的一些思考以及实践),中间提到了关于主动监控(主动监控是指通过运维和业务部门指定监控的系统资源、接口、页面、日志等,主动发现问题,警报级别较高)、被控监控的概念(指通过JSlib或客户端lib对于所有的操作尤其是网络接口的请求进行监控,对异常进行汇报,通过收集日志的方式进行可用性问题的发现)。当然,还有必不可少的是对haproxy的运行和优化状况(参见Haproxy配置),MySQL的架构及优化方式(见MySQL架构及运维),Redis常见的性能问题(参见redis架构及运维问题),fastDFS同其他分布式存储MogileFS、TFS、lusterfs的在功能、运维成本上的横向比较,多IDC图片cache的部署以及性能优化(参见多idc图片Cache部署),Linux内核参数(参见Linux内核配置)和让我特别自豪的是关于网卡smp affinity/RPF/RFS的优化效果(参考3/4/5)的一些优化等。当然,这是正经的运维部门,我阐述了我对“运维”工作的理解:60%的分析整理工作加上40%的技能,分析整理能力是做好运维的基础。
井源也询问了几个安全问题,我粗浅的理解是:从系统管理员(SA)的经历来讲,做好IT系统规划,合理区分服务器角色,通过iptables是能够阻止大多数接入层非法请求的;对于web业务的安全来讲,SQL注入、CRSF等攻击是因为对输入输入内容的过滤不严格导致的,在开发的过程中合理使用一些优秀框架或lib,也能够避免大多数漏洞的产生;有个比较有意思的话题是关于溢出的,现在我已经不会计算溢出地址了,在我当script boy的时候研究过一点,忘光光了,惭愧……
井源这边的效率很好,边吃边聊的气氛很放松,不过很多问题都停留在一些思路和效果数据上,没有勾勾画画的太多深入的探讨。
大约8点半左右到的电商部门,常规面试的第一轮都是技术,包括细节。面试官是位张姓的team leader。
在这轮面试的过程中,因为是在会议室,有笔有板,所以我边讲边写。大体上介绍了我对web服务架构的理解,我认为,web服务架构大体上离不开这样几个层面:接入层(负载均衡)、业务服务层、数据层,一般还会有不少的后台辅助程序进行同步、异步的处理各种不适合在业务层融合的服务单元。数据层可以包括DB、Cache、File等,数据层还可能会有很多中间件或代理服务器用来做数据层的负载均衡或是HA,以及Sharding等。同面试官详细介绍了当前服务的公司在每一层所采用的技术,分别是:haproxy、nginx+php、twemproxy+redis、MySQL+RedisCache、Varnish+Squid+nginx+fastDFS。
haproxy的服务器配置是按照100w并发的目标进行配置和优化的,计划100w客户端连接,考虑每个客户端连接可能产生1个内部连接,按照每个连接消耗4k(此处修正为17K,haproxy的官方数据,见参考8,感谢 @ 的修正)内存来算,大约8G(此处修正为32G)内存【这里的计算还需要再考虑,我担心haproxy的每个连接消耗17k内存是包含对内部服务器的连接】,实际上往往比这个数字要大。目前达到的最大连接数目测到过16w,在接入层的系统优化上分别有:网卡中断优化(参考3/4/5),linux 内核参数优化(见linux sysctl.conf配置)。
值得一提的是,我们的haproxy服务器都是64G内存,实际上远远永不到这么多,图片服务的最外层cache,即Varnish,我们也是部署在haproxy服务器上的。
在最外层服务器上,我们每天大约5亿+(1-1.5亿+的动态请求、3-4亿+的图片请求)的请求量,共计使用7台64G的Dell R410,目前看负载还很低,从系统的各种资源上看,请求量翻倍应该是没有问题的。
在最外层的服务器配置上,有一个问题值得注意,即sysctl.conf的配置中,timestamp必须为0,这个在tcp协议的扩展标准中有提到,否有nat环境的客户端连接有可能产生异常,异常的状况可以在netstat -s 的输出中看到。还需要注意的是timestamp=0的情况下,tw_reuse是不生效的。
要保证服务器能够接收大并发的连接请求是件不难的事情,但需要考虑一个细节,每接收一个请求,haproxy就需要至少分配一个系统的tcp端口请求后面的业务服务器、cache服务器,系统一个ip地址可用的端口数最多为65535,一般还需要减去1024。值得考虑的是减小 tw_bucket 的容量,让系统在tw_bucket满的状况下,对tw状态的连接进行丢弃,以达到快速回收的目的,tw的默认回收时间的2倍的MSL。还有一个方式就是多配置几个ip。
还有一个问题,接入层的服务器往往会开启iptables,内核中nf的相关配置也是需要优化的,比如 nf_conntrack_max、nf_conntrack_tcp_timeout_established等。
在业务层的优化有nginx+php(fastcgi连接方式、php-fpm.conf配置中的优化),我的一个经验是,如果nginx同phpcgi运行在同一台服务器,采用unix socket的方式进行fastcgi协议的交互是效果最快的,比127.0.0.1的回环地址要快太多。我在08年优化过一台服务器(Dell 2960,16G内存),通过两个步骤,将一台服务器从900qps,优化到6000qps以上,其一是将fastcgi协议运行在unix socket上,其二是合理配置spawn-fcgi的进程数量。现在基本上phpcgi都是运行在php-fpm中的了,其进程池逻辑是我最赞赏的功能之一。
如果nginx和php-fpm不在同一台服务器上,可以考虑使用fastcgi_keepalive的配置,实现nginx同fastcgi服务器持久连接,以提高效率。
nginx+php-fpm提供的运行状态非常有意义,nginx的status模块和php-fpm的status输出可以告诉我们nginx进程的请求处理状况,php-fpm的status输出可以告诉我们php-fpm的进程池设置是否合理。我们目前对这两个数据通过nagios定期采集,并绘制成图表,很有“观赏价值”。
php-fpm.conf的配置中还有几个参数对优化比较重要,其一是进程自动重启的条件pm.max_requests,其二是php-slow log的配置,slow log 是优化php代码的非常重要的信息。在我目前的环境中,php的慢执行日志是通过rsyslog进行传输并集中分析的,以此反向推进开发对php代码的优化。
php的服务器在高并发的情况下,有可能因为服务器本身可提供的端口数量的限制,无法同redis服务器建立大量的连接,这时候可以在sysctl.conf中配合timestamps=1 加上tw_reuse/tw_recycle的方式,进行端口快速回收,以便更好的向数据层建立连接,接入层的haproxy是不可以这样的。
这一层还涉及到一个安全问题,就是php代码被修改并挂马的状况,我的解决方案是,将php-fpm的运行用户同php代码的属主设置成不同的用户,并且保证php-fpm的运行用户不能对php代码具有写的权限。
数据层的情况里,MySQL主从结构以及MHA+keepalived的高可用配置,这个基本上是看文档应该就能够理解的。如果是5.6的新版MySQL,其高可用监控可能可以做的更简单,MySQL官方提供对应的工具,只是我还没有测试。对MHA的监控功能,我觉得亮点是MHA对切换过程中MySQL binlog的获取和执行,在最大程度上避免了数据丢失。但是其缺点也是有的,比如:监控进程在触发切换后就停止了,一旦触发,必须重新启动进程再继续监控。06年时我在sina做过一个叫Trust DMM的项目,通过 DNS、MON加上自己写的插件,监控MySQL主从集群的可用性,可以实现,主库、主备自动切换(缺乏binlog处理的环节);从库是一组服务器,如果从库发生问题,可以自动下线。只是这套系统部署起来比较麻烦。这个项目曾经获得过sina的创新一等奖。
我还提到了我认为的DBA日常的工作至少应该包括:审查并执行上线SQL;定期检查MySQL慢日志并分析,将分析结果反馈到开发部门进行调整;定期审查数据库中索引的效率以及可用性,进行优化我反馈。现在做一个一般水平的DBA已经相当容易了,对percona的工具了解透彻,已经能够解决非常多的数据库问题了。
MySQL还有一个难缠的问题,numa架构下,大内存服务器内存使用效率的问题,numactl对策略进行调整,如果使用percona的MySQL版本,可以通过 memlock配置对MySQL的Innodb引擎进行限制,禁止其使用swap。
MySQL常见的架构里,还有一种主从存储引擎不一致的方式,即主库采用Innodb引擎,提高并发写入的能力,从库采用Myisam引擎,这种方式目前我们也在采用。这样做一是为了获取更好的读性能,另外是,Myisam引擎的是可以节省内存的。Myisam在索引数据内存读取,数据内容磁盘读取的状态下,已经可以比较高效的运行了,myisam_use_mmap的配置项,会让MySQL将myisam的data文件也mmap到内存中,这样做既高效,又可以使用mysiam引擎的特性。
数据库主库要避免一件事情发生,就是无条件删除和无条件修改,如“delete from table”以及”update table set xxx=yyyy”等无where条件语句,原则来讲是应该禁止执行的,这样的权限不应该开放给开发的同学,甚至DBA都不能无限制的操作。目前我的解决方案是 sql_safe_updates=1,但这配置是不能够写my.cnf中的,只能启动mysql后进入console进行配置。
当前我们还使用了Redis作为DB,基于主从架构,跨IDC。目前的问题是,复制连接断开后,Redis快照重传的问题,从库会在快照替换期间有短暂的性能抖动。 Redis2.8新版本psync的特性应该可以改善这个问题。我们还使用twemproxy,目前部署在每一台php服务器上,并监听unix socket,php使用phpredis的模块进行连接。有效减少三次握手的时间。temwproxy还有很多其他的优秀特性,通过一致性hash做cache集群,可以有效的避免cache迁移问题。通过其对后端redis的健康监控,可以自动下线有故障的redis。
还有针对多IDC的图片存储和Cache部署情况。目前我们自建的图片CDN承载网站每天约4亿的请求,带宽最高峰值约1.5G左右,其结构大体上是中心IDC存储图片原图+SQUID disk cache存储图片缩略图,在外地IDC使用两级缓存,分别为一层SQUID disk cache(两台,做HA),另一层为Varnish cache(最多四台),实际上,如果仅考虑work around的状态,squid cache层基本上也可以不要的。但是,目前这样的结构可以减少varnish回中心节点的请求,减少中心机房带宽的压力。这个结构还算简单,varnish在高并发请求下,有一些资源配置是需要注意的,比如NFILES / VARNISH_MAX_THREADS / nuke_limit 等。
沟通的技术问题还是非常多的,包括在井源那里提到监控框架的事情,也尤其提到了我对rsyslog的优化,优化后的rsyslog在可靠性方面是非常值得称赞的(优化思路见参考6)
我有一些将电商三面的运维运维同学的问题综合到这里了,有些话重复的就不再描述。
值得一提的是二面是另一位开发负责人,一看就是个很有独立思考能力的同学,他问了我一个很有意思的问题,大体的意思是,在系统架构方面,有这样的几个层次,从下往上:使用开源、精通开源,优化并修改开源软件,创造开源软件。问我自己评价我是在哪一个层次的。我认真的思考了一下,我应该是在第二个层次,有些精通的,有些修改过的。
电商四面是时间最长的,至少有两个小时以上,结束的时候已经是夜里一点四十了,我觉得电商的老大是应该在支付宝里面给我捐一些钱才好的 ,不知道有没有小米的同学能够转告哈
。我们应该是谈到了非常多的事情,包括秒杀的解决方案,包括对持续集成和自动化测试的理解、对后台数据业务类型的开发中数据计算错误的理解,时不时能够得到“我们想的很一致”这样的评价。
那时已近半夜,记忆进入低效态,一些太琐碎的事情记不得了,重复的技术方案也不再赘述。下面简单描述一下我对秒杀的解决方案的理解:10w的数据,从0到10w,不能多卖。目前的问题是,每次到秒杀时分可能同时进入100w的请求/连接。如何破?
我的方案是:排除user、session等外部依赖服务的前提下,两台ha外面抗并发连接(后来想这个无所谓的,不如做成php的服务器),三台PHP服务器(不要使用任何框架,最朴素的纯粹PHP代码),两台Redis(最初说了一台)。具体优化状况如下:
haproxy优化能够支持百万并发连接,这个很容易了
nginx优化worker connections,优化nginx的并发支持能力和请求队列的接收能力
php-fpm优化listen.backlog,优化fastcgi请求队列的接收能力。
Redis 假如在秒杀的1分钟内,服务器不出现故障,优化redis的最大连接数
优化所有服务器的网卡、sysctl参数
php的逻辑可以简单的理解为对redis的某一个key进行incr原子操作,如果返回的当前数值小于等于10w(两台redis的情况下应小于等于5w),则认为中签。
从我以前看到的数据来讲,redis的最好状态在8w qps。nginx+php在08年时已经优化到6000 qps,目前的服务器设备(双核16cpu+64G内存)达到2、3wQps应该也是不难的事情(这个的最新数据我不知道)。上述配置至少应该能够在5s内完成10w次redis的incr操作。加上系统各系统对请求队列的支持,可以几乎做到不报错,短暂延迟。
如果考虑1台redis请求量会很高,可以考虑分片,每台分5w。
当然,这是在仅仅思考不到1分钟内给出的方案,从现在来看,haproxy是可以不要,nginx扛并发连接的能力也不错。所有的细节还需要通过压力测试进行验证。而实际情况加上对其他服务的依赖(我不知到还有哪些,抽丝剥茧去除干扰),方案也会更加复杂一些。据电商老大讲,实际情况是,秒杀的服务用了十几台服务器,秒杀的时候偶尔出现一些故障,小米做秒杀的同学,压力很大哦。
如果你提到要记录中签的用户的uid和中签号码,还是redis吧。
(突然wps的linux版崩溃了,只能恢复到这里,后面的部分内容是重写的,可能有点混乱)
针对刚才的问题,我在白板上画了个简单的架构图:haproxy+nginx/php+redis,haproxy和nginx/php都是可线性扩展的,redis可以通过sharding来实现扩展。理论上讲,一个可扩展的架构是可以满足任何性能要求的,更何况如此简单的逻辑,单机性能已经可以做到非常高了。
电商王姓负责人在问我方案时问这个需求会有哪些难点?我看着白板笑笑:目前看,应该不存在难点。如果有问题,应该看日志和服务状态以及服务器状态。
第四面聊得很头机,对方几次想结束时都突然冒出来一个问题,每一个都会讨论比较久,比如后台的一些计算操作是否换成java更合适,因为java可以更严谨。我说这可能不是语言的问题,而是程序员习惯和素质的问题,如果想换,其实我倒是更愿意尝鲜,比如用go,还可能可以同时满足性能的问题。
还有突然聊到持续集成,我坦言,我对持续集成的理解停留在用工具实现自动测试和发布这样的层面上,没有实操经验。但我个人的一个粗浅的认知是:持续集成的前提是自动化测试,自动化测试的两个难点:1,自动化测试用例的设计;2,程序员对自动化测试的理解和心理反抗程度。我在目前单位有过短暂的尝试:专业的传统测试人员对测试用例进行设计,程序员接收到的需求应该包括正向逻辑的产品需求和测试用例的需求。开发工作完成的标记是:自己写的测试用例在自己的代码上完全通过,代表自己一项开发工作的完成。
说到这里,对方不禁双手伸出拇指!(哈哈哈哈)
或多或少也还有一些别的话题,我自认为那晚像演讲一样很精彩,只不过时间已过午夜,其他的一些细节不太记得了,如果想起或小米参加面试的同学有提起,我再补充了。
整场小米的面试两个部门加起来共计约7个小时,这是我经历过的最长时间的面试了……小米的面试很辛苦,今天码字也很辛苦,现在已经是凌晨1点半了,如果你觉得上面的经过对你有所帮助或是有意思,就捧个钱场或人场吧:
Profiling: From single systems to data centers
X-Trace: A Pervasive Network Tracing Framework
可能感兴趣的话题
php的内容也怎么深刻吗。
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线内容团队正试图以我们微薄的力量,把优秀的原创文章和译文分享给读者,为“快餐”添加一些“营养”元素。
新浪微博:
推荐微信号
(加好友请注明来意)
&#8211; 好的话题、有启发的回复、值得信赖的圈子
&#8211; 分享和发现有价值的内容与观点
&#8211; 为IT单身男女服务的征婚传播平台
&#8211; 优秀的工具资源导航
&#8211; 翻译传播优秀的外文文章
&#8211; 国内外的精选文章
&#8211; UI,网页,交互和用户体验
&#8211; 专注iOS技术分享
&#8211; 专注Android技术分享
&#8211; JavaScript, HTML5, CSS
&#8211; 专注Java技术分享
&#8211; 专注Python技术分享
& 2017 伯乐在线

我要回帖

更多关于 小米手机不知道型号 的文章

 

随机推荐