阿里分布式开放消息服务(ONS)原理与实践——笔记整理
1、MQ场景
1)订单异步解耦
2)解决分布式事务问题
3)应用于聊天平台
4)大规模机器的Cache同步
5)MySQL BinLog订阅数据分发
2、ONS应用场景
异步、解耦、最终一致、并行
3、设计假定
1)每台PC机器都可能down机不可服务
2)任意集群都可能处理能力不足
3)最坏情况一定会发生
4)内网环境需要低延迟来提供你最佳用户体验
4、关键设计
1)分布式集群化
a、理论上无限处理能力
b、集群级别高可用
2)强数据安全
a、单机磁盘级别冗余
b、单组多队列级别冗余
c、多组消息队列冗余
3)海量数据堆积
a、推模式:订阅者逻辑简单
b、拉模式:关注吞吐量,快
c、推拉结合:队列通知消费者,消费者去拉取(两次交互)
d、阿里采用长连接和轮询:轮询去拉,有则拉取,无则保持长连接等待,直到有消息
4)毫秒级投递延迟
5、关键概念
1)Topic:第一级消息类型,主标题
2)Tug:第二级消息类型,分标题
3)发送组:生产者所在集群
4)订阅组:消费者所在集群
5)RocketMQ不是一对一,也不是一对多,是随机一对一
6)网络三种状态:成功、失败、没响应
6、消息乱序问题:Message服务器不处理,恰好不需要解决
1)发送时对消息进行编号
2)一组消息只有唯一一个订阅者处理(sharding)
3)一组消息的数量(即“锁的颗粒度”)越小越好
7、消息重复问题
1)重复原因:网络不可达
2)幂等:某个操作无论重复多少次,结果都一样(不需要解决,性能极高)
3)非幂等,去重
a、保证有个唯一ID标记每一条消息;
b、保证消息处理成功与去重表日志同时出现
4)去重代价:额外的tps和qps
8、事务的分布式优化
1)事务1-->MQ Server-->事务2
2)同时成功,同时失败:
a、发消息;
b、执行事务1;
c、确认消息发送;
d、投递消息到消费者
3)处理超时问题(重复):事务2增加消息确认表(去重表)
4)消息失败(事务2失败):记录后人工处理(小概率事件)
---------------------
作者:猴子哥哥1024
来源:CSDN
原文:https://blog.csdn.net/qq_21033663/article/details/73379103
版权声明:本文为博主原创文章,转载请附上博文链接!
阿里分布式开放消息服务(ONS)原理与实践——笔记整理的更多相关文章
- 分布式开放消息系统(RocketMQ)的原理与实践(转)
转自:http://www.jianshu.com/p/453c6e7ff81c 分布式消息系统作为实现分布式系统可扩展.可伸缩性的关键组件,需要具有高吞吐量.高可用等特点.而谈到消息系统的设计,就回 ...
- 开个坑, 写个阿里云开放储存服务(OSS)的C++版SDK以及客户端
这应该是继我研究手册QQ协议后的第2个稍微正式一点的网络程序, 不只是Scoket套接字编程, 还涉及到更多的HTTP协议知识! 阿里云开放储存服务OSS官方已经提供了不少SDK, 包括PHP/Pyt ...
- 基于PHP实现阿里云开放存储服务
开放存储服务(OpenStorageService,简称OSS),是阿里云对外提供的海量,安全,低成本,高可靠的云存储服务.用户可以通过简单的API(REST方式的接口),在任何时间.任何地点.任何互 ...
- 【Microsoft Azure学习之旅】消息服务Service Bus的学习笔记及Demo示例
今年项目组做的是Cloud产品,有幸接触到了云计算的知识,也了解并使用了当今流行的云计算平台Amazon AWS与Microsoft Azure.我们的产品最初只部署在AWS平台上,现在产品决定同时支 ...
- 分布式开放消息系统(RocketMQ)的原理与实践
分布式消息系统作为实现分布式系统可扩展.可伸缩性的关键组件,需要具有高吞吐量.高可用等特点.而谈到消息系统的设计,就回避不了两个问题: 消息的顺序问题 消息的重复问题 RocketMQ作为阿里开源的一 ...
- 分布式开放消息系统RocketMQ的原理与实践(消息的顺序问题、重复问题、可靠消息/事务消息)
备注:1.如果您此前未接触过RocketMQ,请先阅读附录部分,以便了解RocketMQ的整体架构和相关术语2.文中的MQServer与Broker表示同一概念 分布式消息系统作为实现分布式系统可扩展 ...
- 2MyBatis入门--深入浅出MyBatis技术原理与实践(笔记)
什么是 MyBatis ? MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis ...
- 3MyBatis配置--深入浅出MyBatis技术原理与实践(笔记)
XML 映射配置文件 configuration 配置 properties 属性 settings 设置 typeAliases 类型命名 typeHandlers 类型处理器 objectFact ...
- 分布式消息中间件rocketmq的原理与实践
RocketMQ作为阿里开源的一款高性能.高吞吐量的消息中间件,它是怎样来解决这两个问题的?RocketMQ 有哪些关键特性?其实现原理是怎样的? 关键特性以及其实现原理 一.顺序消息 消息有序指的是 ...
随机推荐
- Vue - 实现双击显示编辑框;自动聚焦点击的显示框;点击编辑框外的地方,隐藏编辑框
实现这三个功能的踩坑记录. 1. 需求 在Vue中,有一个input, 双击时编辑文本,点击该input节点外的其他地方,则取消编辑. 那么这里有三个要实现的地方 第一是双击显示编辑框. 第二是自动聚 ...
- 安装Anaconda3时出现conda不是内部或者外部命令
在win10,64位,python版本为3.7的环境下安装anaconda3的时候,无法在命令行执行conda命令,一直提示conda不是内部或者外部命令,参考网上的修改环境变量,修改完后还是没有用, ...
- numpy函数hstack,vstack,dstack简介
vstack.hstack和dstack都用于把几个小数组合并成一个大数组.它们的差别是小数组的元素在大数组中的排列顺序有所不同.把两部手机摆到一起有几种方式?水平的左右排列,垂直的上下排列,还可以把 ...
- 【PAT甲级】1096 Consecutive Factors (20 分)
题意: 输入一个int范围内的正整数,输出它最多可以被分解为多少个连续的因子并输出这些因子以*连接. trick: 测试点5包含N本身是一个素数的数据,此时应当输出1并把N输出. 测试点5包含一个2e ...
- python--小游戏(循环+随机)
1 import time 2 import random 3 4 player_victory = 0 5 enemy_victory = 0 6 a1 = True 7 while a1: 8 f ...
- 5_1 大理石在哪儿(UVa10474)<排序与查找>
Raju和Meena喜欢玩弹珠,他们有许多上面有号码的弹珠.一开始时,Raju按照弹珠上面的号码由小到大排成一列,然后Meena会要求Raju找出某个号码的第一颗弹珠所在的位置.她会算1…2…3…,如 ...
- UIResponder的API
@property(nonatomic, readonly) UIResponder *nextResponder; 返回响应者链中的下一个响应者,或者nil如果没有下一个响应者. @property ...
- opencv python:模糊操作
均值模糊 中值模糊 自定义模糊 模糊操作的基本原理 基于离散卷积 定义好每个卷积核 不同卷积核得到不同的卷积效果 模糊是卷积的一种表象 blur cv2.blur(image, (1, 3)) 第二个 ...
- HDU3173 Dominos
单向并查集,问至少给几个点可以遍历全图,连通块数量n,入度为0的点的数量m,取max(n,m)~ #include<cstdio> #include<algorithm> #i ...
- float,double,int的区别
int num = 10/4; float num2 = 10/4; double num3 = 10.0/4.0; System.out.println(num); System.out.print ...