中间件
文章平均质量分 81
it噩梦
好记性不如烂笔头
展开
-
rocketmq源码之consumer
文章目录2.5 Consumer2.5.1 消息消费概述2.5.2 消息消费初探2.5.3 消费者启动流程2.5.4 消息拉取1)PullMessageService实现机制2)ProcessQueue实现机制3)消息拉取基本流程1.客户端发起拉取请求2.消息服务端Broker组装消息3.消息拉取客户端处理消息4.消息拉取总结4)消息拉取长轮询机制分析2.5.5 消息队列负载与重新分布机制2.5.6 消息消费过程2.5.7 定时消息机制2.5.8 顺序消息2.5.9 小结2.5 Consumer2.5.原创 2022-05-19 20:00:00 · 641 阅读 · 1 评论 -
rocketmq源码之消息存储
文章目录2.4.1 消息存储核心类2.4.2 消息存储流程2.4.3 存储文件2.4.4 存储文件内存映射1)MappedFileQueue2)MappedFile3)TransientStorePool2.4.5 实时更新消息消费队列与索引文件1)转发到ConsumerQueue2)转发到Index2.4.6 消息队列和索引文件恢复1)存储文件加载2)正常恢复3)异常恢复2.4.7 刷盘机制同步刷盘异步刷盘2.4.8 过期文件删除机制2.4.9 小结2.4.1 消息存储核心类private fina原创 2022-05-18 21:30:00 · 799 阅读 · 0 评论 -
rocketmq源码分析之Producer
文章目录1.3.1 方法和属性1)主要方法介绍1.3.2 启动流程1.3.3 消息发送1)验证消息2)查找路由3)选择队列4)发送消息1.3.4 批量消息发送消息生产者的代码都在client模块中,相对于RocketMQ来讲,消息生产者就是客户端,也是消息的提供者。1.3.1 方法和属性1)主要方法介绍//创建主题void createTopic(final String key, final String newTopic, final int queueNum) throws MQCl原创 2022-05-17 14:01:22 · 670 阅读 · 0 评论 -
rocketmq源码分析之NameServer、Broker
文章目录1.2.1 架构设计1.2.2 启动流程步骤一步骤二步骤三1.2.3 路由管理1.2.3.1 路由元信息1.2.3.2 路由注册1)发送心跳包2)处理心跳包1.2.3.3 路由删除1.2.3.4 路由发现1.2.4 小结1.2.1 架构设计消息中间件的设计思路一般是基于主题订阅发布的机制,消息生产者(Producer)发送某一个主题到消息服务器,消息服务器负责将消息持久化存储,消息消费者(Consumer)订阅该兴趣的主题,消息服务器根据订阅信息(路由信息)将消息推送到消费者(Push模式)或者原创 2022-05-16 18:15:01 · 1426 阅读 · 0 评论 -
idea 源码启动rocketmq
文章目录1.1 环境搭建1.1.1 源码拉取1.1.2 导入IDEA1.1.3 调试1)启动NameServer2)启动Broker3)发送消息4)消费消息2.1 rocketmq dashboard搭建1.1 环境搭建依赖工具JDK :1.8+MavenIntelliJ IDEA1.1.1 源码拉取从官方仓库 https://github.com/apache/rocketmq clone或者download源码。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(i原创 2022-05-16 21:15:00 · 783 阅读 · 0 评论 -
rocketmq相关总结
文章目录1.1 消息存储1.1.1 存储介质1.1.3 消息的存储和发送1)消息存储2)消息发送1.1.4 消息存储结构1.1.5 刷盘机制1)同步刷盘2)异步刷盘1.2 高可用性机制1.2.1 消息消费高可用1.2.2 消息发送高可用1.2.3 消息主从复制1.3 负载均衡1.3.1 Producer负载均衡1.3.2 Consumer负载均衡1)集群模式1.4 消息重试1.4.1 顺序消息的重试1.4.2 无序消息的重试1)重试次数2)配置方式1.5 死信队列1.5.1 死信特性1.5.2 查看死信信息原创 2022-05-16 20:00:00 · 623 阅读 · 0 评论 -
单机canal监听binlog
文章目录简介环境部署MySQLCanal安装Canal客户端开发创建client_demo项目Maven依赖在canal_demo模块创建包结构开发步骤Canal消息格式转换为JSON数据简介基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger(触发器) 获取增量变更从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务,原创 2022-04-11 09:12:52 · 1057 阅读 · 0 评论 -
Apache Druid 总结
文章目录Druid架构与原理Druid系统架构详解索引服务Overlord节点MiddleManager节点Coordinator节点Historical节点Broker节点Druid数据存储数据存储数据分区SegmentSegment内部存储结构roll-up聚合位图索引Druid架构与原理Druid系统架构详解Druid有5种节点:OverlordMiddleManagerCoordinatorHistoricalBroker以下是这几个节点的主要功能:Overlord、Mid原创 2022-04-10 11:14:53 · 863 阅读 · 0 评论 -
常见限流算法总结
文章目录概述固定窗口计数器算法滑动窗口计数器算法令牌桶算法漏桶算法限流算法对比Sentinel的限流与Gateway的限流有什么差别?概述限流算法常见的包括:计数器算法,又包括窗口计数器算法、滑动窗口计数器算法令牌桶算法(Token Bucket)漏桶算法(Leaky Bucket)固定窗口计数器算法固定窗口计数器算法概念如下:将时间划分为多个窗口,窗口时间跨度称为Interval,本例中为1000ms;每个窗口维护一个计数器,每有一次请求就将计数器加一,限流就是设置计数器阈值,本.原创 2022-03-05 19:24:01 · 555 阅读 · 0 评论 -
Sentinel使用总结
文章目录1.初识Sentinel1.1.雪崩问题及解决方案1.1.1.雪崩问题1.1.2.超时处理1.1.3.仓壁模式1.1.4.断路器1.1.5.限流1.1.6.总结1.2.服务保护技术对比1.3.Sentinel介绍和安装1.3.1.初识Sentinel1.3.2.安装Sentinel1.4.微服务整合Sentinel2.流量控制2.1.簇点链路2.1.快速入门2.1.1.示例2.1.2.练习:2.2.流控模式2.2.1.关联模式2.2.2.链路模式1)添加查询商品方法2)查询订单时,查询商品3)新增订原创 2022-03-05 16:32:41 · 2001 阅读 · 1 评论 -
HBase数据结构
文章目录跳表常见树结构二叉搜索树(Binary Search Tree)什么是二叉搜索树?树的高度、深度、层数二叉搜索树的特点二叉搜索树的查询方式二叉搜索树的缺点平衡二叉树(Balance Binary Tree)简介平衡二叉树的特点红黑树简介红黑树的特点B树什么是B树B树的特点B-树的查找方式B+树结构B+树简介B+树的特点稠密索引和稀疏索引LSM树数据结构简介LSM树设计思想LSM的数据写入操作LSM的数据查询操作在分析HBase的LSM合并树之前,我们需要来了解一些常用的数据结构知识。跳表上.原创 2022-02-02 16:59:41 · 146 阅读 · 0 评论 -
HBase的协处理器
文章目录起源协处理器有两种: observer 和 endpointobserver协处理器endpoint协处理器总结协处理器加载方式静态加载动态加载协处理器卸载起源Hbase 作为列族数据库最经常被人诟病的特性包括:无法轻易建立“二级索引”难以执 行求和、计数、排序等操作比如,在旧版本的(<0.92)Hbase 中,统计数据表的总行数,需要使用 Counter 方法,执行一次 MapReduce Job 才能得到。虽然 HBase 在数据存储层中集成了 MapReduce,能.原创 2022-02-02 16:21:05 · 1388 阅读 · 0 评论 -
Phoenix二级索引实战
二级索引之前的查询,因为没有建立索引,组合条件查询效率较低,而通过使用Phoenix,我们可以非常方便地创建二级索引。Phoenix中的索引,其实底层还是表现为HBase中的表结构。这些索引表专门用来加快查询速度。索引分类全局索引全局索引适用于读多写少业务全局索引绝大多数负载都发生在写入时,当构建了全局索引时,Phoenix会拦截写入(DELETE、UPSERT值和UPSERT SELECT)上的数据表更新,构建索引更新,同时更新所有相关的索引表,开销较大读取时,Phoenix将选择最快能够.原创 2022-01-30 16:47:21 · 2610 阅读 · 0 评论 -
Phoenix JDBC开发
Apache PhoenixApache Phoenix基于HBase的一个SQL引擎,我们可以使用Phoenix在HBase之上提供SQL语言的支持。Phoenix是可以支持二级索引的,而且Phoenix它自动帮助我们管理二级索引,底层是通过HBase的协处理器来实现的,通过配合二级索引和HBase rowkey,可以提升hbase的查询效率Phoenix底层还是将SQL语言解析为HBase的原生查询(put/get/scan),所以它的定位还是在随机实时查询——OLTP领域Apache Ph.原创 2022-01-30 16:22:30 · 3619 阅读 · 0 评论 -
docker 给hbase安装phoenix
安装步骤首先进入容器docker exec -it e16782e1e69c /bin/bash安装apache phoenix 需要准备 phoenix 以及pythonwget https://archive.apache.org/dist/phoenix/apache-phoenix-4.13.1-HBase-1.3/bin/apache-phoenix-4.13.1-HBase-1.3-bin.tar.gzapk add --no-cache python3. 集成a.原创 2022-01-30 11:39:56 · 4781 阅读 · 0 评论 -
Excel数据导入到hbase实战
表的设计列蔟:推荐1-2个,能使用1个就不是使用2个版本的设计:如果我们的项目不需要保存历史的版本,直接按照默认配置VERSIONS=1就OK。如果项目中需要保存历史的变更信息,就可以将VERSIONS设置为>1。但是设置为大于1也就意味着要占用更多的空间数据的压缩:在创建表的时候,可以针对列蔟指定数据压缩方式(GZ、SNAPPY、LZO)。GZ方式是压缩比最高的,13%左右的空间,但是它的压缩和解压缩速度慢一些避免热点的关键操作预分区在创建表的时候,配置一些策略,让一个tab.原创 2022-01-29 21:50:00 · 2921 阅读 · 1 评论 -
Hbase过滤器
文章目录简介实战过滤器的用法比较运算符比较器比较器表达式导入数据使用RowFilter查询指定订单ID的数据需求二:查询状态为已付款的订单需求三:查询支付方式为1,且金额大于3000的订单简介在HBase中,如果要对海量的数据来进行查询,此时基本的操作是比较无力的。此时,需要借助HBase中的高级语法——Filter来进行查询。Filter可以根据列簇、列、版本等条件来对数据进行过滤查询。因为在HBase中,主键、列、版本都是有序存储的,所以借助Filter,可以高效地完成查询。当执行Filter时,.原创 2022-01-28 20:44:02 · 2064 阅读 · 1 评论 -
Hbase架构浅析
架构原理StoreFile保存实际数据的物理文件,StoreFile 以 HFile 的形式存储在 HDFS 上。每个 Store 会有一个或多个 StoreFile(HFile),数据在每个 StoreFile 中都是有序的。MemStore写缓存,由于 HFile 中的数据要求是有序的,所以数据是先存储在 MemStore 中,排好序后,等到达刷写时机才会刷写到 HFile,每次刷写都会形成一个新的 HFile。WAL由于数据要经 MemStore 排序后才能刷写到 HFile,但把数据.原创 2022-01-26 12:02:10 · 94 阅读 · 0 评论 -
hbase简介
文章目录HBase 简介HBase 定义HBase 数据模型HBase 逻辑结构HBase 物理存储结构数据模型Name SpaceRegionRowColumnTime StampCellHBase 基本架构Region ServerMasterZookeeperHDFSHBase 简介HBase 定义HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库。HBase 数据模型逻辑上,HBase 的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从 HBase.原创 2022-01-26 23:30:00 · 149 阅读 · 0 评论 -
hbase shell 命令
基本操作1. 进入 HBase 客户端命令行 bin/hbase shell2. 查看帮助命令help3.查看当前数据库中有哪些表list基本操作1.创建表create 'student','info'2.插入数据到表put 'student','1001','info:sex','male'put 'student','1001','info:age','18'put 'student','1002','info:name','Janna'put 'student.原创 2022-01-25 22:30:00 · 406 阅读 · 0 评论 -
docker搭建hbase单机环境
文章目录前言运行hbase容器访问HBase Shell访问hbase shell访问Zookeeper访问hbase UIJava Api 测试前言本文主要讲述了如何使用Docker快速上手HBase,省去繁杂的安装部署环境,直接上手,小白必备。适合HBase入门学习及简单代码测试。运行hbase容器docker run -d -h master \-p 2181:2181 -p 8080:8080 -p 8085:8085 -p 9090:9090 -p 9095:9095 \.原创 2022-01-25 22:00:00 · 2237 阅读 · 0 评论 -
skywalking修复log4j漏洞
背景漏洞产生的原因,在于 Log4j2 允许 JNDI 任意连接服务器,在 org.apache.logging.log4j.core.lookup.JndiLookup#lookup 中,代码如下:@Overridepublic String lookup(final LogEvent event, final String key) { if (key == null) { return null; } final String jndiName = co.原创 2022-01-19 23:15:00 · 2301 阅读 · 0 评论 -
skywalking 自定义插件
环境基于skywalking-java开发,就是skywalking的java agent,这次在基础上开发一个自定义的插件。流程演示首先新建一个model修改pom文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sc.原创 2022-01-14 20:43:36 · 3351 阅读 · 0 评论 -
基于源码skywalking使用elasticsearch流程分析
环境准备elasticesearch准备version: '2'services: elasticsearch: image: elasticsearch:6.8.0 container_name: skywalking-es restart: always ports: - 9200:9200 - 9300:9300 environment: .原创 2022-01-13 23:30:00 · 1941 阅读 · 1 评论 -
简单分析skywalking中agent和oap server 中trace信息上报流程
准备工作前一篇博客有写道,idea如何使用源码启动skywalking,可以先查看下前一篇博客。环境描述skywalking-java (master)https://github.com/apache/skywalking-javaskywalking (master)https://github.com/apache/skywalking拦截流程分析看到这个http请求流程,返回了一个trace链路的信息,skywalking是怎么拦截请求的呢?简单分析下:.原创 2021-12-31 17:03:03 · 1611 阅读 · 0 评论 -
源码启动skywalking监控springboot
源码准备先把代码download到本地,master代码,git地址:https://github.com/apache/skywalkingoap-server启动执行命令mvn compile -Dmaven.test.skip=true ,或者使用idea编译启动org.apache.skywalking.oap.server.webapp.ApplicationStartUpskywalking ui 启动安装node js,brew install nodejs启动 npm.原创 2021-12-30 23:15:00 · 1256 阅读 · 0 评论 -
Apollo更新远程配置源码分析
前言响应发布大致流程如下图,下面将从客户端响应ConfigServer配置发布和client启动Apollo监听两个模块讲解Apollo热发布原理。源码追踪源码maven坐标: <dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> .原创 2021-08-27 17:47:37 · 898 阅读 · 0 评论 -
ElasticSearch 基本概念
ElasticSearch 基本概念ElasticSearch 中有几个比较核心的概念,为了方便你理解,我将其与数据库中的概念进行映射,如下图所示:注意:在老版本的 ElasticSearch 中,Index 和 Document 之间还有个 Type 的概念,每个 Index 下可以建立多个 Type,Document 存储时需要指定 Index 和 Type。从 ES 6.0 版本开始单个 Index 中只能有一个 Type,ES 7.0 版本以后将不建议使用 Type,ES 8.0 以后完全不.原创 2021-08-26 10:49:00 · 648 阅读 · 0 评论 -
JDK SPI 机制
前言SPI(Service Provider Interface)主要是被框架开发人员使用的一种技术。例如,使用 Java 语言访问数据库时我们会使用到 java.sql.Driver 接口,每个数据库厂商使用的协议不同,提供的 java.sql.Driver 实现也不同,在开发 java.sql.Driver 接口时,开发人员并不清楚用户最终会使用哪个数据库,在这种情况下就可以使用 Java SPI 机制为 java.sql.Driver 接口寻找具体的实现。当服务的提供者提供了一种接口的实现之后,.原创 2021-08-25 15:32:00 · 290 阅读 · 0 评论 -
OpenTracing入门
前言自从 Google Dapper 的论文发布之后,各大互联网公司和开源社区开发的分布式链路追踪产品百花齐放,同时也给使用者带来了一个问题,各个分布式链路追踪产品的 API 并不兼容,如果用户在各个产品之间进行切换,成本非常高。而 OpenTracing 就完美的解决了这个问题,OpenTracing 通过提供平台无关、厂商无关的 API,帮助开发人员能够方便地添加(或更换)追踪系统。Trace 简介一个 Trace 代表一个事务、请求或是流程在分布式系统中的执行过程。OpenTracing 中.原创 2021-08-25 13:53:29 · 219 阅读 · 0 评论 -
入门 Byte Buddy
为什么需要运行时代码生成我们知道,Java 是一种强类型的编程语言,即要求所有变量和对象都有一个确定的类型,如果在赋值操作中出现类型不兼容的情况,就会抛出异常。强类型检查在大多数情况下是可行的,然而在某些特殊场景下,强类型检查则成了巨大的障碍。例如,在对外提供一个通用 jar 包时,我们通常不能引用用户应用中定义的任何类型,因为当这个通用 jar 包被编译时,我们还不知道这些用户的自定义类型。为了调用用户自定义的类,访问其属性或方法,Java 类库提供了一套反射 API 帮助我们查找未知类型,以及调用.原创 2021-08-25 09:58:08 · 1298 阅读 · 0 评论 -
Prometheus 使用 Victoria Metrics远程存储
前言VictoriaMetrics 是一个支持水平扩展的时序数据库,可以作为 Prometheus的远端存储,并且实现了 PromSQL,可以直接通过 VictoriaMetrics 查询时序数据,避开 Prometheus 查询时的单点瓶颈。部署Victoria Metrics 集群VictoriaMetrics 集群版本的架构如下:vminsert 和 vmselect 是无状态的写入、查询节点,vmstorage 是有状态的存储节点。数据平均分配到 vmstorage 节点,每个 vmst.原创 2021-08-10 19:46:24 · 5603 阅读 · 1 评论 -
prometheus 使用consul服务发现
前言使用 Prometheus监控 SpringBoot 应用,当应用很多,且上下线频繁时,需要不断的更改 Prometheus 的配置文件,不能灵活的使用,可以通过为 Prometheus配置注册中心,从注册中心拉取应用数据获取监控数据。安装consul这里使用docker安装,方便快捷。docker-compose.yml文件version: '3.1'services: consul: image: consul:1.9.4 container_name: "c.原创 2021-08-05 16:53:06 · 619 阅读 · 1 评论 -
Prometheus使用AlertManager webhook、邮件告警
Alertmanager 内部架构先看官方文档中的架构图:负责处理接受client(例如prometheus)发送的告警消息,包括重复告警的发送、聚合、发给相关人员,并且支持多种方式例如email或者pagerduty这种第三方通知告警平台,同时他还提供了静音以及告警抑制的功能。实现一个完整的监控体系需要以下几个功能:数据采集(xxx_export)数据抓取(prometheus)数据存储(prometheus/cortex)规则检测并生成告警(prometheus/cotex.ru.原创 2021-08-04 10:49:48 · 3671 阅读 · 1 评论 -
Docker 安装 Cat 记录
下载下载代码 git clone https://github.com/dianping/cat.git配置 cd cat/docker/vim client.xml修改dockerfile文件,改为国内的镜像mv Dockerfile-e Dockerfilevim docker-compose.yml原创 2021-04-26 18:08:28 · 824 阅读 · 1 评论 -
ansible入门笔记
原创 2020-11-25 10:29:24 · 812 阅读 · 0 评论 -
Prometheus + Grafana 监控 SpringBoot
前言SpringBoot 的 actuator 提供了监控端点。Prometheus 是监控系统,可以从 Springboot 获取监控数据,以时序数据的形式存储,并提供了监控数据的查询服务。Grafana 是专业的 UI 仪表盘系统,支持非常多的数据源,其中就包括 Prometheus,可以便利的从中获取数据,使用仪表盘展示出来。springboot 2 中引入了 micrometer,它可以更方便的对接各种监控系统,包括 Prometheus。所以整体的结构就是:springboot(.原创 2020-11-24 15:50:48 · 1089 阅读 · 0 评论 -
springcloud gateway 整合 sentinel 实现动态限流
原创 2020-11-24 13:49:13 · 1384 阅读 · 3 评论 -
sharding-ui实现sharding-proxy动态更新分库分表规则
前言之前搭建了sharding-proxy,提供给客户端只有一个数据库连接,但是每次更新都需要重启服务,比较麻烦,看了下官方文档,支持zookeeper更新,还提供了页面更新,这里给出详细的搭建步骤。环境中间件版本zookeeper3.4.13sharding-proxy4.1.1sharding-ui4.1.1zookeeper搭建这个之前搭建过,可以查看之前的文章。shardingsphere下载地址:https://github.com/ap.原创 2020-10-24 12:16:29 · 2749 阅读 · 3 评论 -
基于canal和kafka同步,实现binlog同步ElasticSearch
文章目录前言elasticsearch 安装canal安装canal-adapter 安装及配置mysql 安装zk及kafaka安装查看效果注意事项前言中间件版本elasticsearch7.5.2canal1.1.4client-adapter1.1.5-alpha-1zookeeper3.4.13kafka2.6.0mysql5.7.31elasticsearch 安装{"settings":{"number_of_shard.原创 2020-10-11 09:25:32 · 1495 阅读 · 1 评论