Category: Distributed Solution
Over the past four years, Netflix has gone from less than 50 Million subscribers to 125 Million subscribers. While this kind of growth has caused us no shortage of scaling challenges, we actually managed...
1. 写在前面 近几年互联网服务安全事故的频发,使得越来越多的企业及开发者意识到数据备份、灾备等重要性,高可用性、高容灾性及高可扩展性的系统和架构建设工作也被更多地置于重心。 在这个过程中,基于公有云提供的基础设施实现高可用已成为多数技术团队的选择。
应用监控是多数互联网公司最重要的基础设施之一,其意义不仅在于可以帮助开发人员应对分布式环境下的 Trouble Shooting 和性能管理难题,更是系统可用性的第一步。Focus 是由随手记研发的统一应用监控平台,承载了随手旗下随手记、卡牛两款产品数百个服务的应用监控任务。本文将对 Focus 的设计思路和关键实现进行剖析。(本文根据 2018 年 10 月张越在 QCon 上海站的演讲整理而成,有一定的补充和删减。) 1. 监控的体系 “监控”是一个宽泛的概念,代表了很大的一块领域,有很多独立的系统在其中发挥作用。在介绍具体内容之前,我想先阐述一下通常互联网公司的监控的体系是什么样的。
对于企业来说,随着规模越来越大,整个系统中存在越来越多的子系统,每个子系统又被多个其他子系统依赖或者依赖于其他子系统。大部分系统在走到这一步的过程中,大概率会发生这样的场景:作为某个子系统的负责人或者 OnCall 人员,休息的时候都不安稳,心里老是忐忑着系统会不会挂。导致周末不敢长时间出门,晚上睡梦中被电话叫醒,痛苦不堪。 那么,在一个成熟的分布式系统中,我们该如何去保证它的可用性呢?迫切的需要解放我们紧绷的神经。下面,我们就来看下做高可用的思路和关键部分。
微服务架构下的应用是由一组松耦合的相互协调的服务所组成。这些服务内部通常使用独立的数据库来维护状态,服务与服务之间是通过轻量级的通讯协议进行交互的。如何协调这些服务之间的分布式事务一致性成为微服务架构需要解决的一个重要问题。 本文根据 QCon 姜宁演讲稿整理而成,他结合业界普遍采用的 Saga 技术,以及 ServiceComb Saga 项目,与大家分享 Saga 分布式事务最终一致性解决方案以及相关实践经验。
微服务架构在带来灵活性、扩展性、伸缩性以及高可用性等优点的同时,其复杂性也给运维工作中最重要的监控环节带来了很大的挑战,从用户的角度看,微服务架构下的监控应该注意哪些方面? 微服务架构虽然诞生的时间并不长,却因为适应现今互联网的高速发展和敏捷、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,可以方便实现分布式锁机制。