热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Jafka源码粗略解读之四log及其他

2019独角兽企业重金招聘Python工程师标准这几天琢磨其他的东西,Jafka源码搁置了,对其解读已经失去了兴趣。为了给自己一个交代࿰

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

这几天琢磨其他的东西,Jafka源码搁置了,对其解读已经失去了兴趣。为了给自己一个交代,还是写个结尾系列吧。

log

Log模块并非是log4j一套,而是Jafka的消息持久化系统,当初一扫而过,这么精华的部分竟然没注意到。

不过所谓O(1)的持久化效率而并非多么复杂,其实就是在offset处append而已。这个最重要的部分,现在算是弄清楚了。

剩余部分都没有仔细读过源码,有些是从rockybean的博客中直接看的。

Jafka对NIO这块的使用,相当值得参考和借鉴。不过对一些细节的处理,只有自己真正开发相关功能才能体会,于是决定先搁置了。

关于MetaQ

MetaQ据说是淘宝内部的MQ,在Kafka上做了改进,可以看成跟Jafka同源。clone了一份MetaQ的代码,https://github.com/killme2008/Metamorphosis,粗略看了一下,看得出来是公司级别的开发,并非为开源而生,所以精细程度不如Jafka(指代码级别的技巧),但是各种接口定义要更清晰一点。

找了MetaQ的文档,对于MQ的特性和问题,做了一些总结,好好读了一遍: http://alibaba.github.io/metaq/document/design/design.pdf

有几个东西,确实是实践出真知:

  • 关于MQ的优先级

    MetaQ支持在内存中排序,但是放弃了磁盘系统的排序。

  • 关于重复消费(Exactly And Only Once)

    保证送达,不保证不重复,而在业务中判断重复,消息消费具有幂等性。

MetaQ在消息回溯时,使用了时间做offset。时间真是个好东西,分布式的排序和一致性,靠这个省了好多事。twitter的UUID服务Snowflake也用到了这个玩意,我在做邮件调度的时候也用到了这个东西,实在是好用得很。


转:https://my.oschina.net/flashsword/blog/156624



推荐阅读
  • 利用GitHub热门资源,成功斩获阿里、京东、腾讯三巨头Offer
    Spring框架作为Java生态系统中的重要组成部分,因其强大的功能和灵活的扩展性,被广泛应用于各种规模的企业级应用开发中。本文将通过一份在GitHub上获得极高评价的Spring全家桶文档,探讨如何掌握Spring框架及其相关技术,助力职业发展。 ... [详细]
  • 一面问题:MySQLRedisKafka线程算法mysql知道哪些存储引擎,它们的区别mysql索引在什么情况下会失效mysql在项目中的优化场景&# ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • Kafka 示例项目中 Log4j 的配置与调试
    本文详细介绍了如何在 Kafka 源码中的示例项目配置 Log4j,以确保能够正确记录日志信息,帮助开发者更好地理解和调试代码。 ... [详细]
  • 全面解读Apache Flink的核心架构与优势
    Apache Flink作为大数据处理领域的新兴力量,凭借其独特的流处理能力和高效的批处理性能,迅速获得了广泛的关注。本文旨在深入探讨Flink的关键技术特点及其应用场景,为大数据处理提供新的视角。 ... [详细]
  • Python + Pytest 接口自动化测试中 Token 关联登录的实现方法
    本文将深入探讨 Python 和 Pytest 在接口自动化测试中如何实现 Token 关联登录,内容详尽、逻辑清晰,旨在帮助读者掌握这一关键技能。 ... [详细]
  • Symfony是一个功能强大的PHP框架,以其依赖注入(DI)特性著称。许多流行的PHP框架如Drupal和Laravel的核心组件都基于Symfony构建。本文将详细介绍Symfony的安装方法及其基本使用。 ... [详细]
  • EasyMock实战指南
    本文介绍了如何使用EasyMock进行单元测试,特别是当测试对象的合作者依赖于外部资源或尚未实现时。通过具体的示例,展示了EasyMock在模拟对象行为方面的强大功能。 ... [详细]
  • window下kafka的安装以及测试
    目录一、安装JDK(需要安装依赖javaJDK)二、安装Kafka三、测试参考在Windows系统上安装消息队列kafka一、安装JDKÿ ... [详细]
  • 收割机|篇幅_国内最牛逼的笔记,不接受反驳!!
    收割机|篇幅_国内最牛逼的笔记,不接受反驳!! ... [详细]
  • Log4net是一款由Apache软件基金会开发的强大且灵活的日志记录工具,与Log4j同属一个系列。它支持多种日志记录方式,并能显著提升软件开发的效率。本文将详细介绍如何在ASP.NET Web Forms项目中集成Log4net。 ... [详细]
  • 58同城的Elasticsearch应用与平台构建实践
    本文由58同城高级架构师于伯伟分享,由陈树昌编辑整理,内容源自DataFunTalk。文章探讨了Elasticsearch作为分布式搜索和分析引擎的应用,特别是在58同城的实施案例,包括集群优化、典型应用实例及自动化平台建设等方面。 ... [详细]
  • 本文从数据埋点的设计者视角出发,全面解析数据埋点的技术原理、应用场景及其管理方法,涵盖基础知识、实施策略、数据处理流程等内容。 ... [详细]
  • 历经两个月,他成功斩获阿里巴巴Offer
    经过两个月的努力,一位普通的双非本科毕业生最终成功获得了阿里巴巴的录用通知。 ... [详细]
  • 本文介绍了如何在Java中使用`JCheckBoxMenuItem.setMnemonic()`方法,并提供了多个实际应用的代码示例。 ... [详细]
author-avatar
love灬贪恋猫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有