- 博客(33)
- 资源 (2)
- 收藏
- 关注

原创 RocketMQ-负载均衡
RocketMQ是分布式消息服务,生产和消费负载均衡都是在客户端完成,本文分别介绍生产与消费的负载均衡策略。部署结构拓扑图一、路由信息 路由记录了broker集群节点的通讯地址、broker名称和读写队列数量等信息。 写队列writequque表示生产者可以写入的队列个数,如果不做特别配置默认是4,队列号从0开始,如果是4个,queueId就是0,1,2,3。br...
2019-01-06 23:03:33
5403
原创 zookeeper---数据同步
zookeeper选举完成后,leader会与follower进行数据同步,保证每个节点的数据保证一致。一、交互过程 集群的follower节点与leader节点会首先建立网络链接,然后会确定主进程周期和同步日志操作,交互过程如下,箭头方向表示时间方向。数据同步交互过程1、follower发送类型为followerInfo的数据到leader节点,内容包括自己的acc...
2019-06-16 21:13:08
473
1
原创 zookeeper---选举
zookeeper集群启动后,选举leader节点和确定每个节点的角色是数据同步和对外提供服务的前提。因此如何快速有效的选举出leader节点是zookeeper的核心逻辑。本文将结合源码分析zookeeper的选举过程。一、整体流程整体流程1、zookeeper节点启动后,首先会加载对应路径下的配置文件2、然后创建代表自身的QuorumPeer对象,在zookeeper集群...
2019-06-07 23:10:23
199
原创 RocketMQ-事务消息
一、事务消息实现方式 应用使用事务消息的步骤: (1)应用发送消息,使用prepare字段标示准备消息 (2)应用执行本地业务逻辑 (3)应用发送事务提交或回滚消息 broker收到prepare消息后会将topic替换为RMQ_SYS_TRANS_HALF_TOPIC,queueId替换为0,然后写入commitlog...
2019-02-15 20:23:41
323
原创 RocketMQ-延迟消息
消息产生后,生产者希望在间隔一段时间后被消费的场景可以使用定时消息,RocketMQ目前不支持自定义延迟时间,但可以指定延迟等级,可以选择18个延迟等级,分别是对应延迟时间是1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h。 RocketMQ的延迟消息主题是SCHEDULE_TOPIC_XXXX,18...
2019-02-15 13:51:51
901
原创 RocketMQ-顺序消息
在某些业务场景下消息并非是独立的,需要保证某些消息消费的先后顺序,如电商下单场景,创建订单、付款和订单完成三个状态消息需要按照依次消费。RocketMQ解决此问题的方案是生产者顺序的将消息写入相同的队列中,然后由同一个消费者消费,如下图所示。 顺序消息示意图 生产者写入消息会根据自己的业务逻辑将存在先后逻辑的消息写入相同队列,使用...
2019-02-12 17:40:30
263
原创 RocketMQ-消息消费
RocketMQ消费模式分为集群消费模式与广播消费模式,生产者产生某个topic的消息后,在集群模式下,topic下的消息可以被同一分组下的多个实例消费掉,一条消息至少被一台实例消费成功便可;广播模式是每条消息必须被分组下的每台实例成功消费,每个实例维护自己的消费进度。一、集群消费模式 producer在生产消息时会根据负载均衡策略为消息指定队列编号(queu...
2019-02-12 11:18:23
779
原创 RocketMQ-消费者broker节点选择策略
消费端选择消费队列的规则在RocketMQ-负载均衡中已经解释清楚,在broker主从部署结构上,物理消息会被同步到多个slave节点上,因此消费端如何从master节点和多个slave节点中选出一个broker节点进行消费需要一个策略。 假设broker有一个master节点与两个slave节点,拉取步骤如下: (1)consumer第一次默认...
2019-01-31 16:34:35
3845
2
原创 RocketMQ-broker消息存储与消息队列
broker消息存储与消息队列一、场景 有两个生产者produer1、producer2,分别生产topicA和topicB的消息,topicA与topicB分别有两个消费者consumer1、consumer2。二、commitlog commitlog是broker消息的持久化文件,消息写入commitlog是顺序的。每条消息中记录了topic、queue...
2019-01-02 20:33:44
898
原创 jetty9部署jsp报Unable to compile class for JSP
使用jetty9部署jsp页面,报Unable to compile class for JSP,原因是web.xml的web-app的version版本与servlet版本不匹配导致,将两个版本号保持一致或者将web-app版本号提高来适应servlet ...
2018-12-19 20:58:08
645
原创 RocketMQ---消息流
RocketMQ的基本功能是消息转发,除此之外还支持事务消息,延迟消息以及分布式消息存储。任何消息在发送到Broker的master节点都要先落到commitlog中持久化,事务消息、延迟消息、主从日志同步模块从commitlog中读取数据进行处理。消息流转顺序如下:1、生产者产生消息,发送到broker2、broker先将数据持久化到commitlog日志中,如...
2018-12-04 20:47:52
686
原创 RocketMQ-生产消息
一、生产消息核心类 生产消息的用到的几个常见类: 1、MQProducer:消息生产者对外接口,内部定义允许用户调用的服务接口,如单条发送与批量发送等接口定义 2、DefaultMQProducer:MQProducer默认实现类和生产者配置信息 3、DefaultMQProducerImpl:消息生产逻辑实际包装类,获取路由、选择brok...
2018-10-19 19:24:10
355
原创 RocketMQ探秘——客户端消费
一、客户端组件总览 每个客户端有一个管理者(MQClientManager),是单例,负责生产MQInstance对象,MQClientManager通过id将多个MQInstance对象放在一个列表中。MQClientManager的id命名规范是ip@instanceName@unitName。一般情况下是一个客户端只有一个MQInstance对象。MQInstanc...
2018-10-17 16:36:19
493
转载 Drools
Drools入门系列(一)HelloWorldDrools入门系列(二)HelloWorld详解之Sample.drlDrools入门系列(三)HelloWorld详解之kmodule.xmlDrools入门系列(四)HelloWorld详解之JUnit Test类Drools入门系列(五)KIE概论Drools入门系列(六)KIE之基础API详解Drools入门系列(七)KIE之kmodule.
2017-12-12 16:39:59
8591
转载 log4j+logback+slf4j的关系与调试
背景 由于现在开源框架日益丰富,好多开源框架使用的日志组件不尽相同。存在着在一个项目中,不同的版本,不同的框架共存。导致日志输出异常混乱。虽然也不至于对系统造成致命伤害,但是明显可以看出,架构不够精良,追求极致略有不足。 其中有一些标准通用接口,标准实现,各种桥接器的存在,下面就让笔者树立一下这些框架之间的关系。 从上图中,我们可以看到4部分。 接口:将所有日
2017-02-04 16:51:20
303
原创 常用日志使用方式(slf4j,logback,log4j,common-log)
slf4j,logback,log4j,common-log区分,常用的日志使用方式和不同改变代码,整合多种日志,统一使用logback输出
2017-02-04 16:42:44
809
转载 ExecutorService 的理解与使用
接口 java.util.concurrent.ExecutorService 表述了异步执行的机制,并且可以让任务在后台执行。壹個 ExecutorService 实例因此特别像壹個线程池。事实上,在 java.util.concurrent 包中的 ExecutorService 的实现就是壹個线程池的实现。ExecutorService 样例这里有壹個简单的使用Java 实现的
2016-09-23 19:12:16
357
转载 maven属性定义与使用
出自原文:http://www.tmser.com/post-178.htmlMAVEN 属性定义与使用Posted on 2013-5-16, 23:00, by tmser, under java 周边 .Maven内置了三大特性:属性、Profile和资源过滤来支持构建的灵活性。MAVEN属性事实上有六种类型的Maven属性:内置属性:主要有两
2016-07-11 11:58:32
1041
转载 Spring中的<context:annotation-config/>配置
本文转自:http://www.cnblogs.com/iuranus/archive/2012/07/19/2599084.html 当我们需要使用BeanPostProcessor时,直接在Spring配置文件中定义这些Bean显得比较笨拙,例如: 使用@Autowired注解,必须事先在Spring容器中声明AutowiredAnnotationBeanPostProces
2016-07-07 14:22:07
216
转载 Spring AOP 自动创建代理
转自: http://www.cnblogs.com/yangyquin/p/5475664.htmlSpring为我们提供了自动代理机制,让容器为我们自动生成代理,把我们从烦琐的配置工作中解放出来,在内部,Spring 使用BeanPostProcessor自动地完成这项工作。 1、实现类介绍 这些基于BeanPostProcessor的自动代理创建器的实现类
2016-07-06 21:26:02
277
转载 火狐浏览器下载文件名为乱码
转载自:http://www.cnblogs.com/quanyongan/archive/2013/04/16/3024988.html我最近在开发时遇到了文件另存为时文件名出现乱码,在火狐上正常的文件名,在IE中又出现乱码问题,然后好不容易在IE下调试好了文件名乱码问题,在火狐下又出现乱码,最后终于感觉这样是能解决了。具体如下:public String toUtf8String(S
2016-06-23 11:47:45
636
原创 常见数据结构面试题目(四)
输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径
2015-04-01 22:30:19
621
原创 常见数据结构面试题目(三)
题目: 输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。 思路:根据题目,连续元素
2015-03-23 22:14:45
453
原创 常见数据结构面试题目(二)
题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。此题是Google在06年的面试题。看到时间复杂度后,自然想到用空间换取时间。具体思路如下:除了题目中要求的栈,额外建立一个用来存储最小值的栈。但v_push>=min时,将v_push压入数值栈,同时将最小值栈顶元素重新压入。当v_push源代
2015-03-22 15:19:02
377
原创 常见数据结构面试题目(一)
1、输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \4 8 12 16 转换成双向链表4=6=8=10=12=14=16。 首先我们定义的二元查找树 节点的数据结构如下: struct BSTreeNode
2015-03-19 21:41:07
456
转载 Eclipse开发JQuery环境设置(Spket)
首先需要安装Spket。可以参阅我的这篇文章进行Spket的安装。之后进行JQuery的配置:1. 从JQuery.com下载开发用的Javascript文件,如下图,一定要选择红框里面的选项。 2. 配置Eclipse里面的Spket Javascript Profiles,如下图: 1) 从window->Preferences...进去2) 如上图选择Spket
2015-02-04 21:38:28
352
原创 软件设计模型
在软件开发领域,模型用来表示真实世界的实体。在分析阶段,需要创建概念模型;在设计阶段,需要创建关系数据模型与域型。概念模型:根据问题域的描述,抽象出实际生活中实体的模型。概念模型包含实体的属性,与实体间的关系,不包含实体的行为。域模型:是对现实世界实体的软件抽象。可以指人,物,地点,概念及业务。域模型可以分为实体域对象,过程域对象,事件域对象
2014-04-13 22:49:25
654
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人