[转]分布式系统之消息队列
1. 2. 一、MQ简介 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。 使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ 3. 二、消息队列应用场景 以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景。
Just One Pure ITer
1. 2. 一、MQ简介 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。 使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ 3. 二、消息队列应用场景 以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景。
Redis High Avaliable Scale Architect
by leelight · Published September 23, 2018 · Last modified June 15, 2019
Redis 通常不会被用作主要的数据存储,但它在存储和访问可容忍丢失的临时数据(如度量指标、会话状态、缓存)方面却独有长处,并且速度非常快,不仅提供了最佳性能,还内置了一组非常有用的数据结构。它是现代技术栈中最常见的主要部件之一。 Stripe(一家做支付的硅谷创业公司)的速率限定器就是基于 Redis 构建的,这些限速器运行在一个 Redis 实例上。Redis 主服务器有一些用于失效备援的追随者,不过在任何时候,都只有一个节点在处理读写操作。 各种消息来源声称,一个 Redis 节点每秒可以处理百万次操作。尽管我们的操作没有那么多,但也不会很少。每个速率限定器都需要运行多个 Redis 命令,而每个 API 请求都要通过很多个速率限定器。所以,每个节点每秒钟需要处理数万次到数十万次的操作。 如果节点出现饱和,就会不断出现故障。我们的服务可以容忍 Redis 的不可用,因此大多数情况下是没有问题的,但在某些情况下,问题的严重程度会升级。我们最后通过迁移到包含 10 节点的 Redis 集群来解决这个问题。对性能的影响可以忽略不计,重要的是现在我们可以实现水平可伸缩。
在日常 Java 的开发中,性能调优肯定是很多人不能绕开的一个环节。而其中最简单,也是最基础的一个问题就是如何定位消耗 CPU 最多的线程。这篇文章中你假笨以一个简单的 Test 例子为蓝本,给各位总结了分析这类问题的常用『套路』。
今天和大家简单聊聊MySQL的约束主键与唯一索引约束: PRIMARY KEY and UNIQUE Index Constraints 文章不长,保证有收获。
第一篇,说说MySQL两个最常用的存储引擎,MyISAM和InnoDB。照自己的理解,把一些知识点总结出来,不只说知识点,多讲“为什么”。
我试图在 MariaDB(MySQL)上运行一个简单的连接查询,但性能简直糟糕透了。下面将介绍我是如何通过两个简单的 Unix 命令,将查询时间从 380 小时降到 12 小时以下的。 下面就是这个查询,它是 GHTorrent 分析的一部分,我使用了关系在线分析处理框架 simple-rolap 来实现这个分析。
1 2 3 4 5 6 |
select distinct project_commits.project_id, date_format(created_at, '%x%v1') as week_commit from project_commits left join commits on project_commits.commit_id = commits.id; |
两个连接字段都有索引。不过,MariaDB 是通过对 project_commits 进行全表扫描和对 commits 进行索引查找来实现连接的。这可以从 EXPLAIN 的输出看出来。
在聊数据库与缓存一致性问题之前,先聊聊数据库主库与从库的一致性问题。 问:常见的数据库集群架构如何? 答:一主多从,主从同步,读写分离。
缓存与数据库的操作时序,不管是《5.2 Cache Aside Pattern》中的方案,还是《5.1 究竟先操作缓存,还是数据库?》中的方案,都会遇到缓存与数据库不一致的问题。今天聊聊这个问题。
《 4. 缓存,究竟是淘汰,还是修改?》发出后,有朋友提到,高并发的情况下,缓存的更新可能存在问题,今天简单聊聊这个话题。 业务场景: (1)调用第三方服务,例如微信,一般会分配一个token,每次访问接口需要带上这个token; (2)这个token是有有效期的,当token过期时,需要去重新认证申请; (3)也可以在token过期前重新申请,但此时旧token会失效。
在《5.1 究竟先操作缓存,还是数据库?》,有同学在评论提出,相关方案违背了“Cache Aside Pattern”的原则,故今天聊一聊Cache Aside Pattern。 另外,在讨论技术方案时,尽量不说: “你是错的,应该怎么样” “facebook不是这样,所以你是错的” 画外音:凭什么facebook就是真理?它的方案只是适合它的业务而已。 说明适用场景,说明来龙去脉,说明前因后果,比具体使用什么方案更重要。
Follow:
Cookie | Duration | Description |
---|---|---|
cookielawinfo-checkbox-analytics | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics". |
cookielawinfo-checkbox-functional | 11 months | The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional". |
cookielawinfo-checkbox-necessary | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary". |
cookielawinfo-checkbox-others | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other. |
cookielawinfo-checkbox-performance | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance". |
viewed_cookie_policy | 11 months | The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data. |