专注java技术,热爱长跑和阅读开源代码 邮箱 lebron374@163.com
概述 这篇博文的起源在于阿里的公众号里面有一篇文章讲菜鸟的同学在造一个关于时间轮定时器的文章,然后在网上搜索资料发现其实在好多开源的软件里面已经有了,最后选择了kafka里面的定时器实现来加深自己的理解。
ava工程中使用freemarker例子 Java之利用Freemarker模板引擎实现代码生成器,提高效率 Java模版引擎:jsp、freemarker、velocity区别 Java模版引擎之Freemarker篇 Java 模板引擎总结 ...
参考问题汇总 centos安装tensorFlow版本的时候会遇到的一些问题,参考这个链接:https://blog.csdn.net/luoyexuge/article/details/78321220。
概述 这篇博文主要是想讲清楚rocketMq中commitLog的存储格式和存储过程的,在整理文章的过程中发现有篇来自CSDN的文章的有一张图片画的非常完整,就套用过来了,不过在博文的末尾把参考文章的地址列出来了。
转载自:线程安全的CopyOnWriteArrayList介绍 证明CopyOnWriteArrayList是线程安全的 先写一段代码证明CopyOnWriteArrayList确实是线程安全的。
概述 最近有人问我知道rocketMq是怎么查询消息的,我发现我貌似回答不上来,所以抽空就把这块内容补充一下,主要是讲清楚根据key查询消息和根据msgId查询消息两块内容。
概述 这篇文章的目的主要是为了讲清楚rocketMq消息堆积的概念,我印象中的rocketMq的消息堆积应该分为两层,一层是broker中实际写入消息量和consumeQueue已经消费位移的偏差,另外一层consumer端本身已经拉取消息的堆积,而今天要讲的正是后者。
概述 这篇文章主要是把push模式下consumer批量拉取消息数量单此最多32条的问题,这个问题是和组内的一个同事一起排查问题的时候得出的结论,我同事负责发现这个问题,我负责定位这个问题。
概述 本篇文章主要是想讲解清楚dubbo的负载均衡策略,其中文章的内容部分共享自网络,部分来自自己的整理,目的还是跟以往一样,将一个简单的问题讲解清楚。
开源的分布式配置管理工具现在有360的QConf、百度的disconf、阿里的Diamond,不过目前看前两者似乎更加完善。 360的Qconf 官网 wiki 百度的DisConf 官网 wiki 阿里的Di...
问题的核心点在于多线程进行扩容的时候每个线程会生成一个新的hashtab对象,线程A生成新的hashtab以后,线程B在线程A新生成的hastab上进行操作会造成死循环。
概述 其实一直想写一篇rocketMq和kafka在架构设计上的差别,但是一直有个问题没搞明白所以迟迟没动手,今天无意中听人点播了一下似乎明白了这个问题,所以就有了这篇对比。
http://grepcode.com/file/repo1.maven.org/maven2/org.javassist/javassist/3.14.
概述 这篇文章是以同事在实际工作中遇到的问题作为分析的切入点,加深自己对mq的掌握,践行“干中学”的团队理念。 当自己差不多把基本概念都掌握的差不多的时候,必须需要实际的案例或者实践来提深自己的深度,这个时候just do it 变得很重要,所以我喜欢不停的被人挑战,截止目前帮人解答的问题包括:client端消息堆积问题、批量消息拉取问题中遇到的神奇的数字32、以及本篇的tag不一致造成的假象,也就说会有3篇文章输出。
概述 这篇文章的目的是为了讲清楚canal的HA机制,至于什么是HA机制直接套用canal官网原话,因为我自认为没法描述的更好。而我直接从代码的角度去分析如何实现HA的,其实也就是zookeeper的分布式锁的使用方法。
概述 要理解canal数据消费过程,必须要知道canal的server端是如何响应client端的请求的,还记得我们之前说过的么,canal的server其实分为对内(CanalServerWithEmbedded)和对外的(CanalServerWithNetty),由CanalServerWithNetty负责响应client端请求,而后由CanalServerWithEmbedded负责进行处理。
概述 本篇主要是为了讲清楚canal是如何启动的,从文章内容结构来说主要分为流程图、时序图、核心源码三大块。理解一个东西宏观上一定要理清楚层次,然后细节再去追求融会贯通。
前言 首先,这个文章系列主要是讲canal的,毫无疑问,对吧。那么在开始阅读这个系列之前,我希望真正有兴趣的同学一定要先去阅读canal的官方文档,没有什么比这个更权威了。
清明抽空看了下netty部分的知识点,总结一下发布在简书上,netty本身涵盖的知识点比较多,一篇文章也讲不完那么多,这篇文章主要是普及 netty的Reactor模型、server初始化、client初始化三块内容,当然也会将寻找的参考资料一并贴出来,其实互联网已经很多人对netty做了大量的研究。
转自:https://www.cnblogs.com/ygj0930/p/6542259.html
这篇文章其实主要是想要讲清楚一个概念,就是Runable和Callable的区别,以及当它们和FutureTask、ExecutorService一起执行的原理。
ExecutorService] (https://docs.oracle.com/javase/8/docs/api/java/util/concurrent /ExecutorService.html)这个接口从Java 5开始就已经存在了。
首先第一眼看到JUC是不是很惊喜很意外,没错我第一次看到别人写JUC这个缩写我也是同样的反应,JUC全称为java.util.concurrent包,基本上java当中多线程必须会面对的。
本章主要需要讲清楚两个概念,第一个是slave主动和master同步,第二个是master主动和slave同步。而且我保证这是唯一一篇能够把这两个过程讲清楚的文章,至少在这篇文章之前我找了很多文章,没有一篇文章将整个过程合起来讲解清楚的,说明还是花了时间在里面的。
事务消息介绍 rocketMq在4.x版本里面的事务消息功能似乎不是完整的,在阅读的源码过程中发现只有其实宏观上看可以区分为两个阶段 阶段一:prepare阶段,该阶段主要发一个消息到rocketMq,但是该消息只存储在commitLog当中,在consumeQueue中不可见。
在rocketMq的消息体系中,很重要的一个消息体系是延迟消息,以前需要定时去实现的任务现在有rocketMq自身帮忙解决了,这篇文章主要是讲解清楚延迟消息的实现细节,延迟消息的是细节,延迟消息的实现细节,重要的事情说3遍。
broker的消息存储做了那些事 rocketMq的broker消息存储主要包括3个部分,分别commitLog的存储,consumeQueue的存储,index的存储,这章分享会把这三个过程分解清楚,同时会对里面涉及的存储位置的偏移量着重讲解清楚。
broker在整个rocketMq系统中是一个很重要的消息存储模块,保存了以下所有信息。 1、所有的消息都保存在broker当中 2、所有consumer的消费偏移量保存在broker当中 3、所有consumer的订阅关系保存...
rocketMq消费过程包括两种,分别是并发消费和有序消费,每个消费方式都可以单独拿出来进行分享,这篇文章单独用来分析串行消费问题。 由于串行消费和并行消费的大体逻辑都是相同的,所以建议先看rocketMq - 并发消费过程文章,本章只会针对不同的地方进行说明。
rocketMq消费过程包括两种,分别是并发消费和有序消费,每个消费方式都可以单独拿出来进行分享,这篇文章单独用来分析并发消费问题。 并发消费需要理解的几个核心点:并发消费的消息拉取,并发消费的消息重试,并发消息的ack机制,消费进度的持久化,这篇分享会就这几个问题分解展开。
本章主要讲解Rebalance在consumer端的作用,如果要理解consumer的逻辑,就必须要知道在consumer端有Rebalance这个服务,没有Rebalance也就没有consumer的消息拉取。
说到rocketMq的consumer,该篇文章特指pushConsumer,pullConsumer在后续文章中在分享。 提到consumer,需要搞清楚几个核心问题,分别是consumer的初始化过程做了哪些事情,消息是如何消费,consumer如何动态平衡的,整个逻辑还是比较绕的,其中这章节主要会讲清楚两个事情,1、初始化过程中client做了哪些事情;2、consumer如何动态平衡拉取任务,具体的任务消费会由额外的一章进行讲解。
producer介绍 producer在rocketMq扮演的角色是消息的发送过程,其实宏观上来讲其实就包括两大块,分别是消息的发送以及一堆定时任务。 producer在发送消息过程中涉及到发送队列的选择(topic、broker、queue),所以只要在整个发送过程中理清楚这几者之间的关系,就能理解整个发送过程,当然其中包括 非严格顺序消息、顺序消息、事务消息。
Topic可以理解为在rocketMq体系当中作为一个逻辑消息组织形式,一般情况下一类业务消息会申请一个topic来实现业务之间隔离。 Topic的存储 Topic的实际存储模型 说明: 该图分享自: RocketMQ概念模型 Topic是一个逻辑上的概念,实际上在每个broker上以queue的形式保存,也就是说每个topic在broker上会划分成几个逻辑队列,每个逻辑队列保存一部分消息数据,但是保存的消息数据实际上不是真正的消息数据,而是指向commit log的消息索引。
namesrv的作用 namesrv的定位是作为注册中心,保存broker节点的路由信息,保存一些简单的k/v信息。 namesrv支持集群模式,但是每个namesrv之间相互独立不进行任何通信,它的多点容灾通过producer/consumer在访问namesrv的时候轮询获取信息(当前节点访问失败就转向下一个)。
rocketMq官网 http://rocketmq.apache.org/ rocketMq逻辑概念介绍 rocketMq逻辑图 备注: 改图片分享自李占卫的网上家园 说明: 在rocketMq的中核心4组件为namesrv、broker、consumer、producer。
转自:rocketmq总结 转自:rocketMq分析系列 转自:RocketMq学习使用总结
转自:Spark下Yarn-Cluster和Yarn-Client的区别 0 首先注意的概念 ResourceManager:是集群所有应用程序的资源管理器,能够管理集群的计算资源并为每个Application分配,它是一个纯粹的调度器。
转自:http://blog.csdn.net/column/details/13153.html 【Hadoop入门学习系列之一】Ubuntu下安装Hadoop(单机模式+伪分布模式) 【Hadoop入门学习系列之一】Ubuntu下安装Hadoop(...
梳理一下Spark中关于并发度涉及的几个概念File,Block,Split,Task,Partition,RDD以及节点数、Executor数、core数目的关系。
转自:使用 Ambari 安装 Hadoop 集群
转自:hadoop2.7 动态新增节点和删除节点 转自:spark集群动态增加worker节点 hadoop安装过程中包括yarn的节点,hadoop有多个节点,spark也是多个节点,也区分master和slave ...
转自:大数据下基于Tensorflow框架的深度学习示例教程 转自:基于Hadoop分布式集群YARN模式下的TensorFlowOnSpark平台搭建 转自:TensorFlow遇上Spark
转自:centos完美搭建redis3.0集群并附测试 转自:Redis3.0集群完全版(数据迁移问题) 转自:redis3.0 运维(动态增加、删除、重新分配节点) 转自:Redis 3.
转自:http://blog.csdn.net/blueboz/article/details/54808915 转自:https://www.cnblogs.
转自:https://my.oschina.net/itblog/blog/206481 转自:http://blog.csdn.net/u012881904/article/details/77531689
转自:http://blog.csdn.net/hu2010shuai/article/details/52925545
转自:http://blog.csdn.net/mr253727942/article/details/53464015
转自:https://www.cnblogs.com/zyguo/p/4962425.html
转载:eBay的Elasticsearch性能调优实践