Azure EventHub快速入门和使用心得
Azure Event Hubs(事件中心)是一个大数据流式数据摄取服务平台,每秒接受数百万事件;
EventHubs 是一个有数据保留期限的缓冲区,类似分布式日志;可缩放的关键在于【分区消费模型】,每分区独立存储数据,被后端独立消费。随着时间推移,事件会逐渐老化,所以分区不会 full.
发送到Eventhub 中的数据可以被 readl-time analytics provider 和后端batch/storage adapters 处理和存储。
为什么要使用EventHubs?
从EventHubs中及时获取、探索数据 相当简单,EventHubs 提供了低延迟的分布式流式处理平台(低延迟、无缝集成Azure内外的数据和分析服务)
EventHubs代表“event管道”的前门,一般被定义为事件摄取器:在事件发布者和事件消费者之间起解耦作用的组件或服务。
特性
- Paas 上全托管
- 支持实时和批处理
- 可缩放
- 丰富的生态
本文主要记录两个重要知识点:Partition, EventHubs Capture
Azure上创建EventHubs命名空间之后,新增EventHubs时要关注以上配置。
Partition Consumer Model
为支持摄取、存储、 实时处理流式数据,EventHub是建立在分区消费模型之上,提高了可用性和并发度;
① 水平扩展事件处理能力,提供了Queue和topic等流式结构不具备的特性(某分区节点下线,其余分区可继续提供 发送和接受能力)
② 可让多进程并发处理流式数据, 并可自行控制处理速度。
③ 支持批量发送事件, 单批次发送不超过1M事件
【是否启用分区】取决于开发者在【数据一致性和可用性之间的平衡思考】
If high availability is most important, do not specify a partition key; in that case events are sent to partitions using the round-robin model described previously.
In many cases, using a partition key is a good choice if event ordering is important. 著名的CAP定理。
EventHubs Capture
Azure EventHubs Capture 是把数据加载到Azure中最快捷的方式,可在使用 EventHubs Capture时 指定 Azure Blob storage account 或者 Azure Data Lake Store account存储数据。
捕获时机: 最上面Capture配置图, 捕获时机支持2种策略:time window 和 size window, 每个分区满足任一策略则触发该分区的捕获动作。
// 文件路径如下,包含命名空间、捕获分区,每个文件以秒命名
{Namespace}/{EventHub}/{PartitionId}/{Year}/{Month}/{Day}/{Hour}/{Minute}/{Second}
Azure EventHubs Capture 开始工作之后,在没有数据的情况下默认会写入空文件,这给后端消费程序提供了稳定的流量预期, 当然也可在创建EventHubs 配置勾选【Do not emit empty files when no events occur during the Capture time window<】
捕获文件格式: avro 是一种简洁快速,携带丰富数据结构的二进制格式
捕获的文件可使用Azure Storage Explorer查看, 注意这里要使用账号登陆Azure中国区, 后面就是 Azure Storage Account的事宜。
最新文章
- java程序转换excel中科学记数法的数据为date类型
- java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@1f303192 rejected from java.util.concurrent.ThreadPoolExecutor@11f7cc04[Terminated, pool size = 0, active threads
- Android中事件传递机制的总结
- IOS学习之路七(使用 Operation 异步运行任务)
- Arduino从基础到实践第三章练习题
- QT学习篇:入门(1)
- SwiftyUserDefaults-封装系统本地化的框架
- 基于FPGA的均值滤波算法实现
- Maple trees(最小覆盖圆)
- HIVE和HADOOP的一些东西
- 浅谈linux静态库、动态库。
- weak_ptr解决shared_ptr环状引用所引起的内存泄漏[转]
- Fashion-MNIST:A MNIST-like fashion product database. Benchmark
- arrow function and bind
- OpenCV-Python教程8-图像混合
- Hdu2040 亲和数
- Java基础-集合(12)
- RDMBorderedButton
- 让boost.variant支持lambda表达式访问
- mysql的搭建
热门文章
- 安装vue-cli 3.
- spring5 源码深度解析----- AOP的使用及AOP自定义标签
- [技术栈]CRC校验原理及C#代码实现CRC16、CRC32计算FCS校验码
- 4款黑科技级别的宝藏APP,能够轻松满足你的多种需求,请低调收藏
- java-整型数值 用 16进制转换、2进制转换-Integer.toHexString
- freemarker常用属性
- 【ADO.NET基础】加密方法公共类
- Rxjs 操作符
- 深入Dapper.NET源码 (文长)
- Go语言入门教程(十)之函数