自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

风中云彩的博客

不积跬步,,无以至千里;;不积小流,,无以成江海!

原创 美团点评基于 Flink 的实时数仓平台实践

摘要:数据仓库的建设是“数据智能”必不可少的一环,也是大规模数据应用中必然面临的挑战,而 Flink 实时数仓在数据链路中扮演着极为重要的角色。本文中,美团点评高级技术专家鲁昊为大家分享了美团点评基于 Apache Flink 的实时数仓平台实践。主要内容为以下三个方面: 实时计算演进与业务实践 基于 Flink 的实时数仓平台 未来发展与思考 一、美团点评...

2020-01-21 16:04:42 327

转载 Java动态追踪技术探究

作者简介高扬,2017年加入美团打车,负责美团打车结算系统的开发。引子在遥远的希艾斯星球爪哇国塞沃城中,两名年轻的程序员正在为一件事情苦恼,程序出问题了,一时看不出问题出在哪里,于是有了以下对话:“Debug一下吧。”“线上机器,没开Debug端口。”“看日志,看看请求值和返回值分别是什么?”“那段代码没打印日志。”“改代码,加日志,重新发布一次。”“怀疑是线程池...

2020-01-19 16:28:40 106

原创 k8s 的基本介绍

一、k8s 基本特性 (1)自动装箱 构建于容器之上,基于资源依赖及其他约束自动完成容器部署且不影响其可用性,并通过调度机制混合关键型应用和非关键型应用的工作负载于同一节点以提升资源利用率。 (2)自我修复(自我治愈) 支持容器故障后自动重启、节点故障后重新调度容器,以及其他可用节点、健康状态检查失败后关闭容器并重新创建等自我修复机制。 (3)...

2020-01-16 00:22:30 170

原创 Linux 中的零拷贝技术

本文探讨Linux中 主要的几种零拷贝技术 以及零拷贝技术 适用的场景 。为了迅速建立起零拷贝的概念,我们拿一个常用的场景进行引入:1 引文在写一个服务端程序时(Web Server或者文件服务器),文件下载是一个基本功能。这时候服务端的任务是:将服务端主机磁盘中的文件不做修改地从已连接的socket发出去,我们通常用下面的代码完成:while((n = read(...

2020-01-14 00:47:01 57

原创 Hudi剖析|Apache Hudi Rollback实现分析

1. 介绍 在发现有些commit出错时,可使用Hudi提供的rollback回滚至指定的commit,这样可防止出现错误的结果,并且当一次commit失败时,也会进行rollback操作,保证一次commit的原子性。2. 分析 rollback(回滚)的入口在 HoodieWriteClient#rollback,其依赖 HoodieWriteClient#roll...

2020-01-13 17:12:15 264

原创 ApacheHudi使用问题汇总(二)

1. Hudi Cleaner是做什么的? Hudi Cleaner(清理程序)通常在 commit和 deltacommit之后立即运行,删除不再需要的旧文件。如果在使用增量拉取功能,请确保配置了清理项来保留足够数量的commit(提交),以便可以回退,另一个考虑因素是为长时间运行的作业提供足够的时间来完成运行。否则,Cleaner可能会删除该作业正在读取或可能被其读取的文件,并...

2020-01-08 17:40:26 588

原创 ApacheHudi使用问题汇总(一)

1.如何写入Hudi数据集 通常,你会从源获取部分更新/插入,然后对Hudi数据集执行写入操作。如果从其他标准来源(如Kafka或tailf DFS)中提取数据,那么DeltaStreamer将会非常有用,其提供了一种简单的自我管理解决方案,可将数据写入Hudi。你还可以自己编写代码,使用Spark数据源API从自定义源获取数据,并使用Hudi数据源写入Hudi。2. 如何部署...

2020-01-08 11:01:37 504

原创 Flink elasticsearch-sink by http and https

官网上有关于http的例子:DataStream<String> input = ...;List<HttpHost> httpHosts = new ArrayList<>();httpHosts.add(new HttpHost("127.0.0.1", 9200, "http"));httpHosts.add(new HttpHost("10...

2019-12-30 10:41:00 232

原创 Spark 数据倾斜的解决方法

一、什么是数据倾斜对 Spark/Hadoop 这样的分布式大数据系统来讲,数据量大并不可怕,可怕的是数据倾斜。 对于分布式系统而言,理想情况下,随着系统规模(节点数量)的增加,应用整体耗时线性下降。如果一台机器处理一批大量数据需要120分钟,当机器数量增加到3台时,理想的耗时为120 / 3 = 40分钟。但是,想做到分布式情况下每台机器执行时间是单机时的1 / N,就必须保证每...

2019-12-30 10:19:00 55

原创 Apache Kafka 2.4 正式发布,重要功能详细介绍

2019年12月18日 Apache Kafka 2.4 正式发布了,这个版本有很多新功能,本文将介绍这个版本比较重要的功能,完整的更新可以参见 release notes。Kafka broker, producer, 以及 consumer 新功能KIP-392: 允许消费者从最近的副本获取数据 在 Kafka 2.4 版本之前,消费者只能从 leaders 分区那里获...

2019-12-27 16:36:15 466

原创 Apache Hudi 详解

1. 什么是Hudi?Apache Hudi代表Hadoop Upserts anD Incrementals,管理大型分析数据集在HDFS上的存储。Hudi的主要目的是高效减少摄取过程中的数据延迟。由Uber开发并开源,HDFS上的分析数据集通过两种类型的表提供服务:读优化表(Read Optimized Table)和近实时表(Near-Real-Time Table)。读优化表的...

2019-12-26 14:14:53 2792 4

原创 如何设计缓存系统:缓存穿透,缓存击穿,缓存雪崩解决方案分析

前言设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。解决方案...

2019-12-25 14:03:55 25

转载 饿了么交易系统设计思路

本文作者:盛赫,花名白茶,就职于阿里本地生活中台研发部,多年交易系统建设开发经验,目前转入营销领域继续探索。叮~,您有新的饿了么订单,正在阿里云上被接单。这篇文章成型于交易系统重构一期之后,主要是反思其过程中做决策的思路,我没有使用「架构」这个词语,是因为它给人的感受充满权利和神秘感,谈论「架构」让人有一种正在进行责任重大的决策或者深度技术分析的感觉。如毕玄在系统...

2019-12-18 11:14:17 110

原创 数据库的分库分表

数据切分关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到 1000W 或 100G 以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定...

2019-12-18 10:47:16 236

原创 阿里巴巴HBase高可用

2011年毕玄和竹庄两位大神将HBase引入阿里技术体系,2014年接力棒转到东8区第一位HBase commiter天梧手中,多年来与淘宝、旺旺、菜鸟、支付宝、高德、大文娱、阿里妈妈等几乎全BU合作伙伴携手共进,支撑了双十一大屏、支付宝账单、支付宝风控、物流详情等核心业务。2018年双十一,HBase全天处理请求2.4万亿行,单集群吞吐达到千万级别。从一个婴儿成长为青年,阿里HBase...

2019-12-12 10:23:25 29

原创 高并发系统中的限流

缓存缓存比较好理解,在大型高并发系统中,如果没有缓存数据库将分分钟被爆,系统也会瞬间瘫痪。使用缓存不单单能够提升系统访问速度、提高并发访问量,也是保护数据库、保护系统的有效方式。大型网站一般主要是“读”,缓存的使用很容易被想到。在大型“写”系统中,缓存也常常扮演者非常重要的角色。比如累积一些数据批量写入,内存里面的缓存队列(生产消费),以及HBase写数据的机制等等也都是通过缓存提升系...

2019-12-11 11:10:23 24

原创 Dubbo 详解

Dubbo 分层Dubbo 是一款高性能 Java RPC 架构。它实现了面向接口代理的 RPC 调用,服务注册和发现,负载均衡,容错,扩展性等等功能。Dubbo 大致上分为三层,分别是: 业务层 RPC 层 Remoting 层 Dubbo 的三层结构从上图中可以看到,三层结构中包含了 Dubbo 的核心组件。他们的基本功能如下,对于比较常用的...

2019-12-11 10:58:23 40

原创 Redis 分布式锁

前言分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁。可靠性首先,为了确保分布式锁可用,我们至少...

2019-11-22 10:30:44 30

原创 RPC 框架原理详解

RPC非常重要,很多人面试的时候都挂在了这个地方!你要是还不懂RPC是什么?他的基本原理是什么?你一定要把下边的内容记起来!好好研究一下!特别是文中给出的一张关于RPC的基本流程图,重点中的重点,Dubbo RPC的基本执行流程就是他,RPC框架的基本原理也是他,别说我没告诉你!看了下边的内容你要掌握的内容如下,当然还有很多: RPC的由来,是怎样一步步演进出来的; ...

2019-11-22 10:22:40 60

原创 Flink windows窗口之Windows Assigner和Windows Function

Windows窗口计算就是通过按照固定时间将数据切分成不同的窗口,然后对窗口内的数据进行计算。Flink DataStream API 将窗口抽象成独立的operator,并且在Flink DataStream内已经建了大多数窗口算子。每个算子中包含了Windows Assigner、Window Trigger(窗口触发器)、Evictor(数据剔除器)、Lateness(时延设定)、O...

2019-11-18 11:17:24 88

原创 Flink 的 DataStream 转换操作和DataSinks 数据输出

DataStream 转换操作 转换就是从一个或多个Datastream生成新的Datastream的过程。所有Datastream的转换操作可以分为单Single-Datastream、Multi-Datastream、物理分区三类类型。1、Single-Datastream 操作 Single-Datastream主要有Map、FlatMap、Filter、Ke...

2019-11-15 17:32:30 154

原创 kafka 动态参数

大家都知道kafka中有个server.properties文件用来配置参数的。我们今天来讲的是另外一种参数----动态参数。1、动态参数是什么? 动态参数从字面意思就能理解,意思就是在kafka运行过程中配置的参数。2、动态参数是保存在哪里的? 静态参数有个server.properties文件来保存,那么动态是放在哪儿来保存的呢? Kafka 将动...

2019-11-14 21:39:51 148

原创 kafka 控制器详解

一、控制器是什么东东? 控制器组件(Controller),是 Apache Kafka 的核心组件。它的主要作用是在 Apache ZooKeeper 的帮助下管理和协调整个 Kafka 集群。集群中任意一台 Broker 都能充当控制器的角色,但是,在运行过程中,只能有一个 Broker 成为控制器,行使其管理和协调的职责。二、控制器是怎么选出来? Bro...

2019-11-14 21:17:02 136

原创 腾讯百亿级请求高可用Redis(codis)分布式集群实践

一、Redis有哪些常用的应用场景1)string |计数器,用户信息(id)映射,唯一性(例如用户资格判断),bitmap2)hash |常见场景:存储对象的属性信息(用户资料)3)list |常见场景:评论存储,消息队列4)set |常见场景:资格判断(例如用户奖励领取判断),数据去重等5)sorted set |常见场景:排行榜,延时队列...

2019-11-11 10:33:28 48

原创 17 个方面,综合对比 Kafka、RabbitMQ、RocketMQ、ActiveMQ 四个分布式消息队列

本文将从,Kafka、RabbitMQ、ZeroMQ、RocketMQ、ActiveMQ 17 个方面综合对比作为消息队列使用时的差异。一、资料文档Kafka:中。有kafka作者自己写的书,网上资料也有一些。rabbitmq:多。有一些不错的书,网上资料多。zeromq:少。没有专门写zeromq的书,网上的资料多是一些代码的实现和简单介绍。rocketmq:少。没有专门写r...

2019-11-11 10:17:00 20

原创 ebay百万TPS支付账务系统的设计与实现

导读2018年,ebay全面展开了下一代百万TPS支付账务系统的设计与实现。本文主要介绍核心账务系统的性能和容灾能力,将从账务系统简介、百万TPS压测实验、系统架构分析、开源计划四个方面进行阐释。希望能给同业人员一定启发和借鉴。1. 序亿贝 (www.ebay.com) 于2018年全面展开了下一代支付系统的设计和实现。支付宝的双十一和微信财付通的春节红包已经向世界展示了支付行业...

2019-11-11 10:10:44 216

转载 首次公开:京东数科强一致、高性能分布式事务中间件 JDTX

本文来源于 infoq,原文链接:https://www.infoq.cn/article/BAXzcfjRTcgmKisa7JHm?from=groupmessage&isappinstalled=0在分布式数据库、云原生数据库、NewSQL 等名词在数据库领域层出不穷的当今,变革——在这个相对稳定的领域已愈加不可避免。相比于完全革新,渐进式增强的方案在拥有厚重沉淀的行业...

2019-11-05 11:01:01 30

原创 elasticsearch 原理详解

Elasticsearch 基于 Lucene,隐藏其复杂性,并提供简单易用的 Restful API接口、Java API 接口。所以理解 ES 的关键在于理解 Lucene 的基本原理。Lucene 简介Lucene 是一种高性能、可伸缩的信息搜索(IR)库,在 2000 年开源,最初由鼎鼎大名的 Doug Cutting 开发,是基于 Java 实现的高性能的开源项目。...

2019-11-02 15:19:30 70

原创 中台详解

中台这个概念早期是由美军的作战体系演化而来的,技术上所说的“中台”主要是指学习这种高效、灵活和强大的指挥作战体系。电商经过十几年的发展,组织已经庞大而复杂,业务不断细化拆分,也导致野蛮发展的系统越来越不可维护,开发和改造效率极低。也有很多新业务不得不重复造轮子,所以中台的目标是为了解决效率问题,同时降低创新成本。所谓的业务中台就是:通过制定标准和机制,把不确定的业务规则和流程通过工业化...

2019-11-02 15:04:48 83

原创 Cassandra 框架原理

Cassandra没有像BigTable或Hbase那样选择中心控制节点,而选择了无中心的P2P架构,网络中的所有节点都是对等的,它们构成了一个环,节点之间通过P2P协议每秒钟交换一次数据,这样每个节点都拥有其它所有节点的信息,包括位置、状态等。Cassandra的核心组件: Gossip:点对点的通讯协议,用来相互交换节点的位置和状态信息。当一个节点启动时就立即本地存储Goss...

2019-11-01 16:10:17 109

原创 Docker 框架原理详解

一、简介1、了解Docker的前生LXCLXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpace。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与传统虚拟化技术相比,它的优势在于:(1)与宿主机使用同一个内核...

2019-11-01 10:15:51 113

原创 网易云音乐中间件改造

网易云音乐自2013年上线后,业务保持了高速增长。云音乐除了提供好听的音乐外,还留下了我们在乐和人上的美好回忆。本文整理自网易云音乐消息队列负责人林德智在近期Apache Flink&RocketMQ Meetup 上海站的分享,通过该文,您将了解到: 网易云音乐消息队列改造背景 网易云音乐业务对消息队列要求 网易云音乐消息队列架构设计 网易云音乐消息...

2019-10-29 17:08:50 48

原创 12306抢票系统详解

12306 抢票,极限并发带来的思考:虽然现在大多数情况下都能订到票,但是放票瞬间即无票的场景,相信大家都深有体会。尤其是春节期间,大家不仅使用 12306,还会考虑“智行”和其他的抢票软件,全国上下几亿人在这段时间都在抢票。“12306 服务”承受着这个世界上任何秒杀系统都无法超越的 QPS,上百万的并发再正常不过了!笔者专门研究了一下“12306”的服务端架构,学习到了其系统设...

2019-10-28 10:53:27 1721 1

原创 秒杀系统的详解

今天我们一起来看看,一套秒杀系统在架构设计上需要有哪些考量: 秒杀场景的特点 系统隔离的设计思路 客户端设计 代理层设计 应用层设计 数据库设计 压力测试 总结 秒杀场景的特点:秒杀场景是电商网站定期举办的活动,这个活动有明确的开始和结束时间,而且参与互动的商品是事先定义好了,参与秒杀商品的个数也是有限制的。...

2019-10-26 01:04:17 43

原创 mysql 性能优化总结

1、数据类型优化字段是用来存放数据的单元,设计好字段是设计数据库的第一步,同样会影响到系统的性能。设计字段有一个基本的原则,保小不保大,也就是能够用字节少的字段就不用字节数大的字段,目的是为了节省空间,提高查询效率。更小的字段,占用更小的磁盘空间,内存空间,更小的 IO 消耗。下面针对使用场景,说一些字段类型选取的经验,供大家参考。数值类型手机号:通常我们在存储手机号的时...

2019-10-25 23:48:56 60

原创 分布式事务

什么叫分布式事务?高可用是指系统无中断的执行功能的能力,代表了系统的可用程度,是进行系统设计时必须要遵守的准则之一。而高可用的实现方案,无外乎就是冗余,就存储的高可用而言,问题不在于如何进行数据备份,而在于如何规避数据不一致对业务造成的影响。对于分布式系统而言,要保证分布式系统中的数据一致性就需要一种方案,可以保证数据在子系统中始终保持一致,避免业务出现问题。这种实现方案就叫做分布...

2019-10-23 10:23:19 47

原创 Flink metrics的几种方式总结

下面所有的配置都是在flink-conf.yaml 中配置flink 有以下几种metrics reporter :1、JMX (org.apache.flink.metrics.jmx.JMXReporter)参数: port : 连接JMX listens的端口,如果有多个taskmanger在同一台机器,端口可以设置成范围9250-9260配置: ...

2019-10-18 17:40:00 1109

原创 kafka系列:kafka各组件详解

1、producer生产者1.1 写入方式producer 采用 push 模式将消息发布到 broker,每条消息都被 append 到 patition 中,属于顺序写磁盘(顺序写磁盘效率比随机写内存要高,保障 kafka 吞吐率)。1.2 消息路由producer 发送消息到 broker 时,会根据分区算法选择将其存储到哪一个 partition。其路...

2019-10-18 17:09:14 179

原创 Flink job-cluster on k8s

https://github.com/apache/flink/tree/release-1.9/flink-container/dockerhttps://github.com/apache/flink/tree/release-1.9/flink-container/kubernetes1、build images(1) define the version of flin...

2019-10-18 17:07:35 274

原创 Flink | EventTime 和Watermark

​通常情况下,由于网络原因或系统等外部因素,事件数据往往不能及时传输到Flink系统中,导致数据乱序到达或延迟到达,因此需要一种机制能够控制数据处理的过程和进度。水平线(watermarks)机制,它能够衡量数据处理进度,保证事件数据到达Flink系统,或者在乱序和延迟时,也能够像预期一样计算出正确并且连续的结果。Flink会将用读取进去系统的最新事件时间减去固定的时间间隔作为w...

2019-08-10 20:52:49 125

提示
确定要删除当前文章?
取消 删除