主要从事消息中间件的相关研发工作,著有《RabbitMQ实战指南》。
RabbitMQ简介 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
概述 在使用RabbitMQ的时候,我们可以通过消息持久化操作来解决因为服务器的异常奔溃导致的消息丢失,除此之外我们还会遇到一个问题,当消息的发布者在将消息发送出去之后,消息到底有没有正确到达broker代理服务器呢?如果不进行特殊配置的话,默认情况下发布操作是不会返回任何信...
什么是RPC? RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。
什么是延迟队列 延迟队列存储的对象肯定是对应的延迟消息,所谓”延迟消息”是指当消息被发送以后,并不想让消费者立即拿到消息,而是等待指定时间后,消费者才拿到这个消息进行消费。 场景一:在订单系统中,一个用户下单之后通常有30分钟的时间进行支付,如果30分钟之内没有支付成功,那么这个订单将进行一场处理。
优先级队列,顾名思义,具有更高优先级的队列具有较高的优先权,优先级高的消息具备优先被消费的特权。 本文主要讲解如何使用RabbitMQ实现队列优先级。 可以通过RabbitMQ管理界面配置队列的优先级属性,如下图的x-max-priority.
DLX, Dead-Letter-Exchange。利用DLX, 当消息在一个队列中变成死信(dead message)之后,它能被重新publish到另一个Exchange,这个Exchange就是DLX。
1. 概述 RabbitMQ可以对消息和队列设置TTL. 目前有两种方法可以设置。第一种方法是通过队列属性设置,队列中所有消息都有相同的过期时间。第二种方法是对消息进行单独设置,每条消息TTL可以不同。
1. 概述 mandatory和immediate是AMQP协议中basic.publish方法中的两个标识位,它们都有当消息传递过程中不可达目的地时将消息返回给生产者的功能。对于刚开始接触RabbitMQ的朋友特别容易被这两个参数搞混,这里博主整理了写资料,简单讲解下这两个标识位。
kafka有同步(sync)、异步(async)以及oneway这三种发送方式,某些概念上区分也可以分为同步和异步两种,同步和异步的发送方式通过“producer.type”参数指定,而oneway由“request.require.acks”参数指定。
1. 客户端的公共配置类:ClientConfig 参数名 默认值 说明 namesrvAddrNameServer 地址列表,多个NameServer地址用分号隔开 clientIp 本机IP 客户端本机IP地址,某些机器会发送无法识...
本篇主要整理工作中遇到的一些消息中间件的相关知识,包括Kafka, RabbitMQ, RocketMQ, ActiveMQ等,不排除收录其他消息中间件的可能。 这里会持续收录相关知识,包括安装、部署、使用示例、监控、运维、原理等。
本篇主要整理工作中遇到的一些消息中间件的相关知识,包括Kafka, RabbitMQ, RocketMQ, ActiveMQ等,不排除收录其他消息中间件的可能。 这里会持续收录相关知识,包括安装、部署、使用示例、监控、运维、原理等。
yum安装 这里采用的是CentOS系统,如果采用yum安装git的方式: yum install git 很快就okay了,但是这里遇到一个问题。: 在网上搜寻了原因,说是要安装: yum install curl-devel 未果,继续搜寻,在stackoverflow上找到一种解决方法: git clone git://github.
1. 常用命令 下载一个项目和它的整个代码历史 git clone [**.git] 比较当前文件和暂存区文件差异 git diff 将工作文件修改提交到本地暂存区 git add -A git add 显示有变更的文件 git status 提交暂...
概述 ProcessBuilder类是J2SE 1.5在java.lang中新添加的一个新类,此类用于创建操作系统进程,它提供一种启动和管理进程(也就是应用程序)的方法。在J2SE 1.5之前,都是由Process类处来实现进程的控制管理。
Clustering and Network Partitions RabbitMQ clusters do not tolerate network partitions well.
使用kafka做消息队列中间件时,为了实时监控其性能时,免不了要使用jmx调取kafka broker的内部数据,不管是自己重新做一个kafka集群的监控系统,还是使用一些开源的产品,比如yahoo的kafka manager, 其都需要使用jmx来监控一些敏感的数据。
之前一篇博文简单讲述了zookeeper和kafka的单机配置,详细可以参考《Linux(CentOS)中常用软件安装,使用及异常——Zookeeper, Kafka》。 本文只要讲述Kafka集群的配置事项,包括zookeeper集群的配置。
服务启动关闭 启动:rabbitmq-server -detached 关闭:rabbitmqctl stop 集群配置相关命令 rabbitmqctl stop_app rabbitmqctl reset 在当前集群中加入某节点:rabbitmqctl joi...
RabbitMQ安装 1 安装erlang 下载地址:http://www.erlang.org/downloads 博主这里采用的是otp_src_19.1.tar.gz (200MB+) [root@hidden util]# tar zxvf otp_src_19.
由于某些因素的限制,有时候你不得不在一台机器上去搭建一个rabbitmq集群,当然这种集群只适合自己玩玩,验证下结论,这个有点类似zookeeper的单机版。真实生成环境还是要配成多机集群的。
Open Replicator是一个用Java编写的MySQL binlog分析程序。Open Replicator 首先连接到MySQL(就像一个普通的MySQL Slave一样),然后接收和分析binlog,最终将分析得出的binlog events以回调的方式通知应用。
概述 MySQL的安装可以参考:Linux(CentOS)中常用软件安装,使用及异常——MySQL, VmTools MySQL关于Binlog的官方文档:The Binary Log 基于Binlog的主备复制:MySQL主备复制原理、实现及异常处理 什么是 Binlog MySQL Server 有四种类型的日志——Error Log、General Query Log、Binary Log 和 Slow Query Log。
下载地址:http://www.scala-sbt.org/download.html 当前版本:sbt-0.13.13.tgz 安装 1.解压并赋予权限 [root@hidden util]# tar -zxvf sbt-0.
Apache Commons Modeler 前面的Model MBean的创建方式看上去特别复杂,一个简单功能的类ModelMBeanUtils 写了很多代码,那有木有简单点的方式呢,答案是肯定的,这里就引出了Apache Commons Modeler(使用这个需要在classpath中导入commons-modeler-2.
Model MBean 相对于Standard MBean,Model MBean更加灵活。如果我们不能修改已有的Java类,那么使用Model MBean是不错的选择。 Model MBean也是一种专门化的动态管理构件。
Notification 一个MBean提供的管理接口允许代理对其管理资源进行控制和配置。然而,对管理复杂的分布式系统来说,这些接口知识提供了一部分功能。通常,管理应用程序需要对状态变化或者当特别情况发生变化时作出反映。
JMX的全称为Java Management Extensions. 顾名思义,是管理Java的一种扩展。这种机制可以方便的管理、监控正在运行中的Java程序。常用于管理线程,内存,日志Level,服务重启,系统环境等。
概述 LogBack是一个日志框架,它与Log4j可以说是同出一源,都出自Ceki Gülcü之手。(log4j的原型是早前由Ceki Gülcü贡献给Apache基金会的)下载地址:http://logback.qos.ch/download.html LogBack、Slf4j和Log4j之间的关系 Slf4j是The Simple Logging Facade for Java的简称,是一个简单日志门面抽象框架,它本身只提供了日志Facade API和一个简单的日志类实现,一般常配合Log4j,LogBack,java.util.logging使用。
JSch 是SSH2的一个纯Java实现。它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等。你可以将它的功能集成到你自己的 程序中。同时该项目也提供一个J2ME版本用来在手机上直连SSHD服务器。
复制概述 MySQL支持三种复制方式:基于行(Row)的复制、基于语句(Statement)的复制和混合类型(Mixed)的复制。 基于语句的复制早在3.23版本中就存在,而基于行的复制方式在5.1版本中才被加进来。
概述 canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql(也支持mariaDB)。 起源:早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。
XManager图形化界面远程连接 采用Xshell的方式可以不用在CentOS系统中配置即可以相连,主要原理就是SSH连接的方式,但是XManager图形化界面远程连接是需要修改CentOS系统的。
平常都是用Java的,工作需要翻看一下php的代码,所以临时拿起LAMP(Linux+Apache+MySQL+PHP)来。在使用LAMP中遇到一些异常情况,首先从一个demo说起: [11.
本文主要是为了记录在工作中遇到的常用软件的安装过程,方便以后遇到相同情形时可以快速的查阅。主要讲述了zookeeper, kafka的安装。 本文的操作系统采用的是CentOS,可以采用shell命令查阅:lsb_release -a. Zookeeper Zookeeper的安装与配置 可以在http://zookeeper.apache.org/这里下载需要的安装包。
本文主要是为了记录在工作中遇到的常用软件的安装过程,方便以后遇到相同情形时可以快速的查阅。主要讲述了MySQL, VMTools的安装。 本文的操作系统采用的是CentOS,可以采用shell命令查阅:lsb_release -a. Mysql的安装 Mysql的安装 mysql的下载地址:http://dev.mysql.com/downloads/mysql/#downloads,截止目前(2016-08-21)最新的版本是5.7, 本文介绍的mysql的版本是5.5。
本篇是这个系列的最后一篇了,写完这篇就准备离职的相关事情了。这里讲述的是公司简称为A, 是8家面试中唯一挂掉的一家。面试分为4轮,两轮技术,后面两轮应该是BOSS+HR面。HR具有一票否决权。
本篇所要介绍的是一家互联网企业,简称MD好了。一面是电面,二三面是face2face的技术面,4面是HR面。 一面 一面的具体内容忘了记录了,大概面了45mins,问了30mins的NIO。
已经写到第六篇了,本文说的这家公司是博主投的最随意的,属于手滑点赞的那种。这里简称为V,最后也是选择了这家。博主会把简历挂在猎聘网上让猎头来找,然后把自己的简历给猎头,有心思的猎头还会修改一下简历。
这里讲述的是一家公司,简称I,当天上午面完公司B之后,打车到火车站坐高铁赶来面试,午饭也没吃,这次面试的比较久,从下午15:30到19:30,主要是等待的时间。当天20:30还接了一个Z公司的电话面试。
这里我连续介绍三家公司的面试,一家是只有一面,还有两家是面完一面就没去了,没去主要是当时一周面了6家而且是在不同的城市,就选择性的挑了这两家没去,是在是太累了,6月17日那天嗓子都面哑了。
经过前面两次的面试,这里就马上转到第三家公司了的面试了,这里简称B,工作地点和上一篇所讲述的W公司在一个城市,是面完W之后第二天去的,说出名字的话大多小伙伴都听过或者用过其服务,具体是什么要靠你们的悟性了。
博主毕业快满三年了,由于种种原因想换一份工作。学了7年计算机技术,在目前的行业用到的技术不多,还是想去寻找一份互联网行业的工作,这样更能学以致用发挥自己的特长。从上次更新博客到现在已经三周左右了,这三周博客基本断更了,现在找工作也基本收尾了,来聊一聊我所遇到的一些面试经历,希望给各位寻求新机会的小伙伴一个参考。
1. I/O优化 增加缓存,减少磁盘的访问次数。 优化磁盘的管理系统,设计最优的磁盘方式策略,以及磁盘的寻址策略,这是在底层操作系统层面考虑的。 设计合理的磁盘存储数据块,以及访问这些数据库的策略,这是在应用层面考虑的。
本文主要整理博主遇到的Java多线程的相关知识点,适合速记,故命名为“小抄集”。本文没有特别重点,每一项针对一个多线程知识做一个概要性总结,也有一些会带一点例子,习题方便理解和记忆。
Question:在并发编程中,多个线程之间采取什么机制进行通信(信息交换),什么机制进行数据的同步? Answer:在Java语言中,采用的是共享内存模型来实现多线程之间的信息交换和数据同步的。
现在使用NIO的场景越来越多,很多网上的技术框架或多或少的使用NIO技术,譬如Tomcat,Jetty。学习和掌握NIO技术已经不是一个JAVA攻城狮的加分技能,而是一个必备技能。
本系列博文主要收录Java中一些常见的但是平常又容易忘记、记错或者记混的知识点的集合。各个知识点之间没有必然的联系,可以随意跳着看,希望能够对各位同学有所帮助。 本博文持续更新、修改,转载请保留原文链接。
1. Spring框架的作用 轻量:Spring是轻量级的,基本的版本大小为2MB 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。
本文主要整理博主遇到的Java多线程的相关知识点,适合速记,故命名为“小抄集”。本文没有特别重点,每一项针对一个多线程知识做一个概要性总结,也有一些会带一点例子,习题方便理解和记忆。