世上本没有路,走的人多了也便成了路——鲁迅
很庆幸,至此武汉终于有了自己的开发者峰会;很庆幸,我们亲眼看到了武汉互联网技术的牛逼与骄傲。在浩瀚的星空里我们渺小如尘埃,但是当我们汇聚在一起的时候,就是璀璨的星河。简寻想和大家一起,让武汉变得越来越好!以下为「2016武汉开发者峰会」演讲实录,让我们一起感受武汉蓬勃生长的技术力量!
会场时间:2016年3月26日(13:00—18:00)
地点:光谷资本大厦二楼
主题:2016武汉开发者峰会
主持人:何斌
参会嘉宾:
武汉腾讯技术负责人阮曙东
盛天网络数据架构师王欢
极验验证CTO黄胜蓝
木仓科技技术研发总监罗晟
斗鱼TV大数据团队负责人吴瑞诚
海豚浏览器技术总监胡继堂
1号店服务部负责人王怡
悦然心动CTO赵威
卷皮网技术总监柴楹
sendcloud CTO刘超
猫头鹰队长黄锦
航班管家H5技术总监汤泉
何斌 简寻CEO
我先简单的介绍一下,我是2011年到武汉,2012年折腾了第一个项目,2013年参加了Yahoo Hack Day,2013年还参加了武汉举办的一些技术类的活动,还是所谓的冠军,还拿了一个笔记本,一直用着。2015年的时候我们在教堂一起举办举办了Hack,然后到现在,我们就准备在武汉这边做开发者的峰会,能让更多的技术类人聚集在一起,让大家来感受一下,其实武汉整体的环境还是很好的,在外面工作的可以回来,在武汉的工作其实也有更好的一些去处。关于互联网发展,我觉得大家可以去思考一下大家自己职业发展路径。我的演讲就这样了,下面我们就有请腾讯众创空间空间武汉的负责人吴白露,然后由她来介绍一下这次我们联合举办的情况。
吴白露 腾讯众创空间(武汉)负责人
大家好!刚刚何总已经给我暗示,他说不能来打太多广告。我是腾讯众创空间在武汉的负责人吴白露。今天面对下面这么多技术人员,我叫其实我是一个技术小白,我从刚刚深圳回来,过去三年一直做产品经理的“产品狗”。我个人认为对技术的人还是比较了解的,我觉得程序员想的事情可能有几点:第一,哪里可以听到优秀的技术分享。第二,怎么赚钱、更多钱、更多钱?第三,有什么好的岗位可以跳槽。第四,哪里有美女。
我们腾讯众创空间自从去年11月在江夏开园了之后,今年4月份我们也争取到光谷银座的位置,这次首次来提出这个事情,之前都没有说过。我自己跟政府沟通的情况就是大概今年下半年会在光谷大道这边再开新的场地,可能就离在光谷创业的同志们更近了。我们目前也做过一些技术的分享,比如说我们请了微信的工程师来做了一些分享,还有FACEBOOK的技术,还包括前段时间我们做的VR爱好者沙龙,如果大家真的有兴趣参加一些技术性的活动,也可以关注我们腾讯众创空间武汉的公众号。
腾讯众创空间是什么呢?可能很多人不清楚,大家看了VCR里面,有腾讯开放组团的合作伙伴,包括上游互动的CEO,都是我们腾讯开放平台很好的合作伙伴,腾讯众创空间其实是腾讯开放平台在线上的一个资源,它绝对不仅仅是一个孵化器,我们上游承载的是腾讯开放平台的所有的线上资源,包括应用宝、微信、QQ、QQ空间里面所有的开放能力。那么线下我们会跟政府在当地进行一些合作,如果在座有一些成员是创业公司的话,希望你们跟你们的CEO老大说一说,欢迎大家跟我来联系。
说到怎么赚更多的钱,如果是创业团队可以告诉大家,我们这边如何跟腾讯的流量合作,我们有一个叫“双百”计划的东西,去年2015年的时候,我们孵化了大概40家的项目,其中产生了像微影时代这种估值超过10亿的,微信里面进去的电影票的微票儿,这个其实是我们原来在杭州众创间孵化出来的。包括新三板的项目,还有美家帮,也是刚刚上的新三板,悦动圈项目是在我们开放平台的扶持下,我们给它搞12倍的流量,然后整个项目就连着拉动起来了。如果大家有兴趣的话,可以关注腾讯众创空间武汉的公众号。
接下来说什么岗位好跳槽,重点是找简寻啊!刚刚说到双百计划,因为简寻也是我们现在双百计划孵化项目之一,所以以后我们就会帮助他们,以后我们也会帮助更多双百计划。如果实在不知道跳槽去哪,众创空间马上孵化很多很好的项目都是腾讯看中,很可能未来会投资的,这些项目也欢迎大家来。
最后一点就是美女了,哪里有美女,比如说开放平台的高级总监未来也会到武汉来给我们带来一些培训和讲座,5月份的时候也会过来,还有我们的高级产品经理也是很美,其实我并不是一个所谓的负责人,更契合于高级打杂的角色。
阮曙东 腾讯(武汉)技术负责人
阮曙东.jpg武汉的兄弟姐妹们,大家好!我先做一个简单的自我介绍,我是11年回武汉的,我04年华科毕业就进了讯,干到现在还在腾讯,今年已经是第12个年头,在深圳总部待了7年,第1年的时候可能大家在网上看到新闻,说腾讯在武汉设立研发中心,对不起那是我回来了,我们在武汉做的项目也好,我很希望有一个机会和武汉的同行们做一个交流。前两周我在深圳出差,碰到白露说我们要在武汉搞一个分享,问我有没有兴趣讲一讲,我说很好。在武汉这么多年,我也接触了一些中小型创业公司,与他们也有一些技术交流。我自己的感受是很多中小型比10年前创业技术方面要很多,因为现在开源技术非常成熟,基本上所有的东西通过开源技术搭出来。但是我发现很多问题,用开源技术做系统,从0到1是比较简单的,但是如果你想做好是很难的。我04年进腾讯的时候还是比较乱的,线上系统没有测试,所有系统线上改了就发布,没有测试阶段。包括所有的代码组织、客户的投诉都是非常原始,经过很多年的精心打造,已经形成了自己的方向,中间也走了很多弯路,我自己也是深度参与其中,也了解里面的艰辛。包括很多公司在技术这一块还是比较欠缺的,正好08年的时候组织了一系列培训,把后台技术做了一个完整性总结,我也参与到其中,承担公司的一些课程。我想通过这个机会把我自己所理解的与大家分享。
关于选题。第一,刚才也讲了,从0到1,从1到100其实很难的。第二,我想讲在线和离线,我今天讲的所有的打造高效的工作系统,都是在线系统,没有讲离线。我个人觉得离线会更加成熟一些,不像在线系统,运营起来会困难一点。在线系统更偏重于工程类的技术,离线偏大数据也好,偏算法也好。第三,怎么定义高效?首先想到的是性能,我们所有人在做后台开发的时候,都会关心服务器的性能怎么样?实际上在我看来,可能10年前的服务器是2G内存、两核的,现在大多64G、四核、八核的,所以我觉得性能可能反而不是目前最首要关心的问题。相反对于你在系统开发过程中怎么样快速开发、怎么样快速运营,我们所谓的开发系统绝对不是说做完了上线就OK了,你需要去关注这个系统怎么样,流量跌了没有,瓶颈在哪里,你怎么运营和维护?
腾讯内部的业务大家知道有很多,像QQ、微信绝对是具体的应用,也有大中型应用像QQ浏览器,也有偏小的一些应用。这么多应用我们做后台的时候有没有相关的设计的准则和标准呢?回归到08年的时候,当时公司内部大量业务的发展非常快,基本上每天都会出事故,我记得07年到09年,公司发邮件处理事故是最多的,基本上每天都能听得见。我们当时统计过一台服务器基本上在它的生命周期内一年挂一次,按照这个频率,假如你的公司有300台服务器,基本上每天都会挂一台服务器,假如你的所有系统依赖于这些服务器,基本上你每天都在处理事故,每天都会对用户有影响,怎么样去解决这些问题,正是因为这些原因,公司内部也是做了大量的优化。
做技术而言,除了技术之外,开发人员更多的需要具备意识,意识有很多,我提炼了5个重要意识。第一,万有一失。第二,大系统小做。第三,柔性可用。第四,过载保护。第五,先抗住再优化。我就不细讲了,大家去做的时候思考。关于性能,我们刚才讲过技术有很多点,性能是其中最需要考核的一点。做后台服务或者架构也好,性能无非就两点:一是提高CPU的利用率,二是减少系统IO。大家部分做后台开发的所有的压力都在IO上。关于性能提炼的是我自己关注的一些点,包括我自己碰到比较常见的,但实际上不仅仅这些东西。异步化,大家都追求系统整个系统全异步化,但是异步比较难,要做好不容易。协程式开发,在座的人有没有听说过?很少的人。协程开发是这两年比较火的一个技术,比较成熟了,它的好处在于能够做全异步化,而且全异步的代码与你写的同步代码是一模一样的,但是它可以做到全异步,具体怎么做我只告诉大家有这个技术,怎么用大家自己去查。高并发epoll,是在06的时候火起来的,我们早期做大型游戏的时候,都觉得比较困难,一台服务器支撑的在线人数是有限的。无锁化,你做代码的时候尽量不要去锁。最后是减少内核调用。
全网调度能力是可用性的关键衡量标准,微网的服务都是72小时不停的,我相信所有后台开发人员包括运维人员手机应该长期不能关机的,我自己的手机就是这样的。那么怎么保证系统是72小时,我们想靠人去保证是不可能的。然后08年我们做架构优化的时候,把可用性作为很重要的一项。整体来讲分为容错和容灾。容错就是某一台服务器挂了,容灾就是可能某个机房全挂了,容灾对于业务公司和业务人员是需要考虑的,对于容错而言,我见过的做法都类似于DNS,没什么难度。对于容灾,在很多情况下是不依赖DNS,像遇到快速部署和迁移。我们希望整体的系统是能够做全网调度,能够把某一部分用户请求指定到某一部分服务器上,能够很快速完成调度,这种调度是智能化的,不需要人工参与的。在你服务器出问题,在你掉电的时候,所有这些都是潜移默化完成的,不需要人工操作的。
告警,我见过很多公司内部没有什么告警,出问题都是靠用户投诉,这种是比较原始的做法。我们希望像流量这样能够通过图片的形式展现出来,所有的曲线告警都能做到管理。我们刚进腾讯也很痛苦没有监控,最早的做法很简单,公司有一个部门专门是做技术,提供一个SET,你每次调动服务的时候就会调动它的接口,这种模式带来一个很大的问题,每次开发都得去改,每个指标都要去计,这个工作量非常大,模块少没关系,如果你有几百个模块,有几千个接口,工作量就实在太大了,后来这套体系就没人用了。通常SET是一个完整的系统,能够快速迁移、部署以及保证扩容。
灰度,公司内部是从09年开始有这个概念,早期服务器做测试的时候,一般发个版本出来,发到某个服务器上,我们要求所有的后台软件做服务器发布的时候也需要采用灰度,当然要根据业务的发展情况看。如何验证版本的可行性?像终端软件比较容易灰度,可以按模块做灰度,按SET部署做灰度。
染色,创业公司从来见过有人做过。这个对系统要求特别高。什么叫染色呢?当服务器规模比较小的时候,如何快速定位一个用户的请求情况?我们想到的办法是染色,当用户入口的时候,对用户的请求做标识,标识完之后用户经过所有服务器的日志,都能统一汇总到另外一台单独服务器上去。
如何设计分布式框架?讲讲我自己的做法,当然这个做法每个业务都不太一样,其实都大同小异,没有太大差异。最底层要实现一套协议,在协议方面我们要求几点,最重要的是二进制可扩展,二是所有协议要自动生成,所有协议能够通过一个描述文件能生成所有客户端、服务端的链接码。在协定基础上我们提供一套公共库,比如说怎么打印日志,提供给框架以及业务使用。在公共库之上我们提供一套通信框架,完成两个服务之间的信息交互,像同步/异步/单项。在通信框架之上我们提供了一套基于框架的平台,方便管理所有框架运行的服务,包括容错、负载均衡等等。在平台之上我们提供一套运营门户,能做到开发人员不需要上服务器,甚至不需要知道服务器在什么地方,能看到服务器所有的状态,它的流量怎么样、日志怎么样,你不需要去接触服务器。
最后讲数据,我认为数据是业务发展最重要最难重要的一部分,也是最孔苦的一部分,很多业务出问题都是在数据上。一般经过三个阶段,第一个就是性能,第二个就是安全性,第三个就是扩容性。数据是需要所有后台人员重点去解决关注的,重点去看的。
未来是什么?我自己对于工程式开发就是在线开发,是偏悲观的?为什么呢?因为我觉得这条路基本上走到头了,如果把在线式的服务叫工程,我认为像大数据应定义为科学,这一块不仅仅需要你有工程能力,需要你有数学,同时能应用到你的实践中。我认为这块确实是未来,如果有兴趣的同学我们可以多交流一下。
罗晟 木仓科技技术研发总监
罗晟.jpg我先简单自我介绍一下。我大学毕业之后,第一份工作做大客户销售,你会发现一个单位也好、公司也好,推动部门其实是销售部门,其他所有东西如果销售不出去,后面东西做太多也没有用。之后我和我的朋友创业,东跑西跑做了一个不知名的项目,后来黄了,就去了Google。在Google待了1年多之后,去年我来到木仓。
我今天把题目改了,创业这个东西是实实在在解决东西,我不是为了标新立异,我只是在当下的情况解决当下的需求。为什么要改这个题目呢?我回想了一下,如果回到我当年自己也的时候,我会希望碰到什么?当然这些我都非常感兴趣,因为我自己经常去把扒论坛,这种架构性宏观性的数据会非常吸引人,我会看得非常嗨,但是我回到自己当时做东西的时候,有多少东西我能直接用得上。我把今天的主题改成了务实的技术。事实上作为创业公司,我们就是需要最快的速度、最经济的手段高效简单的把问题解决。
请问现场有多少人听过木仓科技的?听说过驾考宝典吗?驾考宝典是我们公司的开发产品,你们现在都用驾校一点通是吗?如果说驾校一点通是PC时代驾考的王牌,那么我们驾考宝典就是移动时代的。这是我们公司的一些主要产品,有驾考宝典、违章查询等等,我们是一个非常聚焦垂直领域的公司。我想问大家一个问题,提到创业你想到什么事情?我觉得程序员当初我的想法是可以随心所欲,各种各样牛逼语言想到什么用什么。也许会想到用Java,当时提到创业你是不是想到了我就马上人生巅峰了。第一天,牛逼的点子诞生。第1周,产品上线。第1个月,天使轮来了……然后敲钟上市,后面的画面想想都非常美,想着迎娶白富美,其实迎娶白美就够了,因为你已经很富了。但事实上,一般期望很高,此处都有转折。你会发现,第一天已经是示范的42个点子,好象不是特别酷。第1周由于你积累了前面41个项目代码,上线很快。第1个月敲定了有点小激动,然后有了1000个、10000个用户,有点小激动,要不要庆祝一下,但是囊中羞涩,钱都用来买服务器、带宽,我可能只能买一份热干面钱。经常晚上2点,你的另外一个合伙人,他是前兼美术兼产品,然后打电话给你说,赶紧看看怎么回事?咱们夜猫子用户也是用户,然后你就蹭爬起来。你会发现就这么熬了很多年,并没有说好的ABCD…出现在你面前。其实媒体宣传的时候说,包括国家鼓励创业其实因为就业有压力。其实很多时候事实恰好相反,但是为什么还有那么多人前仆後继,谁是曾经有过或者现在想创业的,未来在你们手上面。
创业到底是什么?大家都知道库里,他的特点是七八米远扔3分,知乎上就有问,库里这样打篮球是不是失去了篮球的意义。我觉得张嘉伟先生回答非常好,从1981史密斯先生发明篮球的时候,就是让学生玩,就是投进筐,这就是篮球的本质。所以创业的本质是什么?我个人感觉是发现需求,直观的解决需求,在于创造需求、价值,如果这件事情要可持续,那么就要赚钱,要收入大于支出,要开源节流。下有些朋友会问,大众点评抗了七八年,有一次参加会议听到有人说,大众点评因为团购这件事赚钱了,他们看到了我的希望。京东到今天赚不赚也是个谜。但是我们大部分创业公司,如果你想下去,你不是只想活一把,是真正想做一点事情,就是要可持续,就是要赚钱,就是要开源节流。
创业的另外一个特征,资源紧缺,缺钱、缺人、缺时间。很多问题是不用考虑的,你不用考虑缺钱的问题,也不用考虑缺人的问题,缺人的问题也会缺,但是相比小公司情况会好很多。怎么解决这三个问题,我认为就是我今天的题目简单有效。缺钱,阿里云的流量,我当年自己做的项目,我有兄弟一天骂阿里云三遍,但是到了今天,阿里云就像现在亚马逊置于美国创业者的地位,给我们创业降低了很多门槛,我不用自己去买服务器,不用去找机房。阿里云流量问题是什么问题呢?您觉得作为一个技术人不写代码也体现出你的水平?你能不能写出没有bug的代码?第一个问题的答案也许不明确,但是第二个问题的答案我相信大家都会说NO,谁有没有信心说我写的代码是没有bug。我们有一个通识,代码越多bug越多,代码越少bug越少,其实从这个角度来说,其实不写代码并能解决问题,我个人认为是很能体现出水平的,要么这个人非常聪明,第一次遇到这种问题有能有序解决掉,要么这个人经验非常丰富,不管是哪一种都是很有水平的人。当一个问题出现的时间你就应该去找出问题出现在什么地方?如果我向上不行就可以水平拓展。
用户画像计算,大家都用过,我们就是想通过事实来描述我们用户,通过用户画像我们想回答几个问题。第一,这个用户是不是我们需要的用户。第二,这个用户喜欢什么。第三,这个用户接下来可能会需要什么。对于第一个问题,比如说你去搜不存在的网站,它只会在一定条件触发之后才让你输入,像木仓在某些业务情况下只要判定你是一个机器人,我们可能悄无声息就把你干掉了。对于第二个问题,当你搜索一个键盘,然后你回到首页一刷新可能都是键盘。对于第三个问题,木仓的驾考宝典为例,当你学完科目一了,我是不是就可以推荐相关科目二、科目三的东西给你,科目四之后你可能成为一个潜在车主,我们就可以推荐一些买车的东西给你。用户发现这个东西非常有用,我们要实现这个东西,第一个要解决计算的问题,第二个要解决怎么使用的问题,第三要解决存储的问题。
木仓是怎么解决计算问题的呢?我们没有太多的资金投入但是我们还想做好,其实我们也是做分布式计算的,我们把一些计算任务直接分布到客户端,只用计算自己的用户特征,落实到技术层面,我们要做的就是一套规则,客户端的计算框架,每个使用者只要在你编写程序的时候,到我们中央注册你的特征,然后规定自己的事件以及消化事件的时间助理器,你自己把规则写好,然后发到服务器,服务器就会保存你的结果。这是一个妥协的结果,但至少在我们目前的状态下是可以用的。
再讲缺人的问题,我们经常会听到我有一个idea,我只是缺一个工程师,其实每个公司都在缺人,每天都在招人,其实今天我们到这个会场的目的也是为了招人,也是为自己的公司做一个宣传。如果缺人这个问题不能解决,其实应该是技术最擅长的部分,为什么呢?能够用机器做的就不能用人做,因为有监控系统,我们在工作中经常会发现一个问题,我写了一个东西,发到我的邮箱,经常会发现你的邮箱有大堆的报表你都不看,就沉在那里了,计算机的问题不像现实的问题,现实的问题如果说你造一个房子,有一个窗户要掉了,很明显就能一眼看出来,但是做过服务器的人都知道,一个服务器也许出了问题很久之后,不是用户反馈出来,你根本不知道。我们需要把所有这些东西让它浮出水面。
在公司我就推行做一个通用监控器,其实还是那句话,简单高效。我说出原理大家会觉得很简单,而且谷歌里面其实也做了。它没有任何的秘密,主要解决了通用的显示前端的问题,它会根据你用户的规则每隔1分钟、每隔10秒、每隔1小时、每隔1天去一个固定的地方取一个数据来,形成观测点的历史数据,然后前端显示一下就完了。这个东西非常有用,各位如果是开发者创业的话,拿回去就可以用的,因为没有任何难处。如果我们公司已经超过了1年1亿,我们最大的收入其实来自于广告,广告是否可用对于我们来说是生命线,广告那边对这个东西就有很大的需求,他们希望我们建一个全球广告可用接头,提供数据收集点,然后提供全球的探针,这个系统还可以设置它的报警预警,比如说我连续三次从青岛某个接点的服务,如果是200ms以上或者500ms,我就可以通过打电话、短信的形式通知定位群,他去解决这个问题。
最后缺时间,定位每个App都会用,大家一般都会用百度定位,但是我问过百度的同学,他们说大概也只有99%的时候能返回我们需要的结果,还有1%怎么办?每天可能还有数万是不能送定位,这个不能送定位给用户的服务企业就会有差别。这是提到技术方面的问题,我们还有一个页面,在驾考宝典最后一个页面叫百宝箱,是有一个类支付宝首页的图片模块,这个问题是与业务相关的。创业企业求生存,我们需要快速定位到哪个业务是给我们赚钱的,我们需要一个高度的并知化的远程和配制的部分。而且这个模块可能要求可以调齐原生的其他的APP的界面,大家会怎么解决这个问题?其实我们相当于协议的方式。
讲了这么多,我是想用5个很小的例子来体现我们在日常生活中、工作中怎么用很简单的东西来解决一些问题,就是简单有效、容易维护,有一定的拓展性就OK了。因为你没有那么大的能力去设计一套完美的东西,由于我们非常努力解决了各种各样的问题,从现在这个角度来看,我们木仓的架构还是有很多提升,我们有业务系统、通用模块系统、基础架构、离线计算系统等等。我们想体会一个很小的创业公司是怎么通过这些东西把事情做到一定的规模,是怎么通过极其有限的资源来解决五花八门的事情,来做成一件事情。谢谢大家!
王欢 盛天网络大数据架构师
王欢.jpg大家好!我来自盛天网络数据分析部,我叫王欢。非常高兴可以和这么多技术大咖做一个交流和分享,但我不是技术大咖。我只是一个踏踏实实做技术的女汉子吧!我今天废话不多说,我讲的实际上是我们盛天网络大数据的发展。大家可以把发展当做一个故事来听,提到讲故事,一般会说到过去、现在和未来。我今天讲的主题也分为这三个部分,一个是原来的我们、一个是现在的我们、还有一个是未来的我们。我分别用了三个词来比喻和描绘,分别是洪荒年代、三国鼎立、诗和远方。
洪荒年代是说我们原来比较原始的一个日志和数据的处理方式,三国鼎立是目前大数据比较热门的三个系统,现在是三驾马车并驾齐驱在我们系统里面应用。诗和远方是代表我们对大数据发展及我们公司数据系统建设的一个美好愿望,相信我们这边会把技术和系统做的更好、更快速和稳定。
第一篇是原来的我们,我们称之为一个数据统计系统。是比较简单的原始方式,用户访问我们的服务,通过LVS把数据请求放到WEB服务器上,WEB服务器的实现是C模块+PHP+mysql的模式,最后通过电视脚本把数据导入到数据仓库里面做一些数据分析。我相信大家看这张图存在一些问题,我们mysql会存在一些负载的问题,包括数量大了之后就会比较慢,所以导入导出会存在一个较高延时。我们开发的C模块并发不高,另外里面会有较多维护,也很难扩展,这是最原始的方式。渐渐的这个系统就无法满足需求,这大概是2012到2013年的模式。
盛天网络是一个发展比较快速的公司,我们从2011年到2014年不停的会有一些产品去上线,上线之后这些产品就需要做一些数据分析,包括这段时间大数据的热门,一些业务部门的产品经理,包括运营人员会对数据有一个很高的依赖和需求,因为我们是基于网吧做一些技术,有一些统计可能在网吧的服务器端进行计算会有一个受不了的情况,也会抱怨。包括数据阻塞就被丢弃,包括有些粒度可能粗了,甚至有些运营人员会提出你的数据可以实时吗?就是报表和数据联动这一块。基于以上的情况我们大概在2013年底到2015年的时间,我们建设了三套大数据的平台,2013年我们建设了Hadoop,2014年我们上线了Storm,2015年是Spark,还有周边的一些产品。
下面我会具体介绍如何运用开源产品包括加上自己的二次开发资源去完成公司的数据分析、预测以及实时计算。总的来说,从数据存储、协作服务、数据挖掘、服务器监控,我们用的大数据生态管理平台的产品很多,但是我们是怎么把它用到实际上去的呢?在我们系统到底是什么样的框架和模式呢?第一步是用户接入,包括一些服务端的数据和采集的日志数据,统一接入到Network Message Queue,通过这个消息我们达到后端的离线批处理和实时计算,黄色的部分是属于数据流的部分,左边表示数据落地,右边是实时流计算,通过这两套系统我们开发了管理平台,便于用户接入以及工作更高效,包括监控管理。框架的最下面,我们去年下半年用Spark steaming,图的右边是一些存储的数据库,可以看到箭头是一个红色的双向箭头,我们从这个数据库可以拉一些数据过来辅助计算,也可以通过计算把数据输入到存储系统去用。
我们如何去实现离线和实时计算。我们数据搜集统一入口的地方用的DNS接收http和https的请求,然后放到消息队列里面,这个产品是包括两个进程,我们建这个产品主要是跟我们业务结合非常紧密,我们可以做到分产品线去管理、分Data Business管理,自定义过滤和校验、后端故障容错、落地即入库、数据文件按照时间切片、中间数据时效性管理、后台小文件合并/压缩。
实时流计算的一个系统架构,我们采用的也是开源的Flume,数据到了Kafka,是一个消息中间介,相当于一个pull五的方式,我们把数据拉出来之后可以供很多的下流去处理,不仅仅是Storm的集群。我们单独搭建了一个Zookeeper的集群,去做一些配置、状态、心跳的管理,去管理接点是否在线等等。
刚才讲的这两套系统实际上是基于比较通用的数据平台,我们大家做数据时间长了之后,可能我们自己就会有一个比较清晰的数据流向的认识。从左边看,数据导入—数据接入子系统—ETL子系统—实时子系统、批量子系统、存储子系统—查询系统—用户展现,这是一条流,在这条数据流上有一些调度,看横向部分,是数据管理的心脏和大脑,是不可缺少的,监控各个子系统是不是正常运行的,去做一些计算的业务接口的一些调度,还有人数子系统,和我们平常说到的数据源可能不一样,一个数字最原始的数据做到我们系统到底是一个怎么样的运算变换,实际上需要一个人去进行管理,知道这个表来自于哪个业务,后面流向哪里?我们系统数据也是来源于这样一个模式和思路。
纵向数据流就是5个步骤:数据采集—数据传输(实时/批量)—数据建模/存储—数据统计/分析/挖掘—数据可视化/反馈,我们在这5个步骤上去做一些文章,数据平台架构可能更多的核心在2、3、4个步骤,怎么去发挥我们主观联动性,创造一个更好的系统。
我们开放了一站式管理平台,包括离线统计一套和流式计算一套。管理平台帮助我们更快速更有效去接入大数据的流失工作。在数据接入的时候我们一个公司可能有很多的产品线,我们会有N多个表,源数据跟表之间在数据接入管理平台上面直接去进行一个目录就接入进来了,我们对每一个数据需求实际上进行了一个模块化的管理,进行数据录入和配置,导出数据。模块依赖+后置操作的关联管理。临时查询进行下载和绘图。邮件报表方便老板查看。生成仓库的元数据管理。流式计算部分,需求录入包括topology声称,秘匙生成。资源管理包括:work分配,topic注册,代码版本管理包括接入SVN,一建上线。程序变更包括更新、删除、启停。
除了管理平台之外,我们做数据流还有一个比较关心的问题,我们的数据在哪个层面会出现一些问题,像实时流量监控,流量分层统计与预警,我们采取的方案是通过Metric信息,存到我们自己去用的Rrdtool格式,通过Echart数据分析,拿到SparkMlib里面去分析,不同的层级会发出不同的预警。我们如何用开源的产品去实现离线计算和实时计算,没有具体介绍代码和遇到的问题。
未来的我们,我讲的不是很远,因为技术的发展特别是大数据的发展非常快速,所以我讲的未来仅仅是我们2016年的计划,我们可能会在四个方面突破,一是可视化建设(kylin+zeppelin+二次开发,二是数据整合应用(元数据管理:血源分析、信息地图),三是智能算法台(算法库、自动调优),四是更多关注数据的价值(挖掘类投入和产品研发)。基于这些计划,我们今年会去建设一个体系结构,我们会在平台管理层、存储层、数据层、算法层、应用层去做一些工作,黑色的部分是我们自己已经有的系统,红色的专题分析、交互式分析、BI门户以及实时效果评估是我们会去做的工作。
圆桌讨论一——《程序员的技能增长途径和方式》
圆桌一.jpg胡继堂:我是海豚浏览器的胡继堂,我是2007年参加工作的,之前在微软公司,现在是在海图浏览器负责技术方面。
柴楹:大家好!我们是来自卷皮的柴楹,我现在是负责大数据的实时、离线以及大数据分析。我们公司在7月到8月有一个技术分场,大家可以关注一下。
王怡:大家好!我是来自一号店的王怡。
何斌:大家可以给我们分享一下各自的技能增长和方式?
胡继堂:我大学是在武大,06年的时候一次很偶然的机会,我投了微软的实习生,也是一个偶然的机会,通过了面试达到了微软工程院实习的机会,一直到07年的时间我们一直在实习。如果把我的技术成长经历分为三段:第一段实习生涯是我的起点,这个经历其实对我讲意义最重大的,它把我从武汉一个视野比较狭窄的学生,直接拉到了北京业界最顶端的团队,这段时间微软给了我这个平台和视野。相对于北上广的学生来说,我是有差异的,能够感受自己与他们之间的差距,因为我在北京也没有朋友,一周7天一天12个小时都在工作,我付出了很多的时间,主要是为了弥补自己跟其他从北京实习生的差距。当然这段时间学习对我非常有价值,当我应聘正式的工作时候,会发现我这段时间的提升已经足以让我去面对比较苛刻环境。
第二个阶段是进入小米,小米是2010年4月份成立的,培养了我非常好的习惯,解决一个问题的时候不光是帮他去解决,同时也可能有机会去探讨。第三个阶段是进入海豚浏览器,当时只有两三人,基本上也是才开始,各种开发方式以及流程都很落后,因为我对技术很感兴趣,同时也接触过一些教育先进的例子,所以我发挥了比较大的作用,引进了一些工具方法流程去改造技术开发,然后一直到现在。
柴楹:我也是2007年毕业,毕业后在北京,我是做java开发的。我成长感悟的第一个点,作为一个程序员不要怕吃苦,你要敢于多承担项目。比如说我最开始做的一个项目,是给一个保险公司做资金系统,人不多,从头到尾所有的设计、编码、运维等等全部都是自己搞定,这个项目也比较好笑,我基本上早上9点上班,晚上10点下班,没有星期六、天,一直加班了半年,然后我就问我们的项目经理,我觉得我有点不适合干IT这行,太苦了,有点抗不住,但是确实经过了这一段,我发现无论我的代码积攒,还是我架构的一些思维,整个能力提升是非常快的。第二个点,我是2011年从北京回武汉,但是进了1号店,是看着1号店成长的,这个时候有一个技术转型,不要怕技术转型,看到自己喜欢的东西就要去做,马云也说了,数据未来就是一块宝藏,我就是想做数据,所以做数据转型,前面学的东西可能都没有用了,重新开始学习、分析、挖掘一系列的东西。第三个点,有点忘了。
王怡:我回想一下我很普通,因为很多嘉宾说自己毕业于华科、武大,毕业之后去了谷歌、百度或者小米这样的公司,而我毕业于武汉的一个普通高校,毕业之后去了北京一个普通的IT公司,其实当时互联网还不是主流,还是比较传统做一些项目开发。当时我观察到了一种现象,每次到了年会开会的时候,技术员工领奖,老板说的表扬的话往往是很努力、加班很多、生了小孩都不回家去看、自己生病都不去医院,全是各种很苦逼的一些案例,我们的男生女生技术员工都这样卖自己的肉体或精神去获得公司的奖励吗?我觉得这是对我们技术人员的一种侮辱,但是我在想在我的公司里面或者是我能接触的人里面,我感觉最努力的不是技术员、不是程序员,是项目经理。项目经理既要谈需求,又要负责框架搭建,还要写代码,还要招人,还要别人写代码,做项目经理是非常累非常辛苦的事,但真正你把项目做好了其实很有价值。这是我当时在北京做一个第一次的改变,后来我是11年回到武汉这般,当时从一个传统公司到了1号店的互联网公司,当时去1号店我完成了第二次转变,如果你还是做技术人才,你怎么去从以前的程序员、项目经理这种关注于交互变为关注于价值,你做了这些产品和功能,你到底有什么价值?用户真的是满意吗?他为什么不满意?你不是为了交互而工作,你是为了价值而工作。这是我在1号店的第二个转变。
柴楹:我补充一下,第三点是要善于总结,你去面试一些人,有些人简历很高校,写的3年工作经验,其实才毕业2年,他说我加了1年班,有些人甚至工作5年,他是拿2年的经验多干了3年,他没有一个总结,你在做一些工作的时候,你踩过那么多坑,你如果总是疲于奔命在工作,满足各种需求,没有一个思考我为什么要这么做,我最近学到什么,上升一个层次是什么样子,只要这样你才能从一个程序员往首席架构师上去转变。
何斌:无论是经历第一个技术的坎,或者是担起项目经理的职责,有一个很重要的感觉是敢于承担,总结,我总结一点,跟着一个公司发展,跟着公司的早期进入,跟着公司很小的团队成长,公司的成长速度可能会给你更大的压力促使你快速学习,这个就看自己的机遇和眼光。在场的很多在一些创业公司或者是偏传统型的公司工作,因为武汉本地的互联网公司数量比较少,加起来几百人,大部分都偏于常规的公司,进入这种小公司没有人带,像海豚、1号店、卷皮有一套很完整的培训体系,但是一些创业公司就没有这样的体系该如何去学习呢?
柴楹:我就举我自己做的大数据圈子,很多东西都是开源的,你可以在网上自己去看一些资料,甚至参与一些讨论,现在中国整个技术分享的活动其实很多,可以去关注这些东西,你如果有一些机会有人引荐你甚至可以去加入到一些开源项目里去。
胡继堂:一个是积累,另外一个是方法。最终的目的是构建知识体系也好,技能体系也好。你做任何一件事情想达到一个高度,你必须要去完成,你必须发动时间在这个领域上有沉淀,可能这个过程很慢,但是只要跨过这个起点,后面就能迎难而上了,这是必须要经历的。方法是让你构建知识体系更加快速有效,在一个好的公司,会要求你工作方法,你在这个里面会受到好的熏陶,积累更多。知识体系,大家在学第一门编程语言花了多长时间,也许不是最难的但是花的时间一定是最长的,同样你在学习第二门、第三门的时候就很容易了,哪怕是很难的。因为在学第一门的时候已经把你的知识体系构建起来了,后面你学习一门新的东西的时候,是在完善你的知识体系,就会比较快。我最近在招聘你会发现,很多人只有一两年的工作经历的应聘者,偶尔会碰到号称四五年以上的求职人员,你会发现其实也差不多,所以积累、方法很重要。
王怡:刚才主持人问怎么更快短时间提升技能增长,我感觉自己主动性强的话抓住两点:一是外部环境一定要好,你要找的公司一定重视技术,不要把技术人员当做一种负担,一定是很重视你的。二是对自己的要求,虽然武汉创业型公司很多,创业的精神和心态是非常难能可贵的,比如说一个团队,6到12人的一个小团队,最小不超过6人,最多不超过12人,如果你想提高自己的能力,你一定要在团队中对自己有要求。
何斌:无论是学生或者是社招的人员,除了基础的技术能力之后还会看哪些方面的能力呢?
柴楹:第一是兴趣,第二是学习能力。我去年招的实习生实际上不是计算机专业的,但是他想做大数据,但是又没做过,然后我给了他一堆资料,自己回去把寝室几台电脑搞一个集群自己玩一下,到底什么情况再来跟我面试,看你能跟我聊多少,他搞了一个礼拜,后来面试的时候已经超过了我觉得他能学习到的期望,我看到了他的学习能力,而且他这么执着,他是有兴趣的,那我觉得这个人就是我想要的。
胡继堂:我也赞同兴趣,另外还有一点是实际动手能力和实践经验。我建议大家可以参加一些比较实际开发的项目,或者可以自己参与一些开源项目。
王怡:我是从2011年在这边开始面试的,应该面试有1000人左右了,因为我们有两个渠道,我往往会去看他有没有很清晰表达出自己实际解决问题的呢?有的IT同志会说自己做了很多事情,也做了很多开发工作,但是并没有做一个有效的梳理了总结,说不出自己在项目中做的具体事情,面试的时候你说你自己会什么,自己做过什么,你只用说我曾经在什么项目里面,曾经在什么需求中具体的困难是什么,做什么具体的事情,结果是什么,结果的好坏,在这件事情有没有真正付出自己的思考和努力。
(抽奖环节)
黄胜蓝 极验验证CTO
黄胜蓝.jpg大家好!我今天讲的是高并发验证服务背后的技术实现,主要是讲上线服务。我们给redis进行一个注册,写入时客户端通过一致性hash,写入当前机器与hash环上的下一台机器,实现数据冗余。读取时从当前机器读取,失败则从hash环上下一台机器读取。所有机器不区分主从,扩容、故障恢复速度等快,运维成本更低。
嵌入式缓存,先提一些问题:大并发下数据库往往成为瓶颈。大量的数据库连接以及大量挂起等待的协程也将成为性能杀手。解决方案是什么呢?通过缓存尽可能减少数据库查询,所有查询完全遵循缓存中的数据,缓存定期与数据库同步,缓存直接嵌入服务进程内,实现几乎零开销查询,由于Python的GIL存在,我们利用mmap实现进程间共享内存。
提升计算性能。涉及到语言性能,利用Cython将计算密集代牧编译程扩展模块供Python调用,控制神经网络规模,同时优化计算效率。大家可以看About Cython,第一行其实非常有意思,直接去编译成一个静态模块,甚至可以去做代码原封不动,动态语言为什么会比静态语言速度慢那么多,实际上大量的计算环节不是在解释代码,问题在于动态语言在计算过程中要去大量类型的判断,甚至去把效果拖慢10倍以上,Cython可以把一些类型做一个静态话的标准,动态语言最慢的一点是做静态的表达。
优化神经网络的计算速度。1、不断调整参数,加大训练迭代次数,保证足够精度下网络规模最小。2、预测时加入DropOut为,部分神经元不参与计算,减少计算量的同时一定程度避免过拟合。3、利用小网络学习大网络所提取到的特征。4、利用现代Cpu的SIMD指令集加速计算——使用优化过的Blas库例如OpenBLas。
吴瑞诚 斗鱼TV大数据团队负责人
很高兴能有这个机会跟大家分享。我觉得跟前面几位相比下,我们是从一个小公司,从14年的时候进斗鱼,今年年初有200人。我是2011届从华科通信系统硕士毕业,毕业之后做了淘宝大数据开发,然后又去了一号店架构师,现在就是斗鱼大数据负责人。我主要讲实时计算方面的,比较适合小公司和学生,回去之后就可以进入框架。
大家现场有多少人听说过斗鱼,斗鱼目前全平台DAU1500万、PV1.5亿、MAU2亿万、PCU400万;每天活跃驻波近20000人,每天产生原创视频数万小时;斗鱼的ALEXA排名;全球前300名、全国前30名。实时计算主要包括三个内容:实时日志检索—NGINH/PHP日志;实时CEP系统;实时流计算。我会把我们公司用户的行为流给大家做一个分享。
这是我们公司的大架构图,这中间的每一块到最开始的原型都经历了很多阶段,也都是血的教训,今天会把第一手经验分享给大家。最下面是我们的数据源,有Tracker、Heartbeat等等,往上一层就是数据统一接入:Kafka,是我们今年要实现的目标,现在的数据量越来越大,数据流也越来越多,我们会统一接入到Kafka里面,进入到数据ETL与计算。开始的时候没有很明显数据仓库的规划,主要是基于HDFS做的存储计算。我们团队中心在实时计算会放在Spark方面。进入到整个数据服务层,非常有必要跟大家强调一下平台的监控。
实时日志检索,从前是grep+awk,然后是rsync+Hive UDF ,现在是ELK。Flum包括选型、Channel、Flume监控。实时CEP系统,从前是Redis,然后是HBase,现在是TSDB。关于HBase,它确实比较灵活,它有自己的一个拓展,而且背后有很多大的万家,比如说Facebook,像阿里可能会稍微边远一点,如果一直用开源就体现不出自己的价格。Rowkey设计是关键,不适宜多维度索引、需要事务、稳定性要求极高。还有关于OpenTSDB ,有一个周期IO波动问题。为什么需要实时流计算,以前是靠猜,然后Redis,现在Storm+Spark Streaming。分析用户行为的目的,怎么打点,每个公司做法都不一样,我这边是借鉴淘宝的做法。
圆桌讨论二——程序员在武汉的职业发展之路
何斌:大家谈一下程序员在武汉的职业发展之路
黄锦:我其实在北京待了7年,最早是在微软,然后海豚,13年回到武汉,我是为了理想。我主要还是业务上的原因,海豚的总部是在武汉,更多业务重心是在武汉,我作为海豚北京的第一个员工。加上我是武汉,所以回到武汉有2年多的时间。
赵威:我是12年回到武汉的,我之所以回武汉,大学7年都在武汉,其实我之前是在北京的百度,我认识的朋友大多都在朋友,如果我想创业什么的就只有回武汉。
刘超:我回武汉是被丈母娘逼的,之前是在杭州阿里,后来有一些机缘巧合就进了SendCloud。
汤泉:我11年回的武汉,入职海豚航班管家H5。我本身是武汉人,另外一个更重要的原因是,当时我在北京遇到一点困难,主要是我个人的一些想法和问题,跟工作没有关系。
黄锦:我觉得取决于自己的情况,出去还好还是留下来好,大环境下武汉比一线城市差很多,你所处的团队怎么样,你能不能学到东西,能不能有所成长,我觉得是最重要的,所以还是看自己的情况。如何去挑选一个好的团队,大家也看到武汉这边可能还是以创业性团队为主,怎么去挑选呢?我认为第一点,看老板,老板的风格决定了创业团队的风格,你作为老板你要有意愿去分享。一个成功的老板必须要有一定的气量,容忍员工去犯错。老板要以身作则,很多事情上要去带头。对技术人员来说,你可以看看团队有没有工程师文化。所以总结三点就是:看老板、看团队、看工程师文化。
赵威:因为我们主要是做海外市场,在哪里对客户来说无所谓。
刘超:我觉得还是看个人,你一天只有24小时,你愿意把时间放在哪里?公交车上、地铁上?一线城市给你更多的是资源,对于做技术来说,资源永远不缺乏,而我们要去用我们的能力、教育从他们手上去抢夺资源。所以更多是考虑自己去选择。
汤泉:我比较赞同刘超的说法。无论是决定留在武汉还是来武汉还是回武汉的,我相信一定有一个原因,如果没有这个东西,单纯去从整体局面看,虽然每个人看东西的点不一样,但是薪水方面还是影响力的因素,毕竟北京和武汉的差距还是很大的,如果你没有一个很强的原因去平衡,或多或少都有一些不平衡的地方。我们之前有比较大公司和小公司,在武汉机会没有北京那么多,但是在武汉更多的是创业的氛围和锻炼的机会。在这边的公司有团队,如果你从外面突然回来,你的预期会有很大的影响。所以还是每个人还是要看自己最重要的点。
提问1:猫头鹰的产品是什么?
黄锦:大家可以理解是收藏品的一个社区,因为启动时间不长,所以大家不知道,主体上还是在探索,更多希望去看一下传统行业和互联网之间的联系。
提问2:海豚浏览器一直做海外产品推广,现在做的怎么样?国内的市场会怎么样?
胡继堂:我们主要精力还是放在海外。
提问3:我是从事传统的面对交付型的行业,进入到互联网圈子里,会面对的最大的挑战是什么?
吴瑞诚:我们在筛简历的时候,做传统软件确实有一些差别,具体有多少差距来细,主要还是应用环境的原因,我觉得还是可以看一下简寻,他们公司有很多招聘的要求,我觉得还是很明显的,还有盛天也是从传统转过来的,可以借鉴一下,所以我觉得看市场需求。
提问4:我因为刚到武汉这边来,想问一下这个平台是简寻提供的吗?我是阿里云的,非常高兴参加这个会议。
何斌:其实是我跟几位学长聊天的时候想法的,也一直是我们想做的事情。
网友评论