SDCC - 活动家资讯 //m.catawbaoil.com 传递会议价值_深度行业分析 Thu, 01 Jun 2017 02:02:01 +0000 zh-Hans hourly 1 https://wordpress.org/?v=6.8.2 //m.catawbaoil.com/wp-content/uploads/2021/11/cropped-logo-2-32x32.jpg SDCC - 活动家资讯 //m.catawbaoil.com 32 32 【SDCC讲师专访】阿里巴巴冯嘉:RocketMQ开源二三事,侦破万亿级数据容量背后的架构实践 //m.catawbaoil.com/61523.html Thu, 01 Jun 2017 02:02:01 +0000 //m.catawbaoil.com/?p=61523 Read More “【SDCC讲师专访】阿里巴巴冯嘉:RocketMQ开源二三事,侦破万亿级数据容量背后的架构实践” »

]]>
fengjia冯嘉,阿里巴巴中间件架构师,具有丰富的分布式软件架构、高并发网站设计、性能调优经验,拥有多项分布式、推荐领域的专利。开源爱好者,关注分布式、云计算、大数据领域。目前主要负责阿里巴巴消息中间件生态输出、MQ商业化 ,Apache RocketMQ联合创始人,社区布道者。

CSDN:请先和大家介绍下您和目前所从事的工作,以及关注哪些技术领域?

冯嘉:大家好,我叫冯嘉,10年毕业后进入阿里巴巴,先后负责过交易线的核心业务系统、Feeds系统、性能侦测平台、消息推送平台等。多年来一直致力于分布式、网站架构、全栈性能优化领域的研究与改进工作,最近开始关注大数据相关技术栈。目前主要负责阿里巴巴消息引擎RocketMQ的架构设计及其改进,同时也是Aliware MQ(RocketMQ商业版),Apache RocketMQ社区负责人。

CSDN:您对架构是怎样的理解?以及您对于架构师是如何定义的?包括其能力与职责。

冯嘉:我个人喜欢把架构分解为宏架构与微架构。宏架构可以理解为传统意义上的架构,强调高屋建瓴,全局视野,在重视功能特性的同时又不忽略非功能属性,如容错、安全、性能、可维护性、可扩展性、可运维性等,随着时间的推移、数据体量的陡增会不断演化。而微观架构是介于设计和实现之间的一种抽象思考,模式提炼。如测试驱动架构、Metrics驱动架构、IO编程模型、模型生命周期管理、API与SPI设计、重演与追溯、Backoff设计、流控设计、资源优雅释放模型、Reactive编程模型、资源Lookup模型、依赖管理模型等等。微架构的展开需要相当的篇幅,后面有机会会和大家一一分享。软件架构师不仅能够使用全局视野,对软件进行全屋勾勒,更需要具备很强的微架构能力,为软件落地过程中的关键部位把关诊脉,而这种综合能力也是我一直在团队里提倡的。

CSDN:2016年11月,阿里将RocketMQ捐献给Apache软件基金会,正式成为孵化项目,「开源」的初衷是什么?在「开源」的过程中有哪些让您印象深刻的事件?

冯嘉:捐赠的初衷,其实我在另一篇文章里面有经提及过。我们希望能为世界展示我们有能力设计出一款自主知识产权的具有世界级影响力的分布式产品。RocketMQ开源5年来,一直未停止对整个引擎的优化与升级。正是通过这么多年来的坚持,我们才有了站在Apache的机会。团队也非常珍惜这个与世界强手过招的机会,像开源领域的顶级会议(ApacheCon和OSCon),我们都会派同学去参加,分享我们的研发经验,同时也能带回来非常有意思的Idea,反哺我们的产品。

至于开源过程中印象深刻的事情,确实有不少。像在国内,很多同学还是比较倾向于伸手主义,这个我在社区也多次强调过。Apache RocketMQ,应该说所有开源软件项目几乎不存在全职的Committer,分享知识本是一件很快乐的事情,但有时候我们的用户灰常喜欢提一些“过份”的要求,这样的声音在社区里多了,对整个社区的健康发展非常不好。像在Apache,因为考虑到时区,考虑到隐私,通常都是通过异步的邮件进行沟通,这种形式存在了有18年了,我相信一定有它的合理性。而目前,我们也在大力提倡国内社区的同学向这方面靠拢,如果你遇到问题,能够通过这种方式反馈,我相信社区里还是有很多热心的同学很乐意帮助解答的。至于其他好玩的事情,后面有机会再和大家分享。

CSDN:Apache基金会中的342个项目中,暂时还只有Kylin、CarbonData、Eagle和RocketMQ共计四个中国技术人主导的项目,对此您怎么看?您认为驱动「开源」最重要的因素是?

冯嘉:说实话,我个人其实不太喜欢听到“由中国人主导”这样的字样,我希望大家不管做什么事情,都要把握一个度,不卑不亢。2016年11月,阿里将RocketMQ捐献给Apache软件基金会,正式成为孵化项目,对我们来说这是一大步,因为加入到Apache开源软件基金会需要经过评审方的严格考核与观察。这既是一种荣誉,又是一种压力。RocketMQ开源至今有五年历史,伴随着阿里巴巴的业务体量不断攀登,其架构也做了一次又一次的优化与升级。我们希望打造全球一流的产品,为此团队这几年不断深耕细作,进入Apache对我们来说是一个很好的开始,在Apache严谨且专业的开源理念熏陶下,我们相信RocketMQ能够发展得越来越好。在全球最享有声望的开源基金会上,相信也会有更多的由中国人捐赠的产品受益全球。

开源是IT技术快速发展的重要引擎,正是开源的共享和协同文化,促进了互联网、大数据、物联网、移动化信息技术的迅猛发展。提供“免费的产品”能够让大家进行初始的评估,而一旦确定用户对该产品的必然需求后,往往会通过一款增强版的付费产品来接近客户。这通常比传道士式的营销策略要有效得多。从这个角度来说,驱动开源向前发展的最重要的因素是商业化。如果你依赖的开源软件,过了一年作者不再维护了,企业用户就会有很大的损失。而且商业支持一般会解锁更多的功能,并且出了问题都有及时的解决。这一点最典型的成功案例当属Linux与MySQL。而这一开源商业化模式也被越来越多的互联网、云计算公司采纳,如Kafka背后的confluent、RabbitMQ背后的pivotal、Hadoop背后的Cloudera、Hortonworks与MAPR。以及最近闹得沸沸扬扬的Docker。

CSDN:使用RocketMQ技术的阿里目前可以在双十一当天承受万亿级消息容量,能否简单分享下其目前的架构及主要解决的问题特点?

冯嘉: RocketMQ主要由NameServer、Broker、Producer以及Consumer四部分构成。其中NameServer以轻量级的方式提供服务发现和路由功能,每个NameServer存有全量的路由信息,提供对等的读写服务,支持快速扩缩容。Broker负责消息存储,以Topic为纬度支持轻量级的队列,单机可以支撑上万队列规模,支持消息推拉模型,具备多副本容错机制(2副本或3副本)、强大的削峰填谷以及上亿级消息堆积能力,同时可严格保证消息的有序性。除此之外,Broker还提供了同城异地容灾能力,丰富的Metrics统计以及告警机制。Producer和Consumer以SDK形式提供,由用户进行分布式部署,消息由Producer通过多种负载均衡模式发送到Broker集群,支持Batch发送、oneway发送。发送低延时,支持快速失败。Consumer支持PUSH和PULL两种消费模式,支持集群消费和广播消息,提供实时的消息订阅机制,目前不支持Exactly once语义,所以需要用户自己做好判重处理。

RocketMQ目前主要主要用在金融领域的交易链路、数据同步(如MySQL binlog解析订阅)、日志分发、异构系统交互、异步解耦与流计算领域。我们希望RocketMQ能够在互联网、金融、物联网、大数据领域遍地开花、深耕细作。这个也是下一代RocketMQ(第四代)主要演进的方向。

CSDN:与其他消息中间件的对比,RocketMQ的特点是?

冯嘉:与其他MQ产品想比,RocketMQ最大优势在于它经历了历年双十一的高并发,海量数据(去年双十一是万亿级)的洗礼和积甸,愈发可靠和稳定。在功能特性层面,我们觉得它最大的亮点在于大数据流量下依然能够保证出色的低延迟,能够支撑海量消息堆积,全局保序。当然,今年我们会陆续推出一系列更靓的特性,如支持海量消息的延迟投递、分布式事务、分级的消息去重、物联网套件,甚至还包括Stream特性。也非常希望这方面的专家同学能够加入我们,帮助我们一同打造全球最具影响力的分布式产品。

CSDN:您最期待在SDCC 2017·深圳站大会上看到哪些内容?

冯嘉:非常期待深圳大会能够有更多的外籍同行来分享他们的互联网架构实战经验,也非常期望能够看到更多的分布式架构与实践、性能优化方面的精彩分享。深圳站不见不散,让我们。

SDCC 2017•深圳站将于2017年6月10-11日登陆深圳,拥有互联网应用架构实战峰会、大数据技术实战峰会两大峰会,秉承干货实料的内容原则,汇聚业内顶尖架构师和数据技术专家,共话架构、大数据热点话题,深度解析技术难点和落地思考,带你高台起步,走近技术圈的浮生万象。票务火爆,欲购从速,详情点击注册参会

]]>
【SDCC讲师专访】阅文集团帅翔:从0到1落地分布式存储系统架构 //m.catawbaoil.com/61519.html Thu, 01 Jun 2017 01:49:25 +0000 //m.catawbaoil.com/?p=61519 Read More “【SDCC讲师专访】阅文集团帅翔:从0到1落地分布式存储系统架构” »

]]>
帅翔帅翔,毕业于上海大学计算机专业,目前就职于阅文集团内容中心,主要负责分布式文件系统的研发工作。关注分布式系统、数据存储、网络编程、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日登陆深圳,拥有互联网应用架构实战峰会、大数据技术实战峰会两大峰会,秉承干货实料的内容原则,汇聚业内顶尖架构师和数据技术专家,共话架构、大数据热点话题,深度解析技术难点和落地思考,带你高台起步,走近技术圈的浮生万象。购票通道现已开启,详情点击注册参会

]]>