Kafka

Kafka03--Kafka消费者使用方式

…衆ロ難τιáo~ 提交于 2020-11-24 14:26:22
前言   与生产者客户端一样,消费者端也由最初的scala版本过渡到现在的Java版本。   正常的消费者逻辑需要以下4个步骤: KafkaConsumer的客户端参数配置和对应实例; 订阅主题 拉取消息并消费 提交消费者位移 关闭消费者实例   消费者客户端比较特殊的一点是加入了消费者组的概念; KafkaConsumer消费者组   默认情况下: 一个消费者组中的每个消费者会分配到不同的分区; 一个topic中的消息只会被一个消费者组 消费一次 ; 若一个组中的消费者数量多于partition数量,会出现消费者不会被分配分区,也就消费不到消息(如下c7消费不到数据); KafkaConsumer使用示例 1 public class KafkaConsumerAnalysis { 2 public static final String brokerList = "10.26.28.99:9092" ; 3 public static final String topic = "demo" ; 4 public static final String groupId = "group.demo" ; 5 public static final AtomicBoolean isRunning = new AtomicBoolean( true ); 6 7 public

一个失败的微服务项目

只愿长相守 提交于 2020-11-24 02:21:38
一个失败的微服务项目,这是我项目的总结.失败的主要原因是对微服务的滥用,本文将总结微服务在本项目中暴露出的缺点 项目简介 这是一个休息游戏项目,主线是喂养一只可爱的小狗, 通过玩内置小游戏,或者做任务积累狗粮.在整个过程中会随机掉落红包, 红包可以之间兑换少量RMB,游戏以用户点击广告作为主要收入, 用户转化是另一部分收入 项目概况 项目分游戏端和管理端 游戏端: 游戏大厅(主界面,包含:玩家信息\邀请\站内信\成长记录\签到等) 排行榜 幸运大盘 成长任务 多款小游戏 管理端: 基础权限管理 用户管理 提现 报表 版本管理 广告与渠道 维护 人员配置 策划 x2 美术 x3 音效 x1 游戏前端(Cocos) x3 游戏后端(java) x2 管理前端(vue) x2 管理后端(java) x4 测试 x2 运维 x2 运营 x1 后端架构 spring-cloud Hoxton.SR3作为微服务框架 nacos 做服务注册发现以及配置中心 swagger2 生成doc redis 做缓存 mysql mybatis + mybatis-plus 做持久层 kafka 做消息中间件 jwt 生成token elasticsearch 做报表 每个微服务由两个模块组成,一个模块api接口,一个模块对接口进行实现, api接口用@FeignClient进行注解

欢迎添加博主微信,期待与你一起交流

*爱你&永不变心* 提交于 2020-11-23 21:42:05
你不可能从现在预测到未来,只有回头看时,才会发现事物之间的联系。所以你必须相信,那些生命中的点点滴滴,将会在你未来的生命里以某种方式串联起来。你必须相信一些东西---你的勇气、宿命、生活、因缘、随便什么,它们将给你追寻内心真正所想的自信,带你走出平凡,变得与众不同。 -- From乔布斯在斯坦福毕业典礼上的演讲 从今年3月份开通公众号,到现在已经更新了 50 +篇原创文章。虽然平时工作很忙,但是也会抽出时间每周发1~2篇原创分享文章。目前的文章主要集中在大数据技术方面(如:Spark、Flink、Hive、Kafka、ClickHouse等),后期会分享一些工作的点滴和读书感悟。 由于新申请的公众号不具备留言功能,很多粉丝会通过后台私信的方式联系我,有时候会不能及时回复(公众号私信超过48小时,不能给对方发消息)。大家可以添加我的微信: xibei_2011 ,平时有什么事情可以给我发消息,有时间我会一一回复,期待与你一起交流。 扫描二维码添加我微信 期待与你一起交流 往期文章回顾 基于Canal与Flink实现数据实时增量同步(一) CDH集群之YARN性能调优 Flink运行架构剖析 Flink的状态后端(StateBackends) 基于Canal与Flink实现数据实时增量同步(二) Flink的八种分区策略源码解读 经典Hive-SQL面试题 Flink1

阿里首发“架构技术攻略”限时开源!程序员一定要尽快确立发展方向和路线!从基础到源码,让你在大厂一站到底!

与世无争的帅哥 提交于 2020-11-23 20:44:39
前言 作为一名程序员,尽早确定自己的发展方向和路线是非常重要的,架构师则是其中的方向之一。很多程序员,奋斗大半辈子,是为了让自己成为一名合格且优秀的架构师,但是成为架构师并非一件易事,它对于技术方面的要求也是非常高的。 当然,大厂架构师更为值钱,那么想要进大厂做架构师,需要学习哪些技术呢?可能现在的你还比较迷茫,但实际上现在市面上有不少现成的架构技术路线,跟着路线学习起来则是非常容易的!今天要分享的,是看着一般,但读过之后会觉得真香的“架构技术攻略”,这套攻略由阿里技术官亲自推荐,从基础到源码,让你在大厂一站到底! 这套“Java架构技术攻略”包含A、B、C三个主题: A:性能直线提升架构技术 B:高效存储让项目起飞 C:设计思想解读开源框架 文章内容有限,不可能将这套攻略全部写出来,完整pdf版的架构攻略,扫下方二维码或添加下助理vx:YDT737 即可免费领取。 A.性能直线提升架构技术 1.Zookeeper 基础(入门+安装及应用+指令速解) 进阶(原生客户端解析+zkclient应用+curtor快速开发) 实战(集群选举+分布式) zk高级技能(底层+拜占庭将军问题+Paxos+解读Raft算法) 2.Nginx 基础(安装及使用+实现Nginx分流) 进阶(Nginx进程模型及配置详解+location规则+rewrite解析) 实战(动静分离,反向代理及跨域

3年Java开发经验从阿里、美团、滴滴面试回来,想和Java程序员谈一谈感悟及面经

♀尐吖头ヾ 提交于 2020-11-23 09:55:28
最近面试了阿里、京东、美团、滴滴等大型互联网公司,最终收到了美团offer,这次面试过后,我把面试过的公司的面试题做了一个整理。这篇文章是我凭回忆记录的,面试题没有顺序,不分先后,接下来公布我去阿里、京东、美团等一线互联网公司的面试题: 一、阿里巴巴面试   1、开发中Java用得比较多的数据结构有哪些?   2、谈谈你对HashMap的理解,底层原理的基本实现,HashMap怎么解决碰撞问题的?   这些数据结构中是线程安全的吗?假如你回答HashMap是线程安全的,接着问有没有线程安全的map,接下来问conurren包。   3、对JVM熟不熟悉?简单说说类加载过程,里面执行的哪些操作?问了GC和内存管理,平时在tomect里面有没有进行过相关的配置。   4、说一下http协议、get和post的基本区别,接着问tcp/ip协议,三次握手,窗口滑动机制。   5、开发中用了哪些数据库?回答mysql;储存引擎有哪些?然后问了我悲观锁和乐观锁问题使用场景、分布式集群实现的原理。   6、springmvc和mybatis的工作原理,有没有看过底层源码? 二、京东金融面试   1、Dubbo超时重试;Dubbo超时时间设置   2、如何保障请求执行顺序   3、分布式事物与分布式锁(扣款不要出现负数)   4、分布式session设置   5、执行某操作,前50次成功

重要,知识点:InnoDB的插入缓冲

▼魔方 西西 提交于 2020-11-22 21:01:24
InnoDB引擎有几个重点特性,为其带来了更好的性能和可靠性: 插入缓冲(Insert Buffer) 两次写(Double Write) 自适应哈希索引(Adaptive Hash Index) 异步IO(Async IO) 刷新邻接页(Flush Neighbor Page) 今天我们的主题就是 插入缓冲(Insert Buffer) ,由于InnoDB引擎底层数据存储结构式B+树,而对于索引我们又有聚集索引和非聚集索引。 在进行数据插入时必然会引起索引的变化,聚集索引不必说,一般都是递增有序的。而非聚集索引就不一定是什么数据了,其离散性导致了在插入时结构的不断变化,从而导致插入性能降低。 所以为了解决非聚集索引插入性能的问题,InnoDB引擎 创造了Insert Buffer。 Insert Buffer 的存储 看到上图,可能大家会认为Insert Buffer 就是InnoDB 缓冲池的一个组成部分。 重点 :其实对也不对,InnoDB 缓冲池确实包含了Insert Buffer的信息,但Insert Buffer 其实和数据页一样,也是物理存在的(以B+树的形式存在共享表空间中)。 Insert Buffer 的作用 先说几个点: 一张表只能有一个主键索引,那是因为其物理存储是一个B+树。(别忘了聚集索引叶子节点存储的数据,而数据只有一份)

一位8年Java工作经验的高级架构师的学习路线图谱

允我心安 提交于 2020-11-22 09:52:15
从小白级到工作8年需要掌握的技术栈大概如下: 0-1年入门: Java基础复盘(面向对象+Java的超类+Java的反射机制+异常处理+集合+泛型+基础IO操作+多线程+网络编程+JDK新特性) Web编程初探(Servlet+MySQL数据库+商品管理系统实战) SSM从入门到精通(Spring+SpringMVC+Mybatis+商品管理系统实战-SSM版+Git+Maven) SpringBoot快速上手(SpringBoot+基于SpringBoot的商品管理系统实战) 零距离互联网项目实战(Linux+Redis+双十一秒杀实战系统) 1-3年高工: 并发编程进阶(并发工具类实战+CAS+显示锁解析+线程池内部机制+性能优化) JVM深度剖析(理解运行时数据区+堆外内存解读+JDK+内存泄漏问题排查+Arthas+GC算法和垃圾回收器+类加载机制等) MySQL深度进阶 深入Tomcat底层(线程模型+性能调优) 3-5年资深: 数据库(调优+事务+锁+集群+主从+缓存等) Linux(命令+生产环境+日志+Nginx等) 中间件&分布式(dubbo+MQ/kafka、ElasticSearch、SpringCloud等组件) 5-8年架构: 开源框架(Spring5源码+SpringMVC源码+Mybatis源码) 分布式架构(Zk实战+RabbitMQ

拼多多四面(Java岗):多线程+算法+网络+MySQL+Redis+分布式

心已入冬 提交于 2020-11-21 12:36:38
一面 线程池由哪些组件组成,有哪些线程池,分别怎么使用,以及拒绝策略有哪些 写一题算法,层次遍历树并输出每层的层级 写一道题,二叉树的后序遍历,非递归算法。 什么时候多线程会发生死锁,写一个例子 说一说jdk1.8中,对hashMap的优化,对concurrentHashMap的优化 如何解决hash冲突的,以及如果冲突了,怎么在hash表中找到目标值 有1000个数据存在hashmap中,实际的数量是多少,考虑负载因子和扩容 常见的RPC有哪些?对应的区别和性能比较? 操作系统的用户态和核心态切换条件以及为什么要切换 线程间的通信方式,异步队列,消息延迟获取 二面 MySQL的主从复制怎么做 MySQL的索引,使用B+树索引的好处 MySQL性能查看以及如何优化 Redis是怎么做缓存的 Redis的持久化操作 如何利用redis处理热点数据 TCP三次握手的过程,如果没有第三次握手有什么问题。 分布式锁怎么实现 三面 cap了解么,分别指什么 网络编程nio和netty相关,netty的线程模型,零拷贝实现 Redis是单线程还是多线程?Redis的分布式集群怎么做? 分布式消息队列有哪些(Kafka等)?有使用过哪些?具体应用在什么场景? 负载均衡怎么做的呢,为什么这么做,了解过集群雪崩么。 谈谈高并发场景下削峰,限流的实现? 四面(HR) 为什么跳槽? 期望的薪资是多少?

分布式之MQ复习精讲

馋奶兔 提交于 2020-11-21 06:21:32
点击上方 蓝色字体 ,关注我们 作者:孤独烟 出处: http://rjzheng.cnblogs.com/ 声明:本文版权归作者和博客园共有) 引言 为什么写这篇文章? 博主有两位朋友分别是小A和小B: 1.小A,工作于传统软件行业(某社保局的软件外包公司),每天工作内容就是和产品聊聊需求,改改业务逻辑。再不然就是和运营聊聊天,写几个SQL,生成下报表。又或者接到客服的通知,某某功能故障了,改改数据,然后下班部署上线。每天过的都是这种生活,技术零成长。 2.小B,工作于某国企,虽然能接触到一些中间件技术。然而,他只会订阅/发布消息。通俗点说,就是调调API。对为什么使用这些中间件啊?如何保证高可用啊?没有充分的认识。 庆幸的是两位朋友都很有上进心,于是博主写这篇文章,帮助他们复习一下关于消息队列中间件这块的要点 复习要点 本文大概围绕如下几点进行阐述: 1.为什么使用消息队列? 2.使用消息队列有什么缺点? 3.消息队列如何选型? 4.如何保证消息队列是高可用的? 5.如何保证消息不被重复消费? 6.如何保证消费的可靠性传输? 7.如何保证消息的顺序性? 我们围绕以上七点进行阐述。需要说明一下,本文不是《消息队列从入门到精通》这种课程,因此只是提供一个复习思路,而不是去教你们怎么调用消息队列的API。建议对消息队列不了解的人,去找点消息队列的博客看看,再看本文,收获更大 正文 1

JAVA实现延时过期MAP 支持自定义过期触发事件

旧巷老猫 提交于 2020-11-21 04:10:45
如题,直接上代码: 1 import java.util.Iterator; 2 import java.util.concurrent.ConcurrentHashMap; 3 import java.util.concurrent.TimeUnit; 4 5 import org.slf4j.Logger; 6 import org.slf4j.LoggerFactory; 7 8 /** 9 * 实现延时过期MAP集合 支持自定义过期触发事件 10 * 11 * @ClassName: BaseExpireMap 12 * @Description: TODO 13 * @author : wangs 14 * @date: 2017-12-25 上午9:59:04 15 * @param <K> 16 * @param <V> 17 */ 18 public abstract class BaseExpireMap<K, V> { 19 protected static final Logger logger = LoggerFactory.getLogger(BaseExpireMap. class ); 20 private long expTime = 0L ; 21 private TimeUnit unit = null ; 22 /** 23 *