马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
有这么一个企业,阿里巴巴、腾讯、百度、联想、小米、搜狗等互联网企业都跟它过过招,但还是离不开它,网购不上当,看片不中毒,搜索不中招,说的就是360;360搜索,安全小卫士也好、还是360云盘也罢,这些业务催生了海量的视频文件、图片、文本文件等,那么究竟该如何为大数据的安全隐患来保驾护航呢?支撑360业务的背后到底有哪些技术呢?本期名人堂,皮皮邀请到的访谈嘉宾是360WEB平台部基础架构团队负责人、360服务端&WEB服务端方向技术委员会委员王超,且看他为我们带来的独家分享。 360WEB平台部基础架构团队负责人王超 皮皮(Q1):您好!很高兴采访到您,能否简单介绍下自己? 王超(A1):我叫王超,是360 WEB平台基础架构团队的负责人。我于2011年加入公司,带领团队至今已研发了十多种基础服务,其中很多基础服务已经成为了公司标配。在此期间,我对开源结下了非常深厚的感情,通过不断阅读开源软件,在技术的学习道路上沉淀积累,才走到今天的,所以在加入360以后,我持续推动内部项目的开源,当前已经发布了几款成熟的项目,还有一些在准备中,非常希望大家能一起参与进来 https://github.com/Qihoo360。另外,本人对分布式领域和系统调优有强烈的热情,喜欢运动、健身和旅游,我的微博是@Chancey,欢迎跟我交流:) 皮皮(Q2):您在360工作的四年时间里,带领团队打造了MySQL中间件等多种基础系统,能不能介绍下您的初衷?是否借助一些开源组件来做优化?还是推倒重来,完全采用新的思路? 王超(A2):我于2011年刚加入360的时候,我所在的大部门Cover了公司几乎所有业务线的服务端开发。记得当时,各种产品层出不穷、百花齐放,业务量增长迅猛,由于企业还很年轻,很多服务端的基础服务都是缺失的,比如操作MySQL数据库,每个业务都要考虑高可用、横向扩展、负载均衡的问题,如果有一个通用组件来做这些,就能大量减少冗余工作,提高产品线的开发效率、节省成本。 在我看来,我们必须采用开源组件,通常情况下,我们首先会根据需求对多款开源软件进行调研,选出最合适的开源软件,然后测试、专研代码,测试一轮完成后开始小范围试用,之后再根据遇到的问题进行改进和优化。值得一提的是,360对开发效率要求极高,任何一款产品都不允许超过一个月的开发周期,基础服务要保证服务的高可用性与稳定性,实属不易,一旦出现一点问题,好多条业务线可能会受到影响,为了避免这种情况的发生,我们就必须尽可能利用现有资源,对功能进行拆分、迭代,有时候为了配合业务需求,我们会上线局部性的新功能,后续版本会持续优化完善。 皮皮(Q3):360搜索也好,云盘也罢,催生了海量的视频文件、图片、文本文件等,存储这些数据的幕后数据库是什么? 王超(A3):总体来看,360的业务有些用到了开源的数据库,像MySQL、Cassandra、HBase、Redis,还有一些自己开发的,比如 Bada、一级引擎、二级引擎等,以应对不同的场景。在2015年中国数据库技术大会上,我将发表主题为“Bada-构建主从/去中心混合架构的NoSQL”的演讲,在分布式NoSQL遍地开花的今天,我们为何要自主研发?如何选择从开源软件过渡到自主研发的时机?在设计时,我们参考中心化和去中心架构的特点,根据自身业务场景进行了融合,从延迟、一致性、集群伸缩方面做了权衡;面对新的混合架构,我们遇到了一些前所未有的挑战,又是如何一一解决和优化的?历经三个月的研发,一年多的线上改进,成功解决了当时面对的问题且得到了广泛认可,届时也将同大家一起分享架构的优劣和可借鉴性方面的内容, 欢迎大家关注。 皮皮(Q4):很多网友可能都用过云盘,而一提到360,大家会想到一个词,那就是“安全”,尤其对360云盘而言,当我们选择将照片上传到云端,珍藏一生的回忆时,宕机与数据泄密似乎成为了死穴,那么360云盘是如何做到安全,确保万无一失的呢? 王超(A4):这个问题我请360云盘的技术负责人陈超来解答: 1. 在服务端和客户端的双向传输过程中,360云盘采用了云存储专有的数据协议进行加密,同时配合(即SSL)通讯协议,可进一步确保传输过程的安全,防窃听,切实提高用户数据在传输过程中的安全性。 2. 360云盘增设了“文件保险箱”的功能,存放在360云盘文件保险箱中的文件,经过特殊加密,避免文件在终端上被偷窥 3. 360云盘集成360强大的云查杀能力,用户上传到云上面的文件分享过程是经过病毒检测和杀毒处理,不会因为有病毒感染其他人的电脑。 4. 用户文件在云端的服务器上并不是完整的文件,而是被切割成就连系统管理员都无法识别加密的文件碎块。 举例来说,用户的文件好比一张A4的白纸,在云端服务器上,像是被撕成成千上百块碎纸片,并且是加密的碎纸片,系统管理人员或者黑客即便拿到部分或者全部碎片,要把这成千上百的碎块组装起成你原来那张完整的白纸,没有你手中的密钥几乎是不可能的。 5. 用户的一个文件会被保存到至少3台服务器上面,并且会在不同机房,即便某个机房因自然不可抗拒因素造成破坏,也不用担心文件会丢失。 皮皮(Q5):在2015中国数据库技术大会上,您的演讲主题是《Bada-构建主从/去中心混合架构的NoSQL》,我了解到,Bada 是360开发的一套Nosql系统, 具备多机房架构, 低延迟, 结构化等特点,那么它究竟应用于360的哪些业务呢?与其它主流的NoSQL相比,它有哪些优势呢? 王超(A5):Bada 为很多业务提供了服务,比如你刚才提到的云盘、搜索也在使用之列,多机房架构是为了应对公司多IDC这一特点而设计的,试想下,你有多个数据中心,但如果全靠自己来实现数据的同步,这种做法无疑很麻烦,而且对于存储系统而言,数据的一致性、可用性和性能很难做到优雅,现在业务用Bada存数据的时候完全不用担心在哪个机房写入,因为数据会自动同步到其他指定的IDC,多机房的写入冲突也不用关心,系统会自己处理。 由于很多业务也用来当持久化缓存用,所以系统设计中很多地方都需要考虑如何让延迟最低,系统当前处理4K的数据读写能做到1ms左右,当然还有优化空间。另外Bada提供了String / List / Set / Hash多种数据结构供选择,同时支持Redis协议,可以满足希望使用Redis,但苦于数据量太大单机无法容纳的场景。 皮皮(Q6):很多坛友对PHP可能都不会陌生,它支持几乎所有流行的数据库以及操作系统,有太多的原因让它成为了世界上最受欢迎的脚本语言。而对于PHP开发人员来讲,一个普遍头疼的问题在于代码的排错跟踪,那我知道,奇虎360将PHP脚本跟踪分析工具PHPTrace开源了,它能为开发人员带来哪些好处?它究竟有哪些应用场景? 王超(A6):提到PHP的调试和问题排查,可能很多人第一想到的就是 Xdebug 和 Xhprof,确实,这两款软件非常的强大,但对线上问题的定位却很无力,我们经常遇到这样的场景,某业务代码线上运行一直很正常,突然某天某个时段有大量超时或crash,如果使用Xdebug或Xhprof需要重启Fast-CGI进程,或者嵌入调试代码到程序逻辑中,但如果重启解释器可能问题会消失,也根本无法判断是哪一步逻辑有问题而无从加调试代码,如果线上一直打开调试模式又会非常影响性能。以前遇到问题,我们通常的做法是使用strace、gdb、tcpdump这样比较原始的工具来分析,这些工具的特点是只能抓出来系统调用、PHP内核空间堆栈、网络包这些比较底层的数据,要想定位问题还需要对操作系统、php内核、应用代码有一定的了解才能将观察到的现象串起来,整个调试过程很不友好,更何况有些问题并非一次就能定位,经历过太多次这样的事情之后,我们决定开发一款专门针对线上问题定位的工具,phptrace就由此而来,再遇到问题时,就可以指定任意进程跟踪排查,并直观看到PHP空间的函数调用和耗时,平时不会自动开启所以不会对线上造成任何性能影响。
|