TA的博客

175

1、顺序消息消息有序指的是可以按照消息的发送顺序来消费(FIFO)。RocketMQ可以严格的保证消息有序,可以分为分区有序或者全局有序。顺序消费的原理解析,在默认的情况下消息发送会采取轮询方式把消息发送到不同的queue(分区队列);而消费消息的时候从多个queue上拉取消息,这种情况发送和消费是不能保证顺序。如图:而消费端消费的时候,是会分配到多个queue的,多个queue是同时拉取提...

RocketMQ是阿里开源的一款分布式消息中间件,主要分为以下几个部分1、生产者Producer,消费者(Consumer),NameServer,Broker2、生产者主要用来发送消息,,消费者用来接收消息3、nameServer就像一个邮局,Broker相当于快递小哥,nameServer用来管理Broker。4、发送消息有三种方式,分别是同步,异步,单向,异步发送会返回一个回调函数,同...

本章节将示范三台RokcetMQ服务端集群搭建步骤。所需准备工作,创建两台虚拟机环境并安装好java开发工具包JDK,可以使用VM或者vagrant+virtualbox搭建centos/ubuntu环境,本案例基于宿主机Windows7系统同时使用VM搭建的centos7环境,如果直接使用云服务器或者物理机同理。1、集群各角色介绍Producer:消息的发送者;举例:发信者Consumer...

Linux安装1、准备工作下载RocketMQ截止教程发布日期,RocketMQ最新版本:4.7.1下载地址可以直接点击上面下载地址下载到本地然后上传到Liunx上,或者也可以直接使用wget命令在Linux上下载环境要求Linux64位系统JDK1.8(64位)源码安装需要安装Maven3.2.x2、安装RocketMQ安装步骤本教程以二进制包方式安装解压安装包进入安装目录目录介绍进入到安...

RocektMQ是阿里巴巴在2012年开源的一个纯java、分布式、队列模型的第三代消息中间件,不仅在传统高频交易链路有着低延迟的出色表现,在实时计算等大数据领域也有着不错的吞吐。2016年11月11号,双十一大促见证了RocketMQ低延迟存储架构的成功试水,99.996%的延迟落在了10ms以内,极个别由于GC引发的停顿在50ms以内,其高性能、低延时和高可靠的特性承载了近年来双十一17...

有时候List和数组int[]转换很麻烦。List和String[]也同理。难道每次非得写一个循环遍历吗?其实一步就可以搞定。本文涉及到一些Java8的特性。如果没有接触过就先学会怎么用,然后再细细研究。1、int[]转List1.Arrays.stream(arr)可以替换成IntStream.of(arr)。2.使用Arrays.stream将int[]转换成IntStream。3.使用...

应用服务器的高可用架构设计最为理想的是服务无状态,但实际上业务总会有状态的,以session记录用户信息的例子来讲,未登入时,服务器没有记入用户信息的session访问网站都是以游客方式访问的,账号密码登入网站后服务器必须要记录你的用户信息记住你是登入后的状态,以该状态分配给你更多的权限。那么管理session有哪些方法呢?一、四种分布式Session管理方案1、Session复制sessi...

HashMap的值是没有顺序的,它是按照key的HashCode来实现的。对于这个无序的HashMap我们要怎么来实现排序呢?(TreeMap类似)一、按key进行排序对Key进行排序大致步骤如下:(1)为了提供一个对Key排序普遍适用的方法,我们使用泛型,并且由于要对K进行排序,所以我们需要限定K所代表的类实现了Comparable接口(2)首先需要得到HashMap中的包含映射关系的视图...

ARGARG是一个构建时有效的变量。它们只能从在Dockerfile中使用ARG指令开始到生成dockerimage的那一端时间内使用。正在运行的容器无法访问ARG变量的值。这也适用于CMD和Enrypoint指令,它们只是告诉容器在默认情况下应该运行什么。如果您告诉Dockerfile需要各种ARG变量(即从外部传递参数),需要配合--build-arg参数来指定参数值,但是如果在运行do...

最近在刷LeetCode的时候发现一类和二维矩阵(二维数组)搜索有关的题目,一般使用深度优先或广度优先搜索就可以很好的解决这类题目,这里特意总结一下。1、剑指Offer12.矩阵中的路径这是一个典型的矩阵搜索问题,可使用深度优先搜索(DFS)+剪枝解决。首选,在矩阵中任意选择一个格子作为路径的起点。假设举证中某个格子的字符为ch,并且这个格子将对应于路径上的第i个字符。如果路径上的第i个字符...

Redis的数据已经设置了TTL,不是过期就已经删除了吗?为什么还存在所谓的淘汰策略呢?这个原因我们需要从redis的过期策略聊起。一、Redis过期键策略redis键的过期时间都保存在过期字典中,过期键的删除策略有3种:定时删除:在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时间来临时,立即删除对键的删除操作。惰性删除:放任键过期不管,但每次从键空间中获取键时,都检查取得的键...

一、Redis对象底层数据结构Redis底层数据结构共有八种,如下表所示:编码类型编码所对应的底层数据结构REDIS_ENCODING_INT8字节的long长整型REDIS_ENCODING_EMBSTRembstr编码的简单动态字符串REDIS_ENCODING_RAW简单动态字符串REDIS_ENCODING_HT字典REDIS_ENCODING_LINKEDLIST双端链表REDIS...

这是数据库事务分享的第二篇,上一篇讲解了数据库事务并发会产生的问题,这篇会详细讲数据库如何避免这些问题,也就是如何实现隔离,主要是讲两种主流技术方案——MVCC与锁,理解了MVCC与锁,就可以举一反三地看各种数据库并发控制方案,并理解每种实现能解决的问题以及需要开发者自己注意的并发问题,以更好支撑业务开发。先回顾一下上一篇讨论过的,如果没有隔离或者隔离级别不足,会带来的问题:1、脏读(Dir...

注意这里是Java内存模型,不是Java内存结构,这两个就不是在同一级别上的东东,有些人会把Java内存模型误解为Java内存结构,然后在面试问到的时候很自信的答到堆,栈,GC垃圾回收,最后和面试官想问的问题相差甚远。本文我们就来学习一下JMM有关的基础知识吧!思维导图什么是JMM?JMM就是JavaMemoryModel的缩写,中文名即Java内存模型。因为在不同的硬件生产商和不同的操作系...

一、docker网络基础知识Docker在启动时会创建一个虚拟网桥docker0,默认地址为172.17.0.1/16,容器启动后都会被桥接到docker0上,并自动分配到一个IP地址。使用ipaddr或ifconfig命令可以看到:Docker容器在创建的时候有四种网络模型,如果没有指定,默认使用是birdge模式,其余三种需要使用-net显式指定。bridge模式:使用–net=brid...