案例分享:集群技术在七牛云存储中的应用
2021-01-04 10:11:00 阅读(189) 评论(0)
分享人介绍:七牛数据平台工程师王团结,主要负责数据平台的设计和研发。*大数据处理、高性能系统服务、Hadoop、Flume、Kafka、Spark等离线分布式计算技术。以下是对大多数公司实录数据平台的讨论,如果做得不好,马上就会被吐槽,这与运维部门非常相似。因此,在技术选择上优先考虑现成的工具,快速取得成果,无需担心技术负担。在早期,我们走过弯路,认为工作量不大,收集、存储和计算都是自己开发的,发现是吃力不讨好。从去年上半年开始,我们全面拥抱开源工具,搭建自己的数据平台。数据平台设计架构公司的主要数据来源是分散在各业务服务器上的半结构化日志(系统日志、程序日志、访问日志、审计日志等)。你有没有想过为什么需要日志?日志是最原始的数据记录,如果不是日志,信息肯定会丢失。举个简单的例子,需求是统计nginx上每个域名的流量,这可以通过一个简单的nginx模块来完成,但当我们需要统计不同来源的流量时。因此,需要原始完整的日志。有一种方法是通过网络直接通过业务程序发送日志,这是不可取的,因为网络和接收端不完全可靠,会影响业务或丢失日志。最小、最自然的方法就是把日志放在本地硬盘上。Agent设计要求每台机器上都有一个agent来同步这些日志,这是一个典型的队列模型,业务流程不断push,agent不断pop。agent需要记忆功能来保存同步位置(offset),只有这样,数据的准确性才能尽可能得到保证,但不可能完全准确。由于发送数据和保存offset是两个动作,没有事务性,数据不一致是不可避免的,通常在发送成功后保存offset,因此在agent异常退出或机器断电时可能会导致多余的数据。agent需要足够轻,这主要体现在运维和逻辑上。agent将部署在每台机器上,需要考虑运维成本和接入成本。Agent不应该有分析日志、过滤、统计等动作,这些逻辑应该给数据消费者。假如agent有更多的逻辑,那么它是不可避免的,不可避免地会有升级变化。agent是由go自己开发的,信息中间件kafka,数据传输工具flume是数据收集流程数据收集的技术选择。说到数据收集,人们经常将flume与kafka进行比较。在我看来,两者的定位是不同的。flume更倾向于数据传输本身。kakfa是解耦生产者和消费者的典型消息中间件。在具体架构上,agent没有直接将数据发送到kafka,kafka前面有一层由flume组成的forward。这样做有两个原因1.kafka的api对非jvm系的语言支持非常不友好,forward提供更通用的http接口2.forward层可以做路由、kafkatopic、kafkapartitionkey等逻辑,进一步减少agent端的逻辑forward层不含状态,完全可以实现水平扩展,别担心成为瓶颈。由于高可用性,forward通常有不止一个例子,这将导致日志顺序问题,agent遵循一定的规则(round-robin、failover等。)选择forward实例,即使kafkapartitionkey是一样的,由于forward层的存在,最终落入kafka的数据顺序可能与agent发送的顺序不同。我们容忍乱序,因为生成日志的业务基本上是分布式的,保证单台机器的日志顺序意义不大。我们容忍乱序,因为生成日志的业务基本上是分布式的,保证单台机器的日志顺序意义不大。如果业务对顺序有要求,则必须直接将数据发送到kafka,并选择partitionkey。kafka只能保证partition级别的顺序。通过上述流程,将数据汇集到当地机房kafka集群,然后汇集到核心机房kafka,最终供消费者使用。由于kafka的miror对网络不友好,我们选择了更简单的flume来完成跨机房的数据传输。flume在不同的数据源中传输数据是灵活的,但有几点需要注意1.memory-Channel效率很高,但是可能会有丢失数据的风险,file-安全性高但性能低的chanel。我们用memory-channel,然而,将capacity设置得足够小,使内存中的数据尽可能少,在意外重启和断电时丢失的数据也很少。个人排斥file-channel,一方面,效率,另一方面,对flume的期望是数据传输。当引入file-chanel时,其角色将转换为存储,这在整个过程中是不合适的。通常flume的sink端是kafka和hdfs,可用性和扩展性都很好,不用担心数据拥堵。2.默认情况下,httpsouce没有设置线程池,存在性能问题。如果有用,需要自己修改代码。3.单sink速度跟不上时,需要多个sink。例如,如果跨机房数据传输网络延迟高单rpcsink吞吐和hdfssink效率低下,我们将在一个channel后匹配十多个sink。kafka使用的关键点kafka在性能和可扩展性方面都很好,以下几点需要注意以下1点.topic的划分,大topic对生产者有利,维护成本低,小topic对消费者友好。若是完全不相关的相关数据源,且topic数不发散,则优先考虑topic。2.kafka的并行单位是partition,partition的数量与整体吞吐量直接相关,但partition的数量并不是越大越高,三个partition可以吃一个普通的硬盘io。因此,partition数是由数据规模决定的,最终还是需要硬盘来抵抗。3.选择不当的partitionkey可能会导致数据倾斜。partititionkey只有在对数据有顺序要求时才能使用。kafka的producersdk在没有指定partitionkey的情况下,只会在一定时间内将数据写入一个partition。在这种情况下,当producer的数量少于partition时,也会导致数据倾斜,可以增加producer的数量来解决这个问题。数据到kafka后,数据同步到hdfs进行离线统计。另一种方法用于实时计算。由于今天的时间有限,我们只能与您分享一些实时计算的经验,以实时计算我们选择的sparkstreaming。目前我们只有统计需求,没有迭代计算需求,所以sparkstreaming使用保守,从kakfa读数据统计落入mongo,中间状态数据很少。好处是系统吞吐量大,但很少遇到与内存相关的问题。sparkstreaming对存储计算结果的dbtps要求很高。例如,有10w域名需要统计流量,batchinterval为10s,每个域名有4个相关统计项目,平均为4wtps。考虑到峰值可能更高,固态硬盘上的mongo只能抵抗1wtps,我们将考虑使用redis来抵抗如此高的tps具有外部状态的task逻辑不能重新访问。当speculation参数打开时,计算结果可能不准确。举个简单的例子,这是一个将计算结果存储在mongo中的task任务。如果重做,落入mongo的结果会比实际结果多。举个简单的例子,这是一个将计算结果存储在mongo中的task任务。如果重做,落入mongo的结果会比实际情况多。有状态的对象的生命周期不容易管理,不可能每个task都去new。我们的策略是jvm中的对象,并在代码层面进行并发控制。类似下面。在spark1.3的后版本中,kafkadirectapi被引入试图解决数据准确性问题。使用direct可以在一定程序中缓解准确性问题,但不可避免地会出现一致性问题。为什么这么说?directapi暴露了kafkaconsumerofset的管理(以前是在zookeeper中异步存储)。只有保存计算结果和ofset在同一事务中,才能保证准确性。这项事务有两种方式可以实现,一种是用mysql等支持事务的数据库保存计算结果ofset,另一种是实现两个阶段的提交。流式计算中实现这两种方法的成本都很高。其次,directapi存在性能问题,因为它实际上是在计算时从kafka阅读数据的,这对整体吞吐量有很大影响。这就是我们想分享的,最后展示我们的在线规模。flume+kafka+spark8台高配机,日均数据500亿,峰值80wtps。
推荐阅读
- 怎么自己做一个小程序 小程序详细制作流程
微信小程序是一种不需要下载安装即可使用的应用,用户扫一扫或者搜一下即可打开应用,做一个微信小程序首先需要经过注册及审批,之后再获取开发文档根据规范进行开发就可以了,懂程序的可以依靠开发者工具自行开发,那么怎么自己做一个小程序呢,下面*就…查看详情
- 2022看电影电视剧免费的软件哪个最好
现在很多人在假期都会看电视电影来打发时间,毕竟还是个很不错的消耗时间的方式,下面万商云集小编给大家来详细介绍一下2022看电影电视剧免费的软件哪个最好这方面的内容,希望能帮助到大家解决看电视电影的问题。 1.1905TV版 对标CC…查看详情
- 比较好用的便利店收银系统前十排名
在小区周边有很多的便利店,便利店能够给周边的居民带来很多的方便,可以说是非常受欢迎的便利店,其实在操作的时候也都会选择一些比较好的系统,尤其是在收银方面都会选择比较好的收银系统,这样相对来说比较安全,而且也比较方便。那么便利店收…查看详情
- svg是什么格式
安卓手机怎么打开SVG格式文件?由于svg是矢量图文件,一般的图片查看工具无法打开,使用AdobeIllustrator可以查看而且能够再次编辑svg文件,还能导出保存为svg或其他格式的文件。 svg文件还可以同过浏览器打开,如使用火狐…查看详情
- 珠宝市场竞争加剧,蒂芙尼欲高价“卖身”
日前,业内传出珠宝品牌蒂芙尼将被奢侈集团LVMH收购的消息;今日,蒂芙尼回应LVMH145亿的报价太低,收购谈判未达成。由此可见,蒂芙尼欲高价“卖身”的消息为真,只不过,在等待一个好价格罢了。是什么让珠宝品牌中的领军企业走向收购境地的呢?新…查看详情
- Erp:将企业所有资源进行整合集成管理
企业资源计划即ERP (EnterpriseResourcePlanning),由美国GartnerGroup公司于1990年提出。企业资源计划是MRPII(企业制造资源计划)下一代的制造业系统和资源计划软件。 图片来源于网络除了MRPII…查看详情
- 停车收费系统有哪些
停车收费系统是管理和收费停车场的软件或者是*件系统。以下是几种常见的停车收费系统: 1.自动取票式停车收费系统:这种系统通常应用于大型停车场,如商场、机场等。用户入场时会自动获取一张停车票,并在离开时将票据交给收费员进行结算。该系统可以自动…查看详情
- 什么ERP好?无需看费用高低、功能多少,只要适合就好
如今,各企业如果想要实现对整个供应链的有效管理,必须把经营过程中的有关各方如供应商、制造工厂、分销网络、客户等纳入一个紧密的系统中,才能有效地安排企业的各项活动,让企业利用全社会一切市场资源快速高效地进行生产经营,提高效率,在市场上获得竞争…查看详情
- crm客户管理功能:帮助企业做日常和销售管理,且推动企业发展
企业选择crm系统是一个互相认知的过程,crm服务提供商需要了解企业的需求,企业也想了解crm系统能提供哪些功能。市面上会有很多crm系统,提供的产品和服务会有一定的差异性,那么crm客户管理功能有哪些呢?图片来源于网络 crm客户管理功能…查看详情
- 免费的创业开店项目有哪些?
大家都知道,开店做生意有风险,成本高、投入大不说,生意做不起来,把店玩倒闭了也是分分钟的事。但是我们可以通过借着别人的货,为自己赚钱,具体应该怎么做呢? 先来看两个例子。 老罗在杭州市余杭区开了一个鸭脖店,但是开业1个月,客流量不高…查看详情
- 制作品牌网站的时候最容易掉入以下七个误区
现在不少企业都比较看重于网络营销,开始建立属于自己的品牌网站,这样不光能够截到推广产品的作用,同时还可以很好的提升企业的形象和影响力,但是要注意制作品牌网站的时候,最容易掉下以下七个误区,一起来了解吧。 1、内容繁琐 之所…查看详情
- 抢票软件哪个成功率高?抢票率成功率高就选这几款软件
在过年过节的时候,有一些外地的人想要回家,可能都会选择坐火车或者是飞机,其实不管是火车还是飞机,都应该要购买票。但是也有时候可能会买不到票,如果票比较紧张,那么有些人就会选择一些抢票软件来抢票。那么抢票软件哪个成功率高呢?下面就…查看详情
- 怎样建设企业网站,才能帮助企业进行网络营销,立于不败之地
现在不管是大企业还是中小企业都需要制作自己的网站,因为现如今是互联网时代,想要在互联网时代发展起来,首先要有自己的网站。网站不仅可以帮助企业宣传公司品牌,利用好了还可以获得一定的客户和比较好的效益。说到这里,那么我们肯定会想到这个问题;怎样…查看详情
- 绿色食品包装设计三要素是那些
在月饼包装盒设计中,哪些要素比较重要?第一:安全卫生,月饼也是食品。 第二:美观,月饼属于一种季节性食品,送礼什么的在所难免,所以包装一定要上档次。 第三:材质,材质这东西涉及到很多方面,包括设计、安全、抗压之类的 第四:包装盒设计绿…查看详情
- 2021最受欢迎国内CRM软件排行
随着企业数字化转型,企业对于crm软件的需求在扩大,对系统的要求也越来越高,现在的crm软件不仅需要完成客户的数据采集,还要拓展管理功能,进行企业的数据分析和营销,为企业提供决策方面的参考支持。目前市面上现在流行的国内CRM软件有很多,本文…查看详情
猜你喜欢
最新文章

扫码二维码
立即领取《千元实战营销秘籍》
还可免费试用营销管理系统
*如有疑问,请随时拨打免费咨询热线:400-0033-166
邮箱:zjb@iwanshang.com
服务时间:8:30-18:00
软件企业
认定号:川RQ-2018-0216
高新技术企业
认定号:GR201951001121

关注微信公众号
和10万中小企业共同成长

扫码下载APP
享全方位服务一触即达
Copyright © 2004-2022 万商云集(成都)科技股份有限公司 版权所有
蜀ICP备12001963号-2
川公网安备 51010402000322号

快速找产品

找一找哪款产品适合您?
咨询热线:400-0033-166
-


-
电话沟通
获取方案
下载APP
官方微信
扫码下载APP
全方位服务一触即达

关注万商云集
和10万中小企共成长

TOP

企业首选的AI增效平台

400-0033-166
8:30-18:00















































注册有好礼



