Category: Distributed Architecture
近一个多月,写了一些MySQL内核的文字,稍作总结,希望对大家有帮助。 1.《InnoDB,为何并发如此之高?》 文章介绍了: (1)什么是并发控制; (2)并发控制的常见方法:锁,数据多版本; (3)redo,undo,回滚段的实践; (4)InnoDB如何利用回滚段实现MVCC,实现快照读。 结论是,快照读(Snapshot Read),这种不加锁的读,是InnoDB高并发的核心原因之一。 番外篇:《快照读,在RR和RC下的差异》 快照读,在可重复读与读提交两种事务隔离级别下,有微小的差异,文章通过案例做了简单叙述。
应用监控是多数互联网公司最重要的基础设施之一,其意义不仅在于可以帮助开发人员应对分布式环境下的 Trouble Shooting 和性能管理难题,更是系统可用性的第一步。Focus 是由随手记研发的统一应用监控平台,承载了随手旗下随手记、卡牛两款产品数百个服务的应用监控任务。本文将对 Focus 的设计思路和关键实现进行剖析。(本文根据 2018 年 10 月张越在 QCon 上海站的演讲整理而成,有一定的补充和删减。) 1. 监控的体系 “监控”是一个宽泛的概念,代表了很大的一块领域,有很多独立的系统在其中发挥作用。在介绍具体内容之前,我想先阐述一下通常互联网公司的监控的体系是什么样的。
对于企业来说,随着规模越来越大,整个系统中存在越来越多的子系统,每个子系统又被多个其他子系统依赖或者依赖于其他子系统。大部分系统在走到这一步的过程中,大概率会发生这样的场景:作为某个子系统的负责人或者 OnCall 人员,休息的时候都不安稳,心里老是忐忑着系统会不会挂。导致周末不敢长时间出门,晚上睡梦中被电话叫醒,痛苦不堪。 那么,在一个成熟的分布式系统中,我们该如何去保证它的可用性呢?迫切的需要解放我们紧绷的神经。下面,我们就来看下做高可用的思路和关键部分。
微服务架构下的应用是由一组松耦合的相互协调的服务所组成。这些服务内部通常使用独立的数据库来维护状态,服务与服务之间是通过轻量级的通讯协议进行交互的。如何协调这些服务之间的分布式事务一致性成为微服务架构需要解决的一个重要问题。 本文根据 QCon 姜宁演讲稿整理而成,他结合业界普遍采用的 Saga 技术,以及 ServiceComb Saga 项目,与大家分享 Saga 分布式事务最终一致性解决方案以及相关实践经验。
1. 背景 美团外卖已经发展了五年,即时物流探索也经历了 3 年多的时间,业务从零孵化到初具规模,在整个过程中积累了一些分布式高并发系统的建设经验。最主要的收获包括两点: 即时物流业务对故障和高延迟的容忍度极低,在业务复杂度提升的同时也要求系统具备分布式、可扩展、可容灾的能力。即时物流系统阶段性的逐步实施分布式系统的架构升级,最终解决了系统宕机的风险。 围绕成本、效率、体验核心三要素,即时物流体系大量结合 AI 技术,从定价、ETA、调度、运力规划、运力干预、补贴、核算、语音交互、LBS 挖掘、业务运维、指标监控等方面,业务突破结合架构升级,达到促规模、保体验、降成本的效果。
微服务架构在带来灵活性、扩展性、伸缩性以及高可用性等优点的同时,其复杂性也给运维工作中最重要的监控环节带来了很大的挑战,从用户的角度看,微服务架构下的监控应该注意哪些方面? 微服务架构虽然诞生的时间并不长,却因为适应现今互联网的高速发展和敏捷、DevOps 等文化而受到很多企业的推崇。微服务架构在带来灵活性、扩展性、伸缩性以及高可用性等优点的同时,其复杂性也给运维工作中最重要的监控环节带来了很大的挑战:海量日志数据如何处理,服务如何追踪,如何高效定位故障缩短故障时常……
1. 背景引入 首先,我们一起来看看这个问题的背景? 前段时间有个朋友在外面面试,然后有一天找我聊说:有一个国内不错的电商公司,面试官给他出了一个场景题: 假如下单时,用分布式锁来防止库存超卖,但是是每秒上千订单的高并发场景,如何对分布式锁进行高并发优化来应对这个场景? 他说他当时没答上来,因为没做过没什么思路。其实我当时听到这个面试题心里也觉得有点意思,因为如果是我来面试候选人的话,应该会给的范围更大一些。
1. 一、写在前面 现在面试,一般都会聊聊分布式系统这块的东西。通常面试官都会从服务框架(Spring Cloud、Dubbo)聊起,一路聊到分布式事务、分布式锁、ZooKeeper等知识。 所以咱们这篇文章就来聊聊分布式锁这块知识,具体的来看看Redis分布式锁的实现原理。 说实话,如果在公司里落地生产环境用分布式锁的时候,一定是会用开源类库的,比如Redis分布式锁,一般就是用Redisson框架就好了,非常的简便易用。
1. 分布式事务的产生是由于需要同时对多个数据源进行事务操作(资源层),资源层的分布式事务常用的方案有JTA、spring事务等。随着微服务的盛行,服务层的分布式事务也日益重要,本文就着重讨论一种服务层分布式事务的实现原理:TCC(Try-Confirm-Cancel)。
在很多互联网产品应用中,有些场景需要加锁处理,比如秒杀、全局递增ID、楼层生成等等,大部分的解决方案是基于DB实现的,Redis也是较为常见的方案之一。 Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端对Redis的连接并不存在竞争关系。其次Redis提供一些命令SETNX,GETSET,可以方便实现分布式锁机制。