自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 如何阅读阿里系的开源作品的源码

    从大四开始,一直保持着阅读源码的习惯,也一直都从事中间件相关领域的产品开发,对于如何阅读源码和如何快速选型也有自己的心得于体会。     下面着重讲讲如何阅读 RocketMQ 的源码。首先,我们需要知道 RocketMQ 是啥东西?消息中间件,仅仅是这样还不够的呢?阿里很多中间件产品都有自己的概念,我...

2018-08-04 16:37:03 637

原创 windows10 安装 Linux

参考的网站: http://jingyan.baidu.com/article/5552ef47ef0b87518ffbc935.html但这里有个问题了:在 windows 10 内部安装了 Linux ,怎么样才用 root 权限呢?哈哈!正确的打开姿势如下: 1、非root 用户       在 windows10 中,选择  <命令行输入符(c)> ,输入 bash 。进入 linux

2016-12-17 11:50:53 957

原创 数据同步canal 疑点——内存

canal 内存实现的方式是环形数组,这个是非常高效的,可以减少内存分配,在堆栈中分配内存挺耗时间的。何况,如果不使用环形数组的话的,消息有点折扣,很多开源的项目有实现了类似的环形数组。        在公司的某一段时间,在日常批量更改时间,发现 canal 挂掉了,当初得到的原因是:内存消耗完毕,被 Linux 干掉了 canal 进程了。可以在 /var/logs 目录下,找找相应的文件就知道

2016-09-11 16:55:53 3655 2

原创 RocketMQ 的基础与规范

在公司里边,负责消息中间件这块工作,也进行了内部知识的交流。但效果不太明显呀!今天把一些 Rocketmq 的重要的知识点整理出来!Producer 消息生产者,负责产生消息,一般由业务系统负责产生消息。Consumer 消息消费者,负责消费消息,一般是后台系统负责异步消费。拉取后的消息,是放在线程池里面的。Pull Consumer Consumer 的一种,应用通常竹筒调用

2016-08-25 21:51:41 3963

原创 canal 数据同步的一个重要点

公司里边使用了 canal 这个开源产品,基于 mysql binlog 日志来抓取数据库的变更。然后把变更的数据通过 Rocketmq 发送到 solr 集群和大数据中心。但有一个疑问,基于 row 模式的 binlog 会不会记录变更前、变更后的值呢?答案:会!INSERT:只有变更后的值。 UPDATE:包含了变更前、变更后的值。 DELETE:变更前的值。哈哈哈!心头的疑问终于不再模糊啦

2016-08-24 22:55:42 2701

原创 mysql binlog 常用的命令

因为我在公司里面负责数据同步组件的相关工作,包括构建异地多活的工作,所以,需要先了解一下 MySQL binlog 的相关知识点。由于看过了好几遍了《高可用 MySQL 》 这本经典的书籍了,但还是不能记住一些 binlog 日志的命令,所以,这段时间,先整理一下。把旧债先还了。以后还会更新的啦!FLUSH LOGS 该命令强制轮换二进制日志,从而得到一个完整的 二进制日志文件。因为,每个二进

2016-08-24 22:50:37 612

原创 Rocketmq 文件名、msgId 生成规则

Rocketmq 的文件名的生成规则还是不错的。通过 offset  作为文件名。请看下图: UtilAll.offset2FileName(createOffset + this.mapedFileSize); 其中,mapedFileSize 的大小是可以配置的。 msgId 生成规则如下的截图所示: 为什么今天会提及这两个小家伙呢?今天忘记了 offset 的命名规则了。还可以 判断

2016-08-23 21:22:42 3071

原创 Rocketmq 消息的解压缩

虽然 RocketMQ 没有 kafka 的批量发送的功能。但在发送消息的时候,如果消息大小超过了 128k ,这条消息是不允许发送的。但如果消息 大小超过了 4k,那么,这条消息将会被压缩。        校验工作的方法:        Validators.checkMessage(msg, this.defaultMQProducer);       如果消息大小 大于 4k,那么,这条

2016-08-23 21:01:07 3647 2

原创 RocketMQ 消费进度

Rocketmq 拉取消息的时候,可能会保存消费进度的哦!且看一下的截图 因为拉取到的消息后,消费进度先刷 内存的。之后,由定时任务推送到 broker 端的。如果是 集群模式,消费进度都是保存在 broker 端的。 这里设置了标志位,这种方式非常聪明,减少了协议的头部的大小通过这 3 张截图,我们可以大致了解到。consumer 处理第一次消费这个队列的数据外,第二次之后,broker

2016-08-22 23:51:41 2708

原创 RocketMQ 发送消息疑问

我们都知道 rocketmq 发送消息有 3 中方式: 1、同步      同步发送消息,是可以拿到消息结果的,     2、oneway 方式      这种方式最适合发送日志啦,比如,最求速度的。可以采取这种方式。3、异步      这种方式有点误解了,其实这个也是返回结果的。                  可以从第二种截图中看出,这里需要实现回调接口的。其实呢,不管是同步

2016-08-22 22:27:09 3315

原创 rockemtq 高可靠消息探究

RocketMQ 是基于内存方式保存消息,然后再刷硬盘的。如果我们想发送可靠的消息,哪些,有两种方式: 1、sendMessageWithVIPChannel 是否走 VIP 快速通道。      这个可以减少消息的丢失率。加快刷到硬盘的速度。这个通道很少生产者走的。所以,保证了消息稳定地到达了 broker 端,特别是 当 洪水般的消息涌过来的话,对于 金钱方面的消息,这个通道非常快速。

2016-08-22 21:59:32 567

原创 RocketMQ-- 建议去 slave 拉取消息

在 RocketMQ 中,虽然消息先存放在内存中,在刷到硬盘中。但又可能消息已经落在了 硬盘中,导致了消费端去硬盘中中拉取消息,造就了 IO 过高的现象。但又一个几个参数我们是可以做调整的。参数列表如下: 当然啦。这几个参数的值我们是可以调整的。但我觉得,还是默认比较好。但这几个参数的相关使用在哪里呢?请看下面的截图: 注意啦!在 rocketmq 中,offset 增加 1 ,就表示 增加一个

2016-08-22 21:27:56 2240

原创 sublimetext3中pachage control的安装

关于 GO 语句集成环境的开发中。大伙可以模仿其他文章的。但 pachage control的安装因为 sublime 的版本不相同输入的内容不相同。使用快捷键ctrl+`(反引号,tab键上面的那个)打开安装窗口sublime 3 的版本 import urllib.request,os,hashlib; h = ‘2915d1851351e5ee549c20394736b442’ + ‘8

2016-08-06 20:44:59 633

原创 RocketMQ 高性能存储

转载:http://blog.csdn.net/fcbayernmunchen/article/details/8635427Java类库中的NIO包相对于IO 包来说有一个新功能是内存映射文件,日常编程中并不是经常用到,但是在处理大文件时是比较理想的提高效率的手段。本文我主要想结合操作系统中(OS)相关方面的知识介绍一下原理。在传统的文件IO操作中,我们都是调用操作系统提供的底层标准IO系统调用函

2016-08-06 16:51:27 1865

原创 java 虚拟机之 boolean 类型

在一个开源项目中,看到如下的代码,思索了一会,大悟: boolean hasHeartBeat = false; hasHeartBeat |= (entry.getEntryType() == EntryType.HEARTBEAT); 这段代码就是 比较两者的类型是否相等; 但为何这样设计呢?因为这样做,效率是杠杠的! 其深处原因在于:Java 虚拟机中没有提供 boole

2016-05-15 21:37:06 394

原创 canal client -->canal server 的交互过程

canal 是阿里开源的 MySQL 数据同步工具,漂亮!赞一个! 客户端的代码: 服务端的解码过程,FixedHeaderFrameDecoder 这个类负责解码过程: 为什么是这样设计的呢?是不是和我们平时使用 Netty 的编解码器不太一样呢?主要有以下几点原因: 1、canal client 是轻量级的 Java NIO 方式实现,而 canal server 是 Netty 方式实

2016-05-14 22:55:43 4144

原创 数据同步 canal

在公司负责中间件一段时间了!对于作为应届生的我,非常荣幸!谢谢!下面将全面分析 canal 运行的内部机制!同时,我整理的笔记,将放在 GitHub 上面!大概一个月之后吧!有点乱!感谢开源!还是阿里好!哈哈哈!!!

2016-05-04 00:14:21 766

原创 canal 启动分析

在对canal 一切准备妥当后,然后 sh startup.sh 后,流程图如下: 应该是这样的啦! 那源码是怎么得呢? 这个是我源码整理的理解!勿喷! 大伙如果一开始开源码的话,如果忽略了脚本,那就不好了!就不知道配置文件怎么加载的啦!且看脚本是怎么定义配置文件是如何加载的吧! 可能细心的伙伴会观察到 配置文件也有可能从 CLASSPATH: 路径下加载,因为 canal 可以独

2016-05-03 23:59:32 3095

原创 StartUML 注册

StartUML 安装完毕后,先别着急着打开 1、找到安装目录。比如:C:\Program Files (x86)\StarUML\www\license\node2、打开 LicenseManagerDomain.js 3、在 try 模块 前面加上 如下的代码块,并保存。return{ name:"0xcb", product:"StarUM

2016-05-03 21:44:18 794

原创 jps -- java 进程查看命令

如果我们想查看某个进程的 JVM 配置信息 或者其加载的配置文件的全路径。可能我们用最笨的方法去瞧瞧!如果说 jps 命令就能够查看上面的信息的话,是不是有点小惊讶嘞! - jps 或者(sudo jps)       只是显示了 java 进程PID 及 类名在平时,以上就是我们的对 jps 的使用了。但其超级强大,但我们却忽略了一下功能。jps -m          加上

2016-04-30 18:11:33 1171

原创 RocketMQ 的疑惑--131072 数字解答

今天又时间看看 Rocketmq 的源码。发现一个有趣的数字:131072=(2^10) * (2^7) =128 k 在 Rocketmq 中。设置数字非常有意思: 1、在 Netty 中设置 Socket 的接收、发送的缓存区大小 2、在发送消息的时候,校验该消息的大小 为什么需要这样设置呢?为什么需要控制消息的大小呢? 因为在 TCP 协议中其 socket接收缓冲的内存的默认值是

2016-04-10 13:43:18 1689

原创 技术路线的思考

这段时间都在想,路在哪里!今天想了想!我觉得走中间件的方向,虽然这个方向有点苦,但没事!因此,我觉得每 3 个月作为一个大的步骤,一个星期作为一个小的步骤!一步步完成自己的目标! 为什么我想在急于在一个点上深度学习呢?因为,,随着工作年龄的增加,技术也越来越广,其实也就是接触一下皮毛,了解一下。但深入需要自己去琢磨! 以前在学校浪费了很多时间,这个学学,那个学学,都是最基本的;恩师对我说

2016-03-13 13:24:31 499

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除