天天即时:分布式集群化设计——MySQLServer

发布时间:   来源:CSDN  


(资料图片)

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和qps8、事务的分布式优化    1)事务1-->MQ Server-->事务2    2)同时成功,同时失败:        a、发消息;        b、执行事务1;        c、确认消息发送;        d、投递消息到消费者    3)处理超时问题(重复):事务2增加消息确认表(去重表)    4)消息失败(事务2失败):记录后人工处理 小概率事件

相关文章Related

返回栏目>>