中间件
文章平均质量分 79
中间件
FeelTouch Labs
这个作者很懒,什么都没留下…
展开
-
LevelDB RockesDB LSM
LevelDBlevelDB是同样也是一个Key-value数据库,但是相对于Redis、memcache来说,levelDB是基于内存-磁盘来实现的,但在大部分场景下也表现出了不逊色于Redis、Memcache的性能。levelDB由google实现并开源,轻松支持billion量级的数据,并且性能没有太大的衰退,下面来看一下LevelDB的具体实现。LevelDB实现既然是一个key-value 数据库,显而易见支持的api肯定有put/get/delete(delete实质上就是原创 2024-09-06 01:21:49 · 786 阅读 · 0 评论 -
阿里中间件——diamond
获取的地址列表,会保存在client本地,当出现网络异常,无法从网络获取地址列表时,client会使用本地保存的地址列表。c. diamond服务端是一个集群,集群中的每台机器连接同一个mysql,集群之间的数据同步通过两种方式进行,一是每台server定时去mysql dump数据到本地文件,二是某一台server接收发布数据请求,在更新完mysql和本机的本地文件后,发送一个HTTP请求(通知)到集群中的其他几台server,其他server收到通知,去mysql中将刚刚更新的数据dump到本地文件。原创 2024-09-06 00:56:24 · 1120 阅读 · 0 评论 -
RocketMQ 消息的顺序和重复
如果是新的消息,由于MQServer上面还没有创建对应的Topic,这个时候,如果上面的配置打开的话,会返回默认TOPIC的(RocketMQ会在每台broker上面创建名为TBW102的TOPIC)路由信息,然后Producer会选择一台Broker发送消息,选中的broker在存储消息时,发现消息的topic还没有创建,就会自动创建topic。第2条原理就是利用一张日志表来记录已经处理成功的消息的ID,如果新到的消息ID已经在日志表中,那么就不再处理这条消息。消息的中转者,负责存储和转发消息。原创 2024-07-22 17:07:54 · 1096 阅读 · 0 评论 -
kafka vs rocketmq: 不要只顾着吞吐量而忘了延迟这个指标
在大包和批量的场景下,RocketMQ 和 Kafka 目前已经相差无几,此时的瓶颈已经转移到磁盘的吞吐能力上。自从 RocketMQ 进入 Apache 基金会后,团队大力发展社区生态,包括和 Apache Spark,Apache Flink,Apache Storm,Apache Ignite 等顶级开源产品有了更多的生态连接与整合能力。RocketMQ 在低延迟,消息重试与追踪,海量 Topic,多租户,一致性多副本,数据可靠性等问题上进行了大量优化,对电商,金融领域的用户来说,是一大利好。原创 2024-07-22 01:25:00 · 292 阅读 · 0 评论 -
Spring Cloud Config、Apollo、Nacos和Archaius对比
优点:Spring Cloud Config为微服务提供了集中化的配置管理,支持基于Git的分布式配置中心,可以配合Spring Cloud使用,提供动态刷新配置的功能。Apollo是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。优点:集中化管理不同环境、不同集群的配置,配置修改后能够实时推送到应用端,具备完善的权限、流程治理等特性,适用于微服务配置管理场景。界面友好,易于使用。缺点:尚无明确提及。原创 2023-11-10 14:29:46 · 386 阅读 · 0 评论 -
RocketMQ的长轮询(Long Polling)实现分析
消息队列一般在消费端都会提供push和pull两种模式,RocketMQ同样实现了这两种模式,分别提供了两个实现类:DefaultMQPushConsumer和DefaultMQPullConsumer;push模式:推送模式,即服务端有数据之后立马推送消息给客户端,需要客户端和服务器建立长连接,实时性很高,对客户端来说也简单,接收处理消息即可;缺点就是服务端不知道客户端处理消息的能力,可能会导致数据积压,同时也增加了服务端的工作量,影响服务端的性能;pull模式。原创 2023-10-16 17:51:34 · 427 阅读 · 0 评论 -
一个成功项目的诞生:RocketMQ项目初期的设计思考
2017-01-12消息中间件通常需要解决哪些问题,在解决这些问题当中会遇到什么困难,Apache RocketMQ作为阿里开源的一款高性能、高吞吐量的分布式消息中间件否可以解决,规范中如何定义这些问题。然后本文将介绍RocketMQ的架构设计,以期让读者快速了解RocketMQ。原创 2023-10-13 17:49:34 · 103 阅读 · 0 评论 -
Kafka 核心知识点灵魂 16 问
而 offset 的信息在 kafka0.8 版本之前保存在 zookeeper 中,在 0.8 版本之后保存到 topic 中,即使消费者在运行过程中挂掉了,再次启动的时候会找到 offset 的值,找到之前消费消息的位置,接着消费,由于 offset 的信息写入的时候并不是每条消息消费完成后都写入的,所以这种情况有可能会造成重复消费,但是不会丢失消息。可以采用一对多的方式,一个生产者发布消息,可以被多个订阅 topic 的服务消费到,供多个毫无关联的业务使用。可以简化代码的实现逻辑,减少出错的可能;转载 2023-09-01 16:07:16 · 215 阅读 · 0 评论 -
Elasticsearch之SearchScroll原理剖析和性能及稳定性优化
Elasticsearch是一款优秀的开源企业级搜索引擎,其查询接口主要为Search接口,提供了丰富的各类查询、排序、统计聚合等功能。本文将要介绍的是另一个查询接口SearchScroll,同时介绍一下我们在这方面做的一些性能和稳定性等方面的优化工作。Elasticsearch的SearchScroll接口可用于从索引中检索大量数据,或者是所有的数据,值得注意的是Elasticsearch的SearchScroll请求不是为了用户进行实时请求,而是为了更快导出大量数据。同时该接口提供稳定的查询结果,不会转载 2021-09-30 11:55:55 · 1192 阅读 · 1 评论 -
关于Elasticsearch里面聚合group的坑(少计算shard)
具体的坑在哪里呢?具体就是会有个别的shard不被统计进来,也就是group by的和,会少于直接利用sum得出的结果。具体表现执行sum的命令和结果命令:GET /transaction/_search{ "aggs": { "sum_coins": { "sum": { "field": "consumeInfo.coins" }} }, "query":{ "bool": { "should": [原创 2021-09-22 16:13:15 · 558 阅读 · 2 评论 -
一文搞懂 ElasticSearch 之 Mapping
首先来看下什么是 Mapping什么是 Mapping?在一篇文章带你搞定 ElasticSearch 术语中,我们讲到了 Mapping 类似于数据库中的表结构定义 schema,它有以下几个作用:定义索引中的字段的名称定义字段的数据类型,比如字符串、数字、布尔字段,倒排索引的相关配置,比如设置某个字段为不被索引、记录 position 等在 ES 早期版本,一个索引下是可以有多个 Type ,从 7.0 开始,一个索引只有一个 Type,也可以说一个 Type 有一个 Mapping 定义。转载 2021-08-20 17:27:54 · 432 阅读 · 0 评论 -
Kibana 搜索语法
一 字段搜索限定字段全文搜索 :field:value精确搜索 :filed:"value"(关键字加上双引号)字段本身是否存在_exists_:http:返回结果中需要有 http 字段_missing_:http:不能含有 http 字段二 通配符?匹配单个字符*匹配0到多个字符kiba?a, el*search? * 不能用作第一个字符,例如 :?text *text三 正则es支持部分正则功能mesg:/mes{2}ages?/四 模...转载 2021-02-24 16:15:13 · 1758 阅读 · 0 评论 -
Arthas实战全录
一、Arthas基础认识1. 可以做什么?Arthas 是Alibaba开源的Java诊断工具,采用命令行交互模式,提供了丰富的功能,是排查jvm相关问题的利器。在逛github时,发现了这款利器,深入了解之后,简直惊为天人。下面先列举一下它能做的一些事情:提供性能看板,包括线程、cpu、内存等信息,并且会定时的刷新。 根据各种条件查看线程快照。比如找出cpu占用率最高的n个线程等 输出jvm的各种信息,如gc算法、jdk版本、ClassPath等 查看/设置sysprop和sysenv原创 2021-02-19 17:29:28 · 1131 阅读 · 0 评论 -
ElasticSearch索引数据
一、Query String Search(‘Query String’方式的搜索)1.搜索全部商品GET /shop_index/productInfo/_search返回结果:{ "took": 8, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": 3,原创 2021-02-19 14:49:40 · 436 阅读 · 0 评论 -
RocketMQ与Kafka差异全面对比
淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用Mysql作为消息存储媒介,可完全水平扩容,为了进一步降低成本,我们认为存储部分可以进一步优化,2011年初,Linkin开源了Kafka这个优秀的消息中间件,淘宝中间件团队在对Kafka做过充分Review之后,Kafka无限消息堆积,高效的持久化速度吸引了我们,但是同时发现这个消息系统主要定位于日志传输,对于使用在淘宝交易、订单...原创 2020-01-10 01:24:30 · 1804 阅读 · 0 评论 -
mmap共享存储映射(存储I/O映射)系列详解
转载:https://blog.csdn.net/qq_36359022/article/details/79992287参考:https://blog.csdn.net/hj605635529/article/details/73163513mmap共享存储映射又称为存储I/O映射,是Unix**共享内存**概念中的一种。在Unix进程间通信中,大致有1. 管道 ...转载 2019-05-11 01:37:59 · 757 阅读 · 0 评论 -
RocketMQ 4.2.0 broker JVM优化参数深入刨析
背景线上使用RocketMQ有段时间了,可以说是相当稳定,除了代码和架构方面合理意外,其一系列的启动优化参数也是非常值得研究,接下来以broker的启动参数为例进行一次浅析。启动命令/usr/lib/jvm/java-1.8.0-openjdk.x86_64/bin/java -server -Xms4g -Xmx4g -Xmn2g -XX:+UseG1GC -XX:G1HeapRe...原创 2018-12-25 00:34:51 · 2944 阅读 · 2 评论 -
RocketMQ实战疑问和原理解答(更新至Q9)
Q1:怎么解决remote too much exception的问题呢?A:主要是的客户端发送的TPS太高,达到了broker的瓶颈。Q2:broker无法写入store.log的日志报错,报异常如下:2018-12-17 14:09:37 WARN StoreScheduledThread1 - disk space will be full soon, but delete ...原创 2018-12-19 00:51:24 · 2304 阅读 · 0 评论 -
Rocket MQ发送消息的三种方式初析
前言MQ 发送消息有三种实现方式:可靠同步发送、可靠异步发送、单向(Oneway)发送。基于版本4.2.0+。注意:顺序消息只支持可靠同步发送。可靠同步发送原理:同步发送是指消息发送方发出数据后,会在收到接收方发回响应之后才发下一个数据包的通讯方式。场景:此种方式应用场景非常广泛,例如重要通知邮件、报名短信通知、营销短信系统等。可靠异步发送原理:异步发送是指发送方发出数...原创 2018-08-13 01:12:22 · 4142 阅读 · 3 评论 -
Rocket MQ 4.3.0分布式事务消息初析
前言从4.3.0版本开始支持事务消息,这是一个令人振奋的消息,线上目前4.2.0,在正式投产使用之前先进性简单分析。帮助用户实现类似 X/Open XA 的分布事务功能,通过 MQ 事务消息能达到分布式事务的最终一致。基础概念事务消息:MQ 提供类似 X/Open XA 的分布事务功能,通过 MQ 事务消息能达到分布式事务的最终一致。 半消息:暂不能投递的消息,发送方已经将消息成功发...原创 2018-08-13 00:15:27 · 2652 阅读 · 3 评论 -
RocketMQ Series---No route info of this topic异常分析
异常原因1. Broker禁止自动创建Topic,且用户没有通过手工方式创建Topic2. Broker没有正确连接到Name Server3. Producer没有正确连接到Name Server 解决与验证方法解决问题1:启动顺序要先启动nameserver,再启动broker,启动broker时加上autoCreateTopicEnable=true 例如 nohup sh mqbroker...原创 2018-05-13 01:27:37 · 4633 阅读 · 1 评论 -
Zookeeper系列3---Curator框架对zookeeper进行节点操作
Curator框架对zookeeper进行节点操作https://github.com/Netflix/curatorhttp://curator.apache.org/Java中可以利用Curator框架进行对zookeeper的相关操作 <dependencies> <dependency> <gro...转载 2020-04-12 21:50:55 · 355 阅读 · 0 评论 -
Zookeeper系列2---参数调优和集群配置
Zookeeper参数zookeeper的默认配置文件为zookeeper/conf/zoo_sample.cfg,需要将其修改为zoo.cfg。其中各配置项的含义,解释如下:1.tickTime:Client-Server通信心跳时间Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。...转载 2019-11-18 00:17:06 · 615 阅读 · 0 评论 -
Zookeeper实现配置管理和集群管理的应用实战[Pyhon版]
Kafka在很多公司被用作分布式高性能消息队列,kafka之前我只用过redis的list来做简单的队列处理,也还算好用,可能数据量比较小,也是单机运行,未出现过问题,用作轻量级消息队列还是比较好用的。而redis的作者antirez,设计redis的初衷并不是用来做消息队列,但用它做消息队列的人貌似还挺多,以至于后来antirez后来新开了个项目disque,专门用来做消息队列,但这个不是本文的...转载 2019-11-18 00:11:27 · 465 阅读 · 0 评论 -
ZooKeeper客户端客户端命令和四字指令操作
目录客户端命令连接客户端查看帮助 help or config查询指令 ls 或 ls2获取指定节点内容get创建节点create退出 quit修改数据set删除执行delete四字指令Zookeeper原理、安装、配置、场景全解析Reference客户端命令启动ZooKeeper后直接利用# ps aux | grep java命...原创 2019-11-03 19:33:20 · 787 阅读 · 0 评论 -
hadoop2.5.2+zookeeper3.4.6+hbase0.99.2
一、hadoop安装参考http://blog.csdn.net/bahaidong/article/details/41865943二、zookeeper安装用户为hadoop,安装目录为/opt下面上传安装文件到/opt下面root用户解压[root@master opt]$ tar -zxvf zookeeper-3.4.6.tar.gz转载 2015-06-17 23:00:42 · 1048 阅读 · 0 评论 -
日志系统---从 Spark Streaming 到 Apache Flink:bilibili 实时平台的架构与实践
Flink 中文社区https://www.slidestalk.com/FlinkChina一、实时计算的痛点1.痛点各个业务部门进行业务研发时都有实时计算的需求。早期,在没有平台体系做支撑时开发工作难度较大,由于不同业务部门的语言种类和体系不同,导致管理和维护非常困难。其次,bilibili 有很多关于用户增长、渠道投放的分析等 BI 分析任务。而且还需要对实时...转载 2020-02-17 21:13:35 · 1358 阅读 · 0 评论 -
日志系统---配置rhel 6.4(64位)安装使用syslog-ng 3.5
第一步:安装wget http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/3.5.4.1/source/syslog-ng_3.5.4.1.tar.gzwget http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/3.5...转载 2020-02-09 23:23:39 · 411 阅读 · 0 评论 -
RocketMQ最佳实践之千问千答
Q1:同一个ConsumerGroup组的所有consumer能均衡消费同一个topic的所有queue吗?A1:queue的总数 = master机器个数 * 指定topic的queue个数如果某个topic有4个queue,在有两台master机器场景下, 存在6个consumer,那么第一个、第二个Consumer消费2个队列,其余consumer消费1个队列。如果Consumer...原创 2019-10-17 00:55:33 · 879 阅读 · 4 评论 -
从nacos-spring-boot-project角度全面看Springboot Starter
一、作用与原理首先说说原理,我们知道使用一个公用的starter的时候,只需要将相应的依赖添加的Maven的配置文件当中即可,免去了自己需要引用很多依赖类,并且SpringBoot会自动进行类的自动配置。那么 SpringBoot 是如何知道要实例化哪些类,并进行自动配置的呢? 下面简单说一下。首先,SpringBoot 在启动时会去依赖的starter包中寻找resources/MET...原创 2019-05-11 17:02:49 · 1705 阅读 · 0 评论 -
Sentinel系列6--- 实战规则持久化
规则持久化的5种方式规则丢失无论是通过硬编码的方式来更新规则,还是通过接入 Sentinel Dashboard 后,在页面上操作来更新规则,都无法避免一个问题,那就是服务重新后,规则就丢失了,因为默认情况下规则是保存在内存中的。Dashboard 是通过 transport 模块来获取每个 Sentinel 客户端中的规则的,获取到的规则通过 RuleRepository 接口保存在...转载 2019-11-03 15:52:24 · 839 阅读 · 5 评论 -
Sentinel系列5--- 实战控制台篇
通过 sentinel 的控制台,我们可以对规则进行查询和修改,也可以查看到实时监控,机器列表等信息,所以我们需要对 sentinel 的控制台做个完整的了解。部署控制台首先需要启动控制台, sentinel 的控制台是用 spring boot 写的一个web 应用,我们有几种方式来获取控制台:下载可执行 jar 包从 release 页面 下载截止目前为止最新版本的控制台 ja...转载 2019-11-03 15:45:08 · 1211 阅读 · 0 评论 -
Sentinel系列4--- 实战限流篇
我们已经知道了 Sentinel 的三大功能: 限流 降级 系统保护。现在让我们来了解下具体的使用方法,以限流来演示具体的步骤。引入依赖首先肯定是要先引入需要的依赖,如下所示:<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-core...转载 2019-11-03 15:41:23 · 1684 阅读 · 0 评论 -
Sentinel系列3---基于滑动时间窗口的实时指标统计分析
本篇文章我将深入研究下sentinel是如何进行qps等指标的统计的,首先要确定的一点是,sentinel是基于滑动时间窗口来实现的。化整为零我们已经知道了Slot是从第一个往后一直传递到最后一个的,且当信息传递到StatisticSlot时,这里就开始进行统计了,统计的结果又会被后续的Slot所采用,作为规则校验的依据。我们先来看一段非常熟悉的代码,就是StatisticSlot中的en...转载 2019-11-03 15:11:47 · 1288 阅读 · 0 评论 -
Sentinel系列2---资源调用链原理分析
我们已经知道了sentinel实现限流降级的原理,其核心就是一堆Slot组成的调用链。这里大概的介绍下每种Slot的功能职责:NodeSelectorSlot负责收集资源的路径,并将这些资源的调用路径,以树状结构存储起来,用于根据调用路径来限流降级; ClusterBuilderSlot则用于存储资源的统计信息以及调用者信息,例如该资源的 RT, QPS, thread count ...转载 2019-11-03 14:33:29 · 360 阅读 · 0 评论 -
Sentinel系列1---限流降级神器原理分析
Sentinel 是阿里中间件团队开源的,面向分布式服务架构的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。大家可能会问:Sentinel 和之前常用的熔断降级库 Netflix Hystrix 有什么异同呢?Sentinel官网有一个对比的文章,这里摘抄一个总结的表格,具体的对比可以点此 链接 查看。对比内容 ...转载 2019-11-03 11:52:54 · 1293 阅读 · 1 评论 -
Protocol buffer---Protobuf3开发指南
转自:https://blog.csdn.net/u011518120/article/details/54604615 感谢定义一个消息类型 指定字段类型分配标识号指定字段规则添加更多消息类型添加注释保留标识符(Reserved)从.proto文件生成了什么?标量数值类型默认值枚举使用其他消息类型 导入定义使用proto2消息类型嵌套类型更新一个消息类型AnyOneof 使用OneofOneof...转载 2018-05-13 21:16:22 · 3524 阅读 · 0 评论 -
Kafka系列---Kafka客户端参数配置最佳实践解析
Kafka客户端的配置参数很多,以下提供Producer和Consumer几个常用参数配置。表1Producer参数 参数 默认值 推荐值 说明 acks 1 高可靠:all 高吞吐:1 收到Server端确认信号个数,表示procuder需要收到多少个这样的确认信号,算消息发送成功。acks参数代表了数据备份的可用性。常用选项:..原创 2020-07-11 17:48:51 · 1141 阅读 · 0 评论 -
Kafka系列---Kafka客户端使用最佳实践
目录1. consumer使用规范2. producer使用规范3. topic使用规范4. 其他建议1. consumer使用规范consumer的owner线程需确保不会异常退出,避免客户端无法发起消费请求,阻塞消费。 确保处理完消息后再做消息commit,避免业务消息处理失败,无法重新拉取处理失败的消息。 consumer不能频繁加入和退出group,频繁加入和退出,会导致consumer频繁做rebalance,阻塞消费。 consumer数量不能超过topic分.原创 2020-07-11 17:44:30 · 931 阅读 · 0 评论 -
Kafka系列---TimingWheel在定时和延迟任务中的妙用
背景Kafka中存在大量的延迟操作,比如延迟生产、延迟拉取以及延迟删除等。Kafka并没有使用JDK自带的Timer或者DelayQueue来实现延迟的功能,而是基于时间轮自定义了一个用于实现延迟功能的定时器(SystemTimer)。JDK的Timer和DelayQueue插入和删除操作的平均时间复杂度为O(nlog(n)),并不能满足Kafka的高性能要求,而基于时间轮可以将插入和删除操作...原创 2020-01-12 01:11:03 · 3376 阅读 · 3 评论