展开

关键词

Android 在应用图标上设置未读

packageNameParameter; context = contextParameter; mainActivityName = mainActivityNameParameter;}2.设置未读 * Set the angle number * * @param badgeNumber @desc * public static void setBadgeNumber(int badgeNumber 手机设置角标 只支持8.0以上 * Google phone settings corner Only supports 8.0 or above * * @param badgeNumber @desc the app is in the foreground, the number will be automatically cleared. * * @param badgeNumber @desc receivers.size() > 0; } ** * Oppo 手机 设置角标 * OPPO mobile phone set corner * * @param badgeNumber @desc

2.9K20

关于RabbitMQ费者预取的合理设置

根据RabbitMQ官方文档描述,可以通过“预取”来限制未被确认的,本质上这也是一种对费者进行流控的方法。 需要针对具体的应用场景,适当增大或减小该参值(默认值为0表示不限制),以提高费者吞吐和充分利用资源,参考策略如下:1.针对订单类,因为处理耗时很短,可以适当增大该参值,这样Broker在一次网络通信中会尽可能多地推送一些据给费者 ,以提高费吞吐; 2.对于依赖CPU计算型的耗时任务,该参值则不能设置过大,否则会出现被分配后因为耗时等待一直无法确认而产生堆积,此时即使有别的费者已经空闲也无法再被分配这些已经堆积的, RabbitMQ客户端提供了相应设置方法: 设置预取,默认值为0,不限流channel.basicQos(10);在Spring Boot框架中可以直接通过如下配置参进行设定: listener 类型为direct,设置预取为10,默认值为250(在AbstractMessageListenerContainer中定义的常:DEFAULT_PREFETCH_COUNT)spring.rabbitmq.listener.direct.prefetch

17810
  • 广告
    关闭

    云产品限时秒杀

    云服务器1核2G首年38元,还有多款热门云产品满足您的上云需求

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    IM系统海据是怎么存储的?

    一、与相关的主要场景1、存储和离线。现在的IM系统,都要落地存储。这样如果接收的用户不在线,等他下次上线时,能获取到据。 2、漫游漫游的典型使用场景是,打开某个会话(单聊、群聊、公众号),下拉界面,客户端向服务端请求这个会话的聊天据。漫游需要以会话为检索维度。漫游拉取据的频率相对较低。 我们把这类获取的方式成为拉取历史。三、存储关键点1、离线离线读取频繁(写也有一定压力),但是检索逻辑简单(参看《一个海在线用户即时通讯系统(IM)的完整设计》拉取离线章节)。 离线读取策略参看《一个海在线用户即时通讯系统(IM)的完整设计》拉取离线章节。理论上读取离线的时间复杂度为O(log(N)+M), N 为离线的条, M 为一次读取的条。 如果我在非洲某个国家登录系统,从北京的机房读取据显然不太合适!如何让据靠近用户,是一个更加有挑战的问题。

    2.1K10

    通过Flink实现个推海据的实时统计

    背景报表主要用于统计任务的下发情况。比如,单条推送下发APP用户总有多少,成功推送到手机的有多少,又有多少APP用户点击了弹窗通知并打开APP等。 通过报表,我们可以很直观地看到推送的流转情况、下发到达成功率、用户对的点击情况等。个推在提供推送服务时,为了更好地了解每天的推送情况,会从不同的维度进行据统计,生成报表。 个推每天下发的推送巨大,可以达到百亿级别,原本我们采用的离线统计系统已不能满足业务需求。随着业务能力的不断提升,我们选择了Flink作为据处理引擎,以满足对海推送据的实时统计。 Flink是真正意义上的流式处理,延时更低,能够满足我们报表统计的实时性要求。 Flink可以依靠强大的窗口功能,实现据的增聚合;同时,可以在窗口内进行据的join操作。 首先,我们设置了Event Time作为时间窗口的类型,保证了只会计算当天的据;同时,我们每隔一分钟增统计当日的报表,因此分配1分钟的时间窗口。

    6930

    RocketMQ源码详解:事务、批、延迟

    ◆ 事务◆ 概念RocketMQ 中的事务功能,实际上是 分布式事务中的本地事务表 的实现,只不过,在这里用中间件来代替了据库,同时也帮我们做好了回查的操作。 (opQueue); 用来记录已经被处理了的 op 的偏移 List doneOpOffset = new ArrayList(); 用来记录已经完成了的 half 的偏移 key: long miniOffset, List doneOpOffset) { 首先通过 queue 获取 op ,最大为 32 条 PullResult pullResult = pullOpMsg 在 Broker 端,其投入的过程大体上和普通类似,但是其最后的持久化到硬盘时,这块批被拆分为了普通的单条。 即 RocketMQ 使用批只减少了发送时的宽带传输,对于存储与交给费者的部分并没有获得优化 拆分批为每一个普通while (messagesByteBuff.hasRemaining

    6820

    RocketMQ 实战(五) - 批和事务

    1 批1.1 为什么使用批在很多调优的时候,比如据库批处理,有些请求进行合并发送等都是类似批的实现RocketMQ批发送也是为了追求性能,特别在特别大的时候,批效果就非常明显 1.2 使用批的限制同一批次的应该具有相同主题、相同的配置不支持延迟建议一个批大小最好不要超过1MB2 事务2.1 什么是事务RocketMQ的事务,是指Producer 2.3 事务的使用约束 事务不支持定时和批 为了避免一个被多次检查,导致半队列堆积 RocketMQ限制了单个的默认检查次为15次 通过修改broker配置文件中的transactionCheckMax 参进行调整 特定的时间段之后才检查事务 通过broker配置文件参transactionTimeout或用户配置 CHECK_ IMMUNITY_ TIME_ IN_ SECONDS调整时间一个事务可能被检查或费多次提交过的重新放到用户目标主题可能会失败事务的生产者 ID不能与其他类型的生产者ID共享2.4 事务的状态TransactionStatus.CommitTransaction 提交事务,允许费者费这个TransactionStatus.

    10430

    写入Kafka(五)

    在Kafka的生产者模式主要详细的介绍了作为生产者的中间价,把据写入到Kafka,这样费者才可以据,以及针对这些据进行其他的如据分析等。 但是在实际的应用中,会有大批的实时据需要写入到Kafka的系统里面,因此作为单线程的模式很难满足实时据的写入,需要使用多线程的方式来进行大批据写入,当然作为费者也是写多线程的方式来接收这些实时的据 比如举一个案例,需要把日志系统的信写入到Kafka的系统里面,这就是一个实时的过程,因为在程序执行的过程中,日志系统在进行大的IO的读写,也就意味着这些据都需要写入到Kafka里面。 Properties(); 指定kafka的集群地址 properties.put(bootstrap.servers,localhost:9092); 设置应答机制 properties.put(acks,1); 批提交大小 { Producer objProducer=new org.apache.kafka.clients.producer.KafkaProducer(this.configure()); 模拟发送批

    1.2K40

    ucosii中队列、邮箱、信号的区别

    1、用信号进行行为同步时,只能提供同步的时刻信,不能提供内容信。若被控制方要求得到控制方的内容信时,可以使用邮箱或队列。 2、但由于邮箱里只能存放一条,所以使用邮箱进行任务的同步时,需要满足一个条件:的产生速度总要慢于费速度,即被控制任务总是在等待,否则会导致丢失。 3、若遇到出现的产生速度可能快于费速度的情况时,则可以使用比邮箱更为强大的队列,由于队列可以存放多条,所以队列能够有效解决的临时堆积问题。 但队列的使用仍然需满足一个条件:的平均生产速率比的平均费速率低,否则再长的队列也会溢出。

    33320

    Apache Kafka-费端_批的核心参及功能实现

    batch-size: 16384 # 每次批发送的最大 单位 字节 默认 16K buffer-memory: 33554432 # 每次批发送的最大内存 单位 字节 默认 32M 这里配置为 10 * 1000 ms 过后,不管是否是否到达 batch-size 或者大小到达 buffer-memory 后,都直接发送一次请求。 这里指的是阻塞拉取需要满足至少 fetch-min-size 大小的 fetch-min-size: 10 # poll 一次拉取的最小,单位:字节 max-poll-records: 100 # poll 一次拉取的最大 # Kafka Consumer Listener 监听器配置 listener: missing-topics-fatal: false # 费监听接口监听的主题不存在时 -24}ArtisanCosumerMock收到的:MessageMock{id=32, name=messageSendByAsync-32}从日志中可以看出,发送的 2条费者批费了

    16820

    uCOS | 队列与信号

    今天我们来说一下uCOS的队列与信号。 一、队列队列又称队列,是一种常用于任务间通信的据结构,队列可以在任务与任务间、中断和任务间传递信,实现了任务接收来自其他任务或中断的不固定长度的,任务能够从队列里面读取,当队列中的是空时 当队列中有新时,被阻塞的任务会被唤醒并处理新;当等待的时间超过了指定的阻塞时间,即使队列中尚无有效据,任务也会自动从阻塞态转为就绪态。队列是一种异步的通信方式。 max_qty, 最多可存放目 OS_ERR *p_err) 返回错误类型(2)调用API函 发送: void OSQPost (OS_Q *p_q, void *p_void, OS_MSG_SIZE 通常一个信号的计值用于对应有效的资源,表示剩下可被占用的临界资源,其值的含义分两种情况: 0:表示没有积累下来的释放信号操作,且有可能有在此信号上阻塞的任务。

    32030

    高吞吐系统—kafka

    另外kafka费者组的rebalance一直是一个用户诟病的点,topicparition费者变化都会引发rebalance,rebalance期间整个费者组不能据(即STW,stop CAP原则,kafka提供了充分的参让用户选择,据一致性越强吞吐越低,需要根据业务场景评估。3.据可以重复费不同于传统的队列,队列中的据只能费一次。 生产者批发送producer会为每个partition在本地维护一个buffer,作批发送据用,producer调用close方法时会释放buffer。 可以适当调大batch.size的大小,会增加批发送的条,副作用是会耗一些本地内存,batch.size是每个partition的批发送大小。 使用费者组一定要注意的一个地方是:当topicpartition改费者组内费者任一发生变化时,都会触发kafka rebalance,即重新进行负载均衡,在rebalance期间,改费者组的费者都不能进行

    16520

    队列吞吐调整

    关于吞吐的一些思考 写入队列吞吐取决于以下两个方面 * 网络带宽* 队列(比如Kafka)写入速度 最佳吞吐是让其中之一打满,而一般情况下内网带宽都会非常高,不太可能被打满,所以自然就是讲队列的写入速度打满 ,这就就有两个点需要平衡 * 批写入的大小或者字节多少* 延迟多久写入 go-zero 的 PeriodicalExecutor 和 ChunkExecutor 就是为了这种情况设计的 从队列里的吞吐取决于以下两个方面 * 队列的读取速度,一般情况下队列本身的读取速度相比于处理的速度都是足够快的* 处理速度,这个依赖于业务 这里有个核心问题是不能不考虑业务处理速度,而读取过多的到内存里,否则可能会引起两个问题 : * 内存占用过高,甚至出现OOM,`pod` 也是有 `memory limit` 的* 停止 `pod` 时堆积的来不及处理而导致丢失 解决方案和实现 借用一下 Rob Pike 的一张图 ,这个跟队列费异曲同工。

    3800

    中间件—RocketMQ费(三)(费重试)

    请求做出响应之前,费端会处于阻塞状态,从而限制的处理性能和整体吞吐),以确保能够正常被费。 如果在费过程中,费端突然Crash,这时候费偏移没有commit,等正常恢复后依然还会处理刚刚未commit的。 在RocketMQ中,SubscriptionGroupConfig配置常默认地设置了两个参,一个是retryQueueNums为1(重试队列为1个),另外一个是retryMaxTimes为16 Broker端通过校验判断,如果超过了最大重试费次则会将移至这里所说的死信队列。 根据回发过来的偏移尝试从commitlog日志文件中查询内容,若不存在则返回异常错误。

    1.3K40

    Kafka费者 之 如何提交的偏移

    参考下图的费位移,x 表示某一次拉取操作中此分区的最大偏移,假设当前费者已经费了 x 位置的,那么我们就可以说费者的费位移为 x ,图中也用了 lastConsumedOffset ,这个由费者客户端参 enable.auto.commit 配置,默认值为 true 。 这个默认的自动提交不是每费一条就提交一次,而是定期提交,这个定期的周期时间由客户端 auto.commit.interval.ms 配置,默认值为 5 秒,此参生效的前提是 enable.auto.commit 开启手动提交功能的前提是费者客户端参 enable.auto.commit 配置为 false 。 如果提交失败,错误信和偏移会被记录下来。 三、同步和异步组合提交一般情况下,针对偶尔出现的提交失败,不进行重试不会有太大问题,因为如果提交失败是因为临时问题导致的,那么后续的提交总会有成功的。

    1.6K41

    中间件—RocketMQ费(一)

    本地缓存变中),然后Broker端的后台独立线程—PullRequestHoldService会从pullRequestTable本地缓存变中不断地去取,具体的做法是查询待拉取的偏移是否小于费队列最大偏移 consumer.shutdown();在示例代码中,可以看到业务工程在Consumer启动后,Consumer主动获取MessageQueue的Set集合,遍历该集合中的每一个队列,发送Pull的请求(参中带有队列中的偏移 ),同时需要Consumer端自己保存费的offset偏移至本地变中。 其中,费的偏移需要Consumer端自己去维护。 另外一方面,后台独立线程—rebalanceService根据Topic中队列个和当前费组内费者个进行负载均衡,将产生的对应PullRequest实例放入阻塞队列—pullRequestQueue

    1.1K30

    Kafka:高吞吐精确一次语义以及保证顺序

    前言 Kafka 最初由 Linkedin 公司开发,是一个分布式、支持分区的、多副本的,基于 Zookeeper 协调的分布式系统,其最大的特性就是可以实时的处理大据以满足各种需求场景:比如基于 高吞吐 Kafka 是大据领域无处不在的中间件,目前广泛使用在企业内部的实时据管道,并帮助企业构建自己的流计算应用程序。 批压缩 在很多情况下,系统的瓶颈不是 CPU 或磁盘,而是网络 IO,对于需要在广域网上的据中心之间发送据流水线尤其如此。 Kafka 速度的秘诀在于,它把所有的都变成一个批的文件,并且进行合理的批压缩,减少网络 IO 损耗,通过mmap提高 IO 速度,写入据的时候由于单个partion是末尾添加所以速度最优;读取据的时候配合 这将允许一个生产者发送一批到不同分区的,这些要么全部对任何一个费者可见,要么对任何一个费者都不可见。这个特性也允许你在一个事务中处理据和提交费偏移,从而实现端到端的精确一次语义。

    1.2K01

    Kafka:高吞吐精确一次语义以及保证顺序

    文章目录前言高吞吐顺序读写Page Cache零拷贝分区分段+索引批读写批压缩精确一次语义系统语义概述必须被处理的故障Kafka 中的精确一次语义幂等性:每个分区中精确一次且有序事务:跨分区原子写入保证顺序前言 高吞吐Kafka 是大据领域无处不在的中间件,目前广泛使用在企业内部的实时据管道,并帮助企业构建自己的流计算应用程序。 批压缩在很多情况下,系统的瓶颈不是 CPU 或磁盘,而是网络 IO,对于需要在广域网上的据中心之间发送据流水线尤其如此。 Kafka 速度的秘诀在于,它把所有的都变成一个批的文件,并且进行合理的批压缩,减少网络 IO 损耗,通过mmap提高 IO 速度,写入据的时候由于单个partion是末尾添加所以速度最优;读取据的时候配合 这将允许一个生产者发送一批到不同分区的,这些要么全部对任何一个费者可见,要么对任何一个费者都不可见。这个特性也允许你在一个事务中处理据和提交费偏移,从而实现端到端的精确一次语义。

    6320

    队列中:可靠性、重复积压、利用实现分布式事务

    之间的发送顺序,所以也需要每个Producer分别生成各自的序号,并且需要附加上Producer的标识,在Consumer端按照每个Producer分别来检测序号的连续性Consumer实例的最好和分区一致 也就是说,没什么可靠性保证,允许丢。一般都是一些对可靠性要求不太高的监控场景使用,比如每分钟上报一次机房温度据,可以接受据少丢失At least once:至少一次。 可以批据库读取据,然后批来发送,同样用少的并发就可以获得非常高的吞吐**2、费端性能优化使用队列的时候,大部分的性能问题都出现在费端,如果费的速度跟不上发送生产的速度,就会造成积压 在扩容Consumer的实例的同时,必须同步扩容主题中的分区,确保Consumer的实例和分区是相等的。 如果Consumer的实例超过分区,这样的扩容是无效的2、积压了该如何处理?

    80720

    web 桌面推送

    推送简易版本,并不会跳转到对应的页面,跳转到对应页面等下次更新``` var n = new Notification(‘状态更新提醒’,{ body: ‘你的朋友圈有3条新状态,快去查看吧’, data

    23010

    可靠性、重复积压、利用实现分布式事务

    的标识,在Consumer端按照每个Producer分别来检测序号的连续性Consumer实例的最好和分区一致,做到Consumer和分区一一对应,这样会比较方便地在Consumer内检测序号的连续性 也就是说,没什么可靠性保证,允许丢。一般都是一些对可靠性要求不太高的监控场景使用,比如每分钟上报一次机房温度据,可以接受据少丢失At least once:至少一次。 可以批据库读取据,然后批来发送,同样用少的并发就可以获得非常高的吞吐**2、费端性能优化使用队列的时候,大部分的性能问题都出现在费端,如果费的速度跟不上发送生产的速度,就会造成积压 在扩容Consumer的实例的同时,必须同步扩容主题中的分区,确保Consumer的实例和分区是相等的。 如果Consumer的实例超过分区,这样的扩容是无效的2、积压了该如何处理?

    51820

    相关产品

    • 消息队列 TDMQ

      消息队列 TDMQ

      消息队列 TDMQ 是基于 Apache 顶级开源项目Pulsar自研的金融级分布式消息中间件,是一款具备跨城高一致、高可靠、高并发的分布式消息队列,拥有原生Java 、 C++、Python、GO 多种API, 支持 HTTP 协议方式接入,可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券