Kafka

B站疯传、GitHub标星80k!阿里限量“Java架构技术提升笔记”,堪称惊艳!

本秂侑毒 提交于 2020-12-04 11:29:47
前言 “马云”,中国首富之一,提起马云和淘宝大家肯定首先想到的就是“阿里巴巴”,Alibaba旗下有蚂蚁金服、支付宝、阿里云、阿里软件等等知名子公司,形成了一个庞大的商业帝国。这么庞大的商业帝国除了优秀的管理,技术的重要性肯定少不了的,毕竟Alibaba可以说是突显中国程序员最高水平的典范。 就在前段时间,阿里资深架构师抛出的“Java架构技术提升笔记”,以多维度、全新展示及其超高专业度的突出特点,迅速在B站疯传,且GitHub已标星80k。 知道你们懒得整理,我已经为大家整理好了,如果你想要提升自己的技术,需要完整版的朋友 点击这里 即可快速跳转完全免费领取下载通道! Java架构技术提升笔记(附成长路线图) 一、分布式与微服务架构思维 1.大型互联网架构演进过程( 如何把应用从单机扩展到分布式+大型分布式架构演进过程 ) 2.架构师应具备的分布式知识( SOA架构和微服务架构+分布式架构下的高可用设计+分布式架构下的可伸缩设计+分布式架构下的高性能设计 ) 3.主流分布式架构设计详解( 分布式储存方案.+分布式动静分离方案+分布式搜索引擎方案+分布式应用发布与监控方案+容灾及机房规划方案+系统动态扩容 ) 4.微服务架构( 手把手设计微服务架构+微服务MicroService与SOA+微服务的划分原则+微服务与spring+微服务与springcloudAlibaba ) 二、

事件流如何提高应用程序的扩展性、可靠性和可维护性

北战南征 提交于 2020-12-04 07:35:38
关于事件流处理,在不同的场景中有不同的概念。有人称之为流处理,有人称之为事件溯源或CQRS,还有人称之为“复杂事件处理(Complex Event Processing)”。不管名称是什么,它们的基本原则都是一样的。Martin Kleppmann是Apache Samza的贡献者。在本文中,我们将跟随他的思路深入理解这些概念,以便帮助我们设计更好的系统。 “流处理(stream processing)”源于LinkedIn构建大规模数据系统的经验,并在开源项目Apache Kafka和Apache Samza中实现。Martin以Google Analytics为例具体介绍了这一概念。Google Analytics是一小段JavaScript代码,可以追踪哪个访问者访问了哪个网页。然后,系统管理员可以研究这些数据,并按照时间段、URL等划分这些数据。为了实现这个目的,每次用户访问一个页面时,就需要记录一个事件来反映这个事实。页面访问事件可能是(图1)这样的结构: (图1) 每个事件都是包含上述信息的一个简单不变的事实。它只简单地记录已发生的事情。然后,我们就可以从这些页面访问事件中生成图形仪表板。通常来说,这些事件可以使用(图2)所示的其中一种方式存储: 选项(a):在每个事件进来的时候将其存储,并把它们全部转存到一个大型的数据库、数据仓库或Hadoop集群中。在需要时

Flink关键技术解析与优化实战

北慕城南 提交于 2020-12-03 22:42:42
作者刘建刚老师 刘建刚 快手软件工程师 现就职于快手数据架构部,当前主要工作为快手Flink平台的研发和维护; 曾就职于百度基础架构部。 本次分享主要分为三部分。首先介绍流式计算的基本概念,然后介绍Flink的关键技术,最后讲讲Flink在快手生产实践中的一些应用,包括实时指标计算和快速failover。 一、流式计算的介绍 流式计算的定义: 流式计算主要针对unbounded data(无界数据流)进行实时的计算,将计算结果快速的输出或者修正。 这部分将分为三个小节来介绍: 第一,介绍大数据系统发展史,包括初始的批处理到现在比较成熟的流计算 第二,为大家简单对比下批处理和流处理的区别 第三,介绍流式计算里面的关键问题,这是每个优秀的流式计算引擎所必须面临的问题。 1、大数据系统发展史 上图是2003年到2018年大数据系统的发展史,看看是怎么一步步走到流式计算的。 2003年,Google的MapReduce横空出世,通过经典的Map&Reduce定义和系统容错等保障来方便处理各种大数据。很快就到了Hadoop,被认为是开源版的MapReduce,带动了整个apache开源社区的繁荣。再往后是谷歌的Flume,通过算子连接等pipeline的方式解决了多个MapReduce作业连接处理低效的问题。 流式系统的开始以Storm来介绍。Storm在2011年出现,具备延时短

玩物得志:效率为王!如何构建大数据平台?

空扰寡人 提交于 2020-12-03 11:34:30
2018 年底,玩物得志从 0 开始,搭建技术团队,技术架构快速经历了服务化、平台化等转变。 为了支撑业务的快速发展,玩物得志极少自己造轮子,会大量采用云平台提供的 SaaS、PaaS 服务。比如大数据体系是在阿里云 DataWorks + MaxCompute 框架体系上建设起来。使用了其核心存储、计算等组件,上层的可视化以及业务查询部分,在使用过程中也会有大量的定制化需求,玩物得志在开源方案的基础上进行了一些二次开发。 之所以直接选择云产品搭建研发系统 ,张淼认为对于快速迭代的初创型企业来说,一切效率为王。 如果选择自己去搭建整个链路和基础设施,很难有现在这么快的发展速度。 早期,玩物的数据量比较小,所有业务数据都放在一个大的数据DB 的实例里,所以当时读库或者用订阅binlog方式打造一个分析库,就可以完成日常报表输出工作。跑SQL就足够了,这是数据体量小的时候通用的一个方案。当时没有大数据的概念,都是在Mysql上跑sql脚本,出数据报表,定期给到运营,这就是玩物得志早期的基本的架构。 从玩物得志APP 正式运转起来大概四五个月的时间,电商业务发展很快。2019年,每个月都是指数性增长,然后就发现Mysql查数据查不动了。我们就开始探索新的解决方案来帮助我们实现大数据平台的建设。之前我们更多是业务数据,比较简单,放在DB 里。在我们接入了埋点后,就要去拿日志

致敬最优秀的同行者们

余生颓废 提交于 2020-12-03 07:42:11
做 积 极 的 人 , 越 努 力 越 幸 运 ! 真的非常开心,『中间件兴趣圈』公众号粉丝数正式迈过1W大关,达成一个重要里程碑,笔者感慨真的不容易。 2018年10月19号通过公众号发布第一篇文章,到今天为止,公众号已经发表了145篇原创文章,坚持真的很难,但只要能坚持,就一定会有好的收获,这不,你瞧,1W个人与你一起同行,这成就不可谓不大。 在持续坚持努力下,我出版了《RocketMQ技术内幕》一书,从一家名不经传的小公司顺利跳槽到快递物流头部企业:中通快递,让我能在更高的平台上发光发热,使我深深的认识到: 越努力越幸运,唯有坚持不懈 。希望能用这句话与各位粉丝朋友共勉,相互交流,共同成长。 相信各位读者朋友们也能直观的感受到『中间件兴趣圈』主要发表的文章都比较枯燥,因为大部分都是以源码分析为主,认真读完一篇文章需要极大的耐心,我从后台的统计数据上看到,每篇文章的读完率其平均值在50%左右,这足以说明大家拥有强烈的求知欲望,这里必须有掌声,为各自点个赞吧。与各位优秀的读者同行,是我的一大荣幸,未来继续加油。 『中间件兴趣圈』的定位是记录笔者的学习历程与成长历程,同时也起到驱动笔者去学习,给自己提的要求是尽最大努力保证一周一篇原创文章。 绝不注水、绝不洗稿,这是我的初心也是底线。 『中间件兴趣圈』现阶段主要以源码分析为手段成体系剖析JAVA主流中间件

2015到2020JAVA架构技术演进,阿里架构师到底有多牛逼?

自作多情 提交于 2020-12-02 15:25:58
V1.0拥抱架构师 更仔细架构演进图以及更多学习资料点此免费领取! V2.0拥抱微服务 V3.0拥抱互联网实战 Spring全家桶 更仔细架构演进图以及更多学习资料点此免费领取! Spring框架/Boot框架/微服务 分布式架构 RPC调用/zookeeper/dubbo框架 高并发技术 线程并发/网络技术/缓存技术/消息队列/负载均衡 高性能存储 数据库集群/搜狗引擎/Mongo 更仔细架构演进图以及更多学习资料点此免费领取! 性能优化 SQL优化/JVM性能优化/WEB程序优化 容器化技术 Docker/K8S容器编排 DevOps Git/Maven/Jenkins 大型互联网项目实战 干货视频,高级架构师最新java、spring、Redis、JVM、分布式、高并发。里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring,MyBatis,Netty源码分析,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点高级进阶干货的免费直播讲解。 更仔细架构演进图以及更多学习资料点此免费领取! 精选JAVA 高并发分布式架构课程视频 高可用、高并发、高性能及分布式、Jvm性能调优、Spring,MyBatis,Netty源码分析,Redis,Kafka,Mysql,Zookeeper,Tomcat

二本学历,技术面都答对了,最终25K入职字节跳动

喜夏-厌秋 提交于 2020-12-02 15:23:58
前言 我的个人背景非常简单,也可以说丝毫没有亮点。 学历普通,计算机专业二本毕业,毕业后出来就一直在一家小公司,岁月如梭细,算了下至今从事Java开发已经5年了,也crud了五年,每天就是抄代码,毫无新意,甚至一度的怀疑人生。 其实很久之前就已经对自己不满了,每次都在想鼓起勇气想去打破困境,去改变自己,然而因为游戏因为玩耍一次又一次的破功;直到这次疫情,强有力的给了我当头一棒。是的,我失业了。这时候才真正的体会到什么叫做人无远虑,必有近忧。 失业之后疯狂的去找面经,去海投简历(都是一些小的不能再小的公司有回复),去找老朋友,去找同学;但是在疫情这么严重的当下根本不会找到合适的工作的,我也又冷静下来了,准备好好的调整下心态,整理下自己; 在这期间也七七八八的接到一些电话面试;这时候给了我个新的启示——可以去投一些小公司的简历,去面试扫盲,看看哪些东西不会,欠缺哪些知识,然后慢慢的做面试复盘。并且通过这些面试给自己查漏补缺; 幸运女神往往会眷顾努力的人,所以当好运降临到我头上,我并不诧异,目前拿到了字节跳动25K的offer,下文也不说废话,主要分享我这次“面试经历”和“这段时间的学习方法”,希望能帮助到你们。 字节一面 1、自我介绍; 2、介绍自己做的项目; 3、说一说项目中最有难度和记忆最深刻的项目; 4、说说Hashmap 原理; 5、底层红黑树是什么? 6、ArrayList

拼多多内推3面(Java):B-Tree索引+AQS+GC+分布式+集群+数据拆分

霸气de小男生 提交于 2020-12-02 15:16:54
一面 osi七层网络模型,五层网络模型,每次层分别有哪些协议 死锁产生的条件, 以及如何避免死锁,银行家算法,产生死锁后如何解决 如何判断链表有环 虚拟机类加载机制,双亲委派模型,以及为什么要实现双亲委派模型 虚拟机调优参数 拆箱装箱的原理 JVM垃圾回收算法 CMS G1 hashset和hashmap的区别,haspmap的底层实现put操作,扩容机制,currenthashmap如何解决线程安全,1.7版本以及1.8版本的不同 md5加密的原理 有多少种方法可以让线程阻塞,能说多少说多少 synchronized和reetrantlock锁 AQS同步器框架,countdowmlatch,cyclebarrier,semaphore,读写锁 二面 B-Tree索引,myisam和innodb中索引的区别 BIO和NIO的应用场景 讲讲threadlocal 数据库隔离级别,每层级别分别用什么方法实现,三级封锁协议,共享锁排它锁,mvcc多版本并发控制协议,间隙锁 数据库索引?B+树?为什么要建索引?什么样的字段需要建索引,建索引的时候一般考虑什么?索引会不会使插入、删除作效率变低,怎么解决? 数据库表怎么设计的?数据库范式?设计的过程中需要注意什么? 共享锁与非共享锁、一个事务锁住了一条数据,另一个事务能查吗? Spring bean的生命周期?默认创建的模式是什么

Kafka怎么保证数据不丢失?

邮差的信 提交于 2020-12-01 21:33:51
Kafka怎么保证数据不丢失? 这个问题要从3个方面来保证数据不丢失:生产者、服务端、消费者。 01 producer 生产端是如何保证数据不丢失的 1.ack的配置策略 acks = all (或-1) 生产者在发送消息之后,需要等待ISR中所有的副本都成功写入消息之后才能够收到来自服务端的成功响应,在配置环境相同的情况下此种配置可以达到最强的可靠性。 即:在发送消息时,需要leader 向fllow 同步完数据之后,也就是ISR队列中所有的broker全部保存完这条消息后,才会向ack发送消息,表示发送成功。 2.retries的配置策略 在kafka中错误分为2种,一种是可恢复的,另一种是不可恢复的。 可恢复性的错误: 如遇到在leader的选举、网络的抖动等这些异常时,如果我们在这个时候 配置的retries大于0 的,也就是可以 进行重试操作 ,那么等到leader选举完成后、网络稳定后,这些异常就会消息,错误也就可以恢复,数据再次重发时就会正常发送到broker端。需要注意retries(重试)之间的时间间隔,以确保在重试时可恢复性错误都已恢复。    不可恢复性的错误: 如:超过了发送消息的最大值(max.request.size)时,这种错误是不可恢复的,如果不做处理,那么数据就会丢失,因此我们需要注意在发生异常时把这些消息写入到DB、缓存本地文件中等等

Kafka的ACK参数-1,0,1分别代表什么含义,如何保证宕机的时候数据不丢失的

吃可爱长大的小学妹 提交于 2020-12-01 10:29:16
这个acks参数在kafka的使用中,是非常核心以及关键的一个参数,决定了很多东西。 Kafka producer有三种ack机制 初始化producer时在config中进行配置; ack等于0: 意味着producer不等待broker同步完成的确认,继续发送下一条(批)信息 提供了最低的延迟。但是最弱的持久性,当服务器发生故障时,就很 可能发生数据丢失 。例如leader已经死亡,producer不知情,还会继续发送消息broker接收不到数据就会数据丢失。 ack等于1(默认): 意味着producer要等待leader成功收到数据并得到确认,才发送下一条message。此选项提供了较好的持久性较低的延迟性。 Partition的Leader死亡, follwer尚未复制,数据就会丢失 。 ack等于-1: 意味着producer得到follwer确认,才发送下一条数据 持久性最好,延时性最差 。 0,1,-1三种机制性能递减,可靠性递增 如何保证宕机的时候数据不丢失? 采用了 多副本冗余的高可用机制。 在kafka集群中,每个Partition都有多个副本,其中一个副本叫做leader,其他的副本叫做follower。 假设一个Topic拆分为了3个Partition,分别是Partition0,Partiton1,Partition2