【编者按】每个人的成长曲线不同,有的人在研究生之时就已有相当知名的产品和框架,从而在接下来的工作中一路顺风顺水,有的人缺需要经历一个又一个的坑才能成长,不管是前者的聪明高效,还是后者的笨鸟先飞,他们都是在迈着脚步不断地向前。不妨,我们停下脚步看下一些同行,以激励自己更好地前行。
2017年6月10-11日,SDCC 2017将在创新之都深圳火热开启。据悉,阅文集团内容平台中心存储系统架构师将在SDCC 2017·深圳站之互联网应用架构实战峰会带来题为《PB级去内存化分布式缓存系统Lest的架构设计与实践》的分享,更多峰会嘉宾和议题请点击这里。
以下为专访正文:
【嘉宾】帅翔,毕业于上海大学计算机专业,目前就职于阅文集团内容中心,主要负责分布式文件系统的研发工作。关注分布式系统、数据存储、网络编程、Linux系统,机器学习等相关领域。
CSDN:请先和大家介绍下您和目前所从事的工作,以及关注哪些技术领域?
帅翔:目前就职于阅文内容中心,主要负责分布式存储系统的研发工作,目前我们正在研发一款分布式的缓存系统,主要用于解决当前基于redis的缓存系统需要占用大量内存的问题,这是一个有趣的项目。我当前主要关注分布式系统,数据存储,网络编程等相关技术领域,当前非常火热的机器学习,数据挖掘等领域也有所关注,大数据存储技术的发展是推动当前人工智能技术不断前进的动力之一。
CSDN:一路走来,在技术的路上有什么特别的学习趣事分享?同时,您也可以谈谈自己的学习方法等。
帅翔:应该说我是一个幸运的人,毕业后的第一份工作就能跟随业内前辈参与到分布式存储系统的研发当中。不得不说,分布式存储系统的研发是非常具有挑战性的,不仅要求研发人员需要跟进了解最新的研究成果,还需要有扎实的网络编程,操作系统,数据结构等基本功。从当初只会Hello World的应届小白,到如今实现第一个分布式的去内存化缓存系统,当中需要耐得住寂寞,不断的看书,看文章,当然更离不开前辈的鞭策和引导,哈哈。
CSDN:一提起“分布式系统”,大家的第一感觉就是好高大上啊,深不可测,能分享下你眼中的分布式系统是怎样的?
帅翔:分布式是一个概念,是分散的,低耦合的,灵活的,甚至是异步的,但是都有一个共同的目的,它的相对概念是集中式。从这个角度来讲,我们只要把原本集中的大功能体分解成小的能独立运转的行动单元,并且这些单元之间能相互配合,来完成某一功能。我们日常的生活中的有很多分布式系统,公共交通系统、分布式能源系统(电网系统)、军队系统,大到以我们人为单元的人类社会系统,小到小朋友喜欢的乐高积木,这些都是分布式系统,只是体现的形式不同罢了。以军队系统为例,一只训练有素的军队,能够统一协调,相互支援,动态扩充来完成特定的作战任务。而且这一切对人民来讲是透明的,他们只需要知道战争的结果。从分布式系统的角度来说,各个节点之间需要保证负载均衡,数据同步以及容灾。同时分布式系统可以灵活的扩展,和裁撤节点资源。从用户的角度来讲,分布式系统后面的一切操作都是透明的,他们只关心他们的操作是成功还是失败。
CSDN:分布式系统有哪些优势以及会面临怎样的挑战?
帅翔:在传统软件行业,如银行业,金融保险业,往往都使用一些稳定性高,高度集成的信息系统,但是这些系统往往兼容性差,不容易扩展,而且需要通过机器的质量来保证系统的可靠性,所以银行,金融保险都喜欢用高性能的,高质量的昂贵机器。而在很多互联网企业中,机器的成本总是一个难以忽略的因素,因此需要采用大量的廉价机器来提供服务,因此,对我们来说,机器是不可靠的,我们需要通过系统来保证可靠性。同时,互联网的服务请求有可能会呈现井喷性的增长,这样就需要互联网企业提供性能可扩展的服务,能过随着机器的增加而提高系统的吞吐量。
在这些条件的限制下,分布式系统在互联网生态中的优势不言而喻,组织灵活,扩展方便,容错性强,而且可以利用廉价机器,降低成本,保证企业的竞争力。然而凡是分布式系统也并非十全十美,它仍然逃不出CAP的宿命,就看你是选择Availability还是选择Consistency。保证可用性,就是更佳考虑用户的感受,需要在用户可以忍受的一定时间内返回结果,可以成功,也可以失败,至少让用户知道你还活着,但它往往需要在一致性上做出妥协,因为分布式节点之间的沟通也需要时间,如果在短时间内就要返回结果,那么节点之间的一致性就很难得到保证;相反如果要保证一致性,就需要在可用性上做出让步,那就需要等分布式节点之间沟通完成之后,才能向用户返回结果,而期间可能会花费大量的时间,让用户等地不耐烦。选择可用性的有亚马逊家的Dynamo、FaceBook家的Cassandra等。保证一致性的有Google家的BigTable,以及MongoDB等。当然还有一些折衷的选择方案,如最终一致性,它既考虑了用户感受可以在短时间内返回结果,又可以保证数据的最终状态,在一些实时性要求不苛刻的系统中已经得到广泛应用。如DNS系统就是一个很好的例子。
CSDN:分布式系统的架构体系很庞大,包括传统的基于对象的体系结构、SOA,也包括最近比较火的RESTful风格架构、微服务、容器技术、Serverless架构等,这一块您研究比较深的是?有哪些心得和体会可分享?
帅翔:其实SOA、RESTful、微服务、Serverless之类的架构,从架构来说,都差不多,早期使用SOA,以及后来的微服务还是无服务,都是为了从远程获取服务,只是方法和粒度上发生了变化,表现的越来越轻量,更加倾向于分布式,去中心化。不能说微服务,无服务这是都是新出来的技术概念,就很高端,每个架构都有合适它的业务,如果业务在发展的初期一些很简单的集中式架构就能很好的满足需求,随着业务的不断增长,可能需要SOA这些RPC框架来提供分布式服务,再到后期,可以抽取其中的核心服务,构成微服务,有针对性的来提高性能,加强系统的稳定性,由于服务之间是独立存在的,方便升级维护。
我们现在主要通过Restful框架来提供接口服务,目前看来,稳定性,效率,都还不错,接口开发方便,而且各个接口服务之间相互独立,互不影响,有效的强化了业务系统的稳定性。
CSDN:分布式监控方面常用的技术,也包括Nagios、Zabbix、Consul、ZooKeeper等,在监控方面有什么心得?
帅翔:在分布式系统中,如果保证各个节点之间协同工作非常重要,Zookeeper、Chubby等就是在系统中充当这样一个统筹全局的角色,保证系统中的各个节点有条不紊的完成任务。在我们的分布式缓存系统Lest中也有一个类似的角色——Lax,Lest可以根据key来Lax获取当前的最新ID,它用于保证各Lest节点间版本的一致性。Lax本身也是分布式的,因此它的性能和可靠性可以得到保证。Lax强调的是一致性,因此严格意义上来说,它是一个CP系统。不过我们通过NWR策略来改善了它的可用性。
CSDN:本次在SDCC 2017·深圳站上分享的主要内容是?给受众会带来什么?
帅翔:本次SDCC大会上,我将会跟大家分享我们团队最近研发的一个有趣的分布式缓存系统。如今市面上比较流行的缓存系统,如Redis等都是基于内存的,因此在做全量缓存时需要耗费大量内存。我们在保证基本性能需求的情况下,开发了一款去内存的分布式缓存系统,毕竟目前内存比磁盘要贵的多。
SDCC 2017•深圳站将于2017年6月10-11日登陆深圳,拥有互联网应用架构实战峰会、大数据技术实战峰会两大峰会,秉承干货实料的内容原则,汇聚业内顶尖架构师和数据技术专家,共话架构、大数据热点话题,深度解析技术难点和落地思考,带你高台起步,走近技术圈的浮生万象。八折抢票通道现已开启,详情点击注册参会。