![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分布式专题
文章平均质量分 94
smart哥
一名有10余年经验的互联网老兵,历经从传统软件公司到大型互联网公司的洗礼,早年在中兴通讯等大型通信公司担任项目leader,后随着互联网的崛起,先后在前美团支付等大型互联网公司担任架构师。对互联网架构底层技术有相当的研究和独特的见解,在多个领域有着丰富的实战经验。
展开
-
分布式实战(七)——Redis集群模式实战
本章,我介绍了redis cluster的部署方式,读者可以自己在本地尝试搭建一个redis cluster集群,以便加深理解。原创 2024-04-10 09:13:52 · 731 阅读 · 0 评论 -
分布式实战(六)——Redis哨兵部署实战
本章,我讲解了Redis哨兵模式的搭建,通过实战我们可以对Redis高可用的原理有更深的认识,读者可以尝试在本机按照我所述的步骤动手搭建,加深印象。原创 2024-04-10 09:09:21 · 861 阅读 · 0 评论 -
分布式实战(五)——Redis读写分离实战
本章,我重点讲解了如何进行生产环境的Redis读写分离部署,读者可以自己尝试在虚拟机中动手进行节点部署,以加深印象。原创 2024-04-10 09:06:07 · 1002 阅读 · 0 评论 -
分布式实战(四)——Redis企业级灾备方案
本章,我主要介绍了生产环境的Redis灾备方案,核心是Redis的数据恢复步骤,基于RBD文件恢复Redis数据时,一定要记得先关闭掉aof持久化,因为Redis默认优先从AOF日志文件恢复数据。原创 2024-04-09 18:13:10 · 591 阅读 · 0 评论 -
分布式实战(三)——Redis持久化实战
如果Redis正在执行RDB持久化,那就不会再同时执行AOF rewrite,反之亦然;如果Redis正在执行RDB持久化,此时用户执行命令,那么只有等RDB快照生成之后,才会去执行AOF rewrite;Redis重启的时候,如果发现同时有RBD快照和aof日志文件,那会优先使用AOF进行数据恢复,因为其中的日志更完整。原创 2024-04-09 09:35:48 · 882 阅读 · 0 评论 -
分布式实战(二)——系统环境搭建
本章,我带领大家搭建了一个4节点的CentOS集群。这个集群将作为我们后续分布式实战的基础。原创 2024-04-09 09:32:23 · 608 阅读 · 0 评论 -
分布式实战(一)——系统整体架构
本章,我主要对后续章节将要进行实战的系统作了一个概述,主要讲解了多级缓存架构。上述多级缓存架构,最核心的其实就是Redis分布式缓存,后续章节,我将带领大家搭建分布式Redis集群,然后引出各种高并发场景下的缓存面临的难题,最后在缓存架构中不断的引入解决这些难题的方案和技术,解决高并发的问题。原创 2024-04-09 09:27:56 · 910 阅读 · 0 评论 -
分布式进阶(二九)——分布式框架之高可用:Hystrix熔断
本章,我介绍了Hystrix的熔断功能,读者要特别注意断路器的三种状态之间的转换关系,Hystrix对所有command请求进行监控统计,当异常请求达到一定比例时,就会触发熔断机制。原创 2024-04-08 16:52:33 · 1128 阅读 · 0 评论 -
分布式进阶(二八)——分布式框架之高可用:Hystrix降级
Fallback降级机制,本身也使用了资源隔离,我们可以通过这个参数设置的最大允许并发请求数,默认值是10,如果超出了这个最大值,那么直接被reject。原创 2024-04-08 16:50:47 · 601 阅读 · 0 评论 -
分布式进阶(二七)——分布式框架之高可用:Hystrix请求流程
本章,我讲解了Hystrix中一个请求的整体执行流程,并对请求缓存进行了讲解,重点是Command执行流程。后续章节我将针对请求流程中的各个部分进行专门讲解,包括断路器、降级等。原创 2024-04-08 16:48:49 · 1020 阅读 · 0 评论 -
分布式进阶(二六)——分布式框架之高可用:Hystrix资源隔离
本章我主要讲解了Hystrix的两种资源隔离技术:线程池隔离和信号量隔离,并分别针对它们的用法和使用场景做了介绍。相信读者已经对Hystrix的主要功能有了一个初步了解,下一章我将讲解Hystrix的整个请求流程。原创 2024-04-08 09:10:19 · 1255 阅读 · 0 评论 -
分布式进阶(二五)——分布式框架之高可用:Hystrix简介
本章,我对Hystrix的核心作用和设计原则进行了介绍。重点是引入了一个商品详情页系统作为后续讲解Hystrix的背景案例。从下一章开始,我们将模拟各种接口级的异常,讲解Hystrix的核心原理和技术要点。原创 2024-04-08 09:05:36 · 1346 阅读 · 0 评论 -
分布式进阶(二四)——分布式框架之可扩展:分布式Session
本章,我讲解了分布式Session的基本原理,这块内容其实没什么特别好说的,读者只要关注为什么需要分布式session,以及常见的几种解决方案就行了。原创 2024-04-08 09:00:15 · 645 阅读 · 0 评论 -
分布式进阶(二三)——分布式框架之可扩展:Zookeeper分布式锁
本章,我介绍了Zookeeper分布式锁的基本原理,并拿它和Redis分布式锁进行了比较。一般来讲,绝大多数的公司其实很少有超高并发的业务场景,那么ZooKeeper分布式锁基本都能满足需求。对于一些大型公司的核心业务,一般也会针对实际的业务场景,对ZK分布式锁或Redis分布式锁进行定制改造,以满足自身业务需求。原创 2024-04-07 20:44:47 · 1030 阅读 · 0 评论 -
分布式进阶(二二)——分布式框架之可扩展:Zookeeper
本章,我介绍了Zookeeper的数据模型和最典型的几种使用场景,并在作为注册中心时,对Zookeeper和Eureka进行了比较。原创 2024-04-07 20:41:45 · 1067 阅读 · 0 评论 -
分布式进阶(二一)——分布式框架之可扩展:API网关
本章,我介绍了API网关的作用和动态路由、灰度发布的基本原理。API网关一般是整个分布式系统的门户,所有流量首先需要经过网关处理,所以API网关的性能优化是至关重要的。以笔者曾经做过的一个银行快捷支付系统为例,其架构简化后,主要分为网关模块、联机模块、批量模块,所有支付请求首先要经过F5、Nginx/LVS进行负载均衡,然后到达API网关,由API网关进行服务路由、鉴权、日志记录等处理。所以,生产环境一般都需要根据预判的业务量,提前对整个系统进行压测。原创 2024-04-07 20:39:16 · 710 阅读 · 0 评论 -
分布式进阶(二十)——分布式框架之可扩展:Eureka注册中心
Eureka Server 启动成功后,等待服务提供者注册,在启动过程中如果配置了集群,集群之间会定时通过 Replicate 同步注册表,每个 Eureka Server 都有独立完整的服务注册表;Eureka Client 启动后,会根据配置的 Eureka Server 地址,去注册自己的服务;Eureka Client 默认每 30s 向 Eureka Server 发送一次心跳请求,证明客户端服务正常;原创 2024-04-07 14:55:05 · 912 阅读 · 0 评论 -
分布式进阶(十九)——分布式框架之可扩展:Spring Cloud
综上,一套最简单的微服务系统就搭建起来了,整个项目的模块划分如下图:客户端要进行下单操作时,直接访问以下接口:其中是Zuul网关的地址,通过/order可以映射到后端的订单服务。原创 2024-04-07 14:52:10 · 603 阅读 · 0 评论 -
分布式进阶(十八)——分布式框架之可扩展:Dubbo的SPI机制
本章,主要参考Dubbo官方文档对Dubbo SPI的底层原理进行了分析。通过配置文件,解耦拓展接口和拓展实现类;通过IOC自动注入依赖的拓展实现类对象;通过URL参数,在运行时确认真正的自定义拓展类对象。要看懂Dubbo SPI的源码,特别是自适应拓展机制,需要下一点功夫,我这里只是带领大家理解下SPI的核心思想,更多内容建议大家阅读Dubbo官方文档。原创 2024-04-07 14:46:09 · 947 阅读 · 0 评论 -
分布式进阶(十七)——分布式框架之可扩展:Dubbo基本原理
本章,我介绍了Dubbo这一分布式RPC框架的基本架构和底层原理。原创 2024-04-07 08:26:51 · 702 阅读 · 0 评论 -
分布式进阶(十六)——分布式框架之高性能:Redis分布式锁
采用Redis分布锁时,其实很难解决因为Master节点宕机而造成的重复加锁问题。所以,生产环境,如果对数据一致性要求不高,可以用Redisson客户端来实现Redis的分布式锁。但是,我们更常用Zookeeper来实现分布式锁,这块内容我将在后续章节详细讲解。原创 2024-04-07 08:21:56 · 915 阅读 · 0 评论 -
分布式进阶(十五)——分布式框架之高性能:Redis集群模式
Redis Cluster功能强大,相当于直接集成了主从模式和哨兵模式,同时又提供了数据分片和请求路由的功能。原创 2024-04-07 08:19:35 · 693 阅读 · 0 评论 -
分布式进阶(十四)——分布式框架之高性能:Redis哨兵模式
本章,我介绍了Redis哨兵模式的原理。在生产环境中,哨兵模式非常常用,一般都会按照一主多从+哨兵模式来部署Redis。原创 2024-04-06 18:59:27 · 874 阅读 · 0 评论 -
分布式进阶(十三)——分布式框架之高性能:Redis主从同步
Redis实现高可用的最基本方式就是构建主从架构,主从节点之前会进行数据同步,以保证数据的一致性。主从之间的数据同步方式有全量复制和增量复制。原创 2024-04-06 18:56:35 · 970 阅读 · 0 评论 -
分布式进阶(十二)——分布式框架之高性能:Redis数据持久化
本章,我介绍了Redis进行数据持久化的两种方式RBD和AOF,并对它们的持久化原理做了深入分析。那么RDB和AOF到底该如何选择呢?事实上,它们两者并不是非此即彼的关系,生产环境一般会综合使用AOF和RDB,用AOF来保证数据不丢失,作为数据恢复的第一选择,用RDB来做周期型的冷备,在AOF文件都丢失或损坏不可用的时候,还可以使用RDB来进行快速的数据恢复。原创 2024-04-06 18:53:13 · 654 阅读 · 0 评论 -
分布式进阶(十一)——分布式框架之高性能:Redis内存管理
本章,我介绍了Redis的内存管理,核心是内存回收策略和缓存淘汰策略。原创 2024-04-06 09:45:51 · 741 阅读 · 0 评论 -
分布式进阶(十)——分布式框架之高性能:Redis线程模型
纯内存操作;核心是基于非阻塞的IO多路复用机制;单线程反而避免了多线程的频繁上下文切换问题。原创 2024-04-06 09:43:01 · 560 阅读 · 0 评论 -
分布式进阶(九)——分布式框架之高性能:ElasticSearch数据持久化
本章,我介绍了Elasticsearch的持久化原理,核心就是refreshflushmerge这三个操作。目前很多开源分布式框架都采用了这种数据持久化的思路。原创 2024-04-06 09:38:47 · 1243 阅读 · 0 评论 -
分布式进阶(八)——分布式框架之高性能:Elasticsearch架构
本章,我们对Elasticsearch的基本架构进行了讲解,后续章节深入其底层实现细节。另外,Elasticsearch的这种路由机制其实就是把每个节点都看成是对等数据路由中心。事实上,在很多开源分布式框架中,还有一种做法是引入外部的数据路由中心,比如Zookeeper,或者像RocketMQ那样自己实现一个路由中心——NameServer。原创 2024-04-05 17:05:52 · 891 阅读 · 1 评论 -
分布式进阶(七)——分布式框架之高性能:分布式搜索引擎
本章,我简单介绍了Elasticsearch的一些基本概念,下一章我将对Elasticsearch的架构做一个完整阐述。原创 2024-04-05 16:57:07 · 800 阅读 · 0 评论 -
分布式进阶(六)——分布式框架之高性能:消息积压
作者简介:大家好,我是哥,前中兴通讯、美团架构师,现某互联网公司联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!原创 2024-04-05 09:00:29 · 445 阅读 · 0 评论 -
分布式进阶(五)——分布式框架之高性能:消息有序性
保证队列内的消息FIFO;保证一个消费者对应单独的一个队列;在实际业务中,需要消息有序性的场景其实并不多。原创 2024-04-05 08:49:21 · 1103 阅读 · 0 评论 -
分布式进阶(四)——分布式框架之高性能:消息丢失
本章,我们介绍了在使用消息队列过程中出现消息丢失的几种场景,并以RabbitMQ和Kafka为例介绍了解决方案。要保证消息投递的100%成功,基本思路就是消息队列的ack机制,以及生产者的最大努力投递;要保证MQ故障消息不丢失,基本思路就是MQ自身做好持久化,或数据同步机制;要保证消费者的100%消费成功,基本思路就是消费者的手动确认,以及消费者自身接口的幂等性保证。原创 2024-04-05 08:43:27 · 830 阅读 · 0 评论 -
分布式进阶(三)——分布式框架之高性能:消费的幂等性
本章,我们从消息队列重复消费的问题开始,引出了接口的幂等性设计,然后给出了一些通用的设计思路。但一般来讲,中大型互联网公司里也很少会去做一个统一的防重幂等框架。接口的幂等设计,一般都是由各个服务针对自己核心的接口,判断是否要保证幂等性,如果需要的话则根据自己的业务逻辑来实现,而且一般仅仅是少数核心接口需要做幂等性设计保障。同时,我们要理解的是幂等设计的本质是通过唯一标识,标记同一操作的方式,来消除多次执行的副作用。幂等性设计并没有什么万金油,还是要结合实际具体问题具体分析。原创 2024-04-04 18:58:15 · 713 阅读 · 0 评论 -
分布式进阶(二)——分布式框架之高性能:消息队列的可用性
作者简介:大家好,我是哥,前中兴通讯、美团架构师,现某互联网公司联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!我们在上一篇文章提到,引入消息队列后系统整体的复杂度会上升,我们此时必须要关注消息队列自身的可用性,因为一旦消息队列出现问题,会导致整个系统不可用。原创 2024-04-04 18:56:38 · 576 阅读 · 0 评论 -
分布式进阶(一)——分布式框架之高性能:消息队列
消息队列大家应该不陌生,没接触过的可以先看下我的另一个专栏分布式基础系列。特性ActiveMQRabbitMQRocketMQKafka单机吞吐量万级万级10万级10万级以上topic数量topic达到千级时,吞吐量会小幅下降topic达到百级时,吞吐量会大幅下降时效性毫秒级微秒级毫秒级毫秒级可用性高,主从架构高,主从架构非常高,数据分散集群架构极高,数据分散集群架构消息可靠性有较低的概率丢失数据有较低的概率丢失数据经过参数配置,可以做到0丢失。原创 2024-04-04 18:48:45 · 767 阅读 · 0 评论 -
分布式基础(二五)——分布式理论之高性能:负载均衡
本文介绍了常见的负载均衡架构设计模式及负载均衡算法。目前业界用的最多的是软负载均衡器——Nginx,后续进阶篇中将详细介绍其特性和原理。原创 2024-04-04 10:47:13 · 740 阅读 · 0 评论 -
分布式基础(二四)——分布式理论之高性能:分布式缓存
虽然我们可以通过读写分离分库分表需要频繁进行复杂运算得出的数据例如,一个论坛如果要实时展示用户同时在线数,则 MySQL 性能可能无法支撑,因为使用 MySQL 来存储当前用户状态,则每次获取这个总数都要“count(*)”大量数据,这样的操作无论怎么优化 MySQL,性能都不会太高。读多写少的数据绝大部分在线业务都是读多写少。例如,微博、淘宝、微信这类互联网业务,读业务占了整体业务量的 90% 以上。以微博为例:一个明星发一条微博,可能几千万人来浏览。原创 2024-04-04 10:44:39 · 665 阅读 · 0 评论 -
分布式基础(二三)——分布式理论之高性能:分库分表
上一篇分布式理论之高性能:读写分离中,我们介绍了读写分离,其主要目的是为了分散了服务器读写操作的压力。数据量太大,读写的性能会下降,即使有索引,索引也会变得很大,性能同样会下降;数据文件会变得很大,数据库备份和恢复需要耗费很长时间;数据文件越大,极端情况下丢失数据的风险越高(例如,机房火灾导致数据库主备机都发生故障)。基于上述原因,单台数据库服务器存储的数据量不能太大,需要控制在一定的范围内。为了满足业务数据存储的需求,就需要将存储分散到多台数据库服务器上。原创 2024-04-04 10:38:58 · 935 阅读 · 0 评论 -
分布式基础(二二)——分布式理论之高性能:读写分离
对于大多数业务来说,读相关业务的操作频次要远远高于写相关的。再者,从操作系统的角度来讲,读磁盘的I/O速度也要远快于写磁盘的I/O速度。所以,针对读写操作的优化也由来已久,从最常见的读写锁,再到操作系统的CopyOnWrite等等。对于分布式应用,读写分离就是针对一种读/写操作的优化,其基本原理是将读/写操作分散到不同的节点上本文以数据库为例,介绍了存储系统读写分离的基本思想。原创 2024-04-03 20:55:47 · 1082 阅读 · 0 评论