自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 脑图1:架构设计学习

2023-04-11 09:29:44 146

原创 20.架构师知识体系

无论你从事哪个领域的架构设计工作,都要明白作为架构师,一定是技术出身,但是要突破技术思维的限制,向上立足于部门和公司、向下管控系统和研发,站在全局的角度去规划、组织、系统技术的发展。架构设计知识的思路总结为以下几点:· 想要学习架构设计知识,可以从自己熟知的领域出发,这样你才有不断的正反馈,从而更有信心,容易理解新的知识。

2023-03-17 19:59:55 246

原创 19.千万级流量应对问题分析

技术行业发展到今天,很多技术上的问题都不存在挑战了,所谓的高性能架构设计,也仅仅变成了一种标准化的应对流程。你要做的就是将业务问题,抽象成一个技术问题,比如具体到数据库设计、缓存设计、队列设计、线程设计等技术细节,然后不管你通过什么渠道,Google 也好,问同事也好,或者购买付费知识也好,都能找到技术的应对方案。· 先落实到技术上,比如结合业务场景,识别系统最关键的服务,然后针对性地为关键服务进行性能设计与测试,确保关键服务没有问题,然后为非关键服务提供降级和熔断处理方案。· 再深化自己对于技术的理解。

2023-03-17 19:57:47 186

原创 18.系统容错,服务降级问题分析

服务熔断其实是一个有限状态机,实现的关键是三种状态之间的转换过程。降级就是在做取舍(取舍服务、取舍功能),本质上是为了解决资源不足和访问量过大的问题。实现上可以降低系统一致性、裁剪非核心服务,以及简化产品功能。总之,服务的熔断和降级是互联网保证系统稳定性和可用性的重要手段,在你的架构设计中,如果涉及系统与第三方服务调用的情况下,都需要考虑增加服务熔断和降级方案。当然,高可用的设计方案不仅仅只有熔断和降级,还有如服务冗余、负载均衡、故障隔离、服务限流等设计方式。

2023-03-17 19:54:59 226

原创 17.系统高性能说明

对于怎么评估系统高性能,你可以从系统的吞吐量、延迟以及 TP 99,这三个指标出发回答面试官提出的问题。而对于高级研发工程师,不仅仅要了解后端的性能指标,还有对全链路的性能指标有所了解。​ 另外,在实际生产环境,还会涉及 CDN 加速、ISP 路由策略、边缘计算等一系列网络工程层面的性能优化指标。

2023-03-17 19:49:11 270

原创 16.系统高可用说明

怎么证明自己负责的系统是高可用的?因为任何一个系统架构初衷,最基本的诉求是要保证系统的稳定性和可用性,然后才是基于高流量的场景下,保证系统的并发承载能力。 一般来讲,面试官在考察你系统架构的设计能力时,经常会让你说一下你在上一家公司是怎么设计系统架构的,以此了解你的设计能力和思路。 ​ 而你在讲解架构设计时,也是在向面试官逐步证明,自己负责的系统是如何做到高可用的。这会涉及一个公认的论证——SLA。服务等级协议(Service-Level Agreement,SLA)最根本的形式是协议双方(服

2023-03-17 19:42:40 656

原创 15.缓存策略:缓存穿透,雪崩等问题

系统收到用户的频繁查询请求时,会先从缓存中查找数据,如果缓存中有数据,直接从中读取数据,响应给请求方;如果缓存中没有数据,则从数据库中读取数据,然后再更新缓存,这样再获取这条数据时,可以直接从缓存中获取,不用再读取数据库。这是一种常见的解决“查询请求频繁”的设计方案,那么这种方案在查询请求并发较高时,会存在什么问题呢? 以“电商平台商品详情页”为例,商品详情页中缓存了商品名称、描述、价格、优惠政策等信息,在双十一大促时,商品详情页的缓存经常存在缓存穿透、缓存并发、缓存雪崩,以及缓存设计等问题

2023-03-17 19:37:42 90

原创 14.Redis相关原理

Redis 的三个核心问题:线程模型、数据持久化,以及高可用。对于线程模型的知识点,你要分开三条线进行理解(Redis 4.0 之前、Redis 4.0 之后,以及 Redis 6.0)。对于数据持久化,你要掌握 Redis 持久化的几种方案,AOF 和 RDB 的原理,以及为了弥补他们的缺点,Redis 增加了混合持久化方式,以较小的性能开销保证数据的可靠性。

2023-03-17 19:33:57 128

原创 13.MySQL四:写多读少存储方案优化

总的来说,在面对数据库容量瓶颈和写请求并发量大时,你可以选择垂直分片和水平分片:垂直分片一般随着业务架构拆分来进行;水平分片通常按照 Hash(哈希分片)取模和 Range(范围分片)进行,并且,通常的形态是垂直拆分伴随着水平拆分,即先按照业务垂直拆分后,再根据数据量的多少决定水平分片。​ Hash 分片在互联网中应用最为广泛,简单易实现,可以保证数据非常均匀地分布到多个分片,但其过滤掉了业务属性,不能根据业务特性进行调整。

2023-03-17 19:29:37 725

原创 12.MySQL三:读多写少时优化查询方案

总的来说,回答 MySQL 实现读写分离问题的前提,是你要掌握这些内容(这是初中级研发工程师都需要了解并掌握的):MySQL 主从复制的原理、模式、存在的问题,怎么解决。​ 对于中高级研发工程师来说,不仅要掌握这些内容,还要展现出对技术的抽象能力,例如本讲中的复制状态机的原理和应用场景。

2023-03-17 19:26:46 354

原创 11.MySQL二:事务隔离级别和锁机制

数据库设计基础:掌握数据库设计中的基本范式,以及基础概念,例如表、视图、索引、外键、序列号生成器等,掌握数据库的数据类型的使用,清楚业务实体关系与数据库结构的映射。数据库隔离级别:掌握 MySQL 四种事务隔离级别的基础知识,并进一步了解 MVCC、Locking 等机制对于处理的进阶问题的解决;还需要了解不同索引类型的使用,甚至是底层数据结构和算法等。SQL 优化:掌握基础的 SQL 调优技巧,至少要了解基本思路是怎样的,例如 SQL 怎样写才能更好利用索引、知道如何分析 SQL 执行计划等。

2023-03-17 19:21:57 117

原创 10.MySQL一:索引原理与优化

索引的使用原则:另外,你在了解索引优势的同时,也要了解索引存在的问题:索引会带来数据的写入延迟,引入额外的空间消耗;在海量数据下,想要通过索引提升查询效率也是有限的。所以此时你还要考虑其他的方案,比如读写分离、分库分表等设计方案。

2023-03-14 21:24:05 125

原创 9.如何抗住双11预约抢购活动

商品预约阶段:要掌握如何在高并发的场景下通过锁的方式,让每一个用户都获取到抢购资格,结合业务场景对于并发控制的需求诉求和成本的考虑,在商品预约阶段,你可以基于 Redis 来实现分布式锁。·等待抢购阶段:此阶段对页面的查询请求会很高,尤其是临近抢购倒计时的流量突增,解决方案是做页面静态化和服务端限流。·商品抢购阶段。

2023-03-14 21:15:13 146

原创 8.消息队列的丢失,重复与积压问题

在项目中使用了 MQ 技术(如 Kafka、RabbitMQ、RocketMQ),基本都会抛出一个问题:在使用 MQ 的时候,怎么确保消息 100% 不丢失?案例背景以京东系统为例,用户在购买商品时,通常会选择用京豆抵扣一部分的金额,在这个过程中,交易服务和京豆服务通过 MQ 消息队列进行通信。在下单时,交易服务发送“扣减账户 X 100 个京豆”的消息给 MQ 消息队列,而京豆服务则在消费端消费这条命令,实现真正的扣减操作。那在这个过程中你会遇到什么问题呢?

2023-03-14 21:11:40 189

原创 7.RPC框架原理

在“实践操作”中,通过“如何设置 RPC 超时时间”的场景,学习了在微服务系统中,系统整体的平均响应时长,会受到所有依赖服务接口的耗时和重传次数影响。· 在“原理掌握”中,通过“商品详情页”的案例,引出 RPC 框架的原理与核心功能,如网络通信模型的选型、序列化和反序列化框架的选型等。最后,程序员一定要具备造轮子的能力,目的是突破技术栈瓶颈,因为技术只有动手实践过,才能有更加全面和深入的思考。

2023-03-14 21:07:56 172

原创 6.分布式四:分布式系统中锁的实现原理

对于分布式锁,

2023-03-14 20:59:08 87

原创 5.分布式三:海量并发场景下分布式事务一致性问题

基于 MQ 的可靠消息投递的考核点是可落地性,所以你在回答时要抓住“双向确认”的核心原则,只要能实现生产端和消费端的双向确认,这个方案就是可落地了,又因为基于 MQ 来实现,所以天生具有业务解耦合流量削峰的优势。基于 2PC 的实现方案很少有实际的场景,但你还是要掌握它的实现原理和存在的问题,因为面试不同于实际工作,有些问题的回答是为了告诉面试官:我有这个能力。尽管它在实际工作中并不适用。最后,有一点需要你注意,在实际工作中,并不是所有的业务对事务一致性的要求都那么高。

2023-03-14 20:52:34 214

原创 4.分布式二:亿级存储下的分布式系统原理性问题分析

总的来说,通过电商场景下商品的存储设计,一步步延伸出了分布式系统的数据存储、分片,与数据一致性等分布式问题,它们包含了分布式系统知识体系中最基础的理论,也是最复杂的问题。面试官往往会通过“海量数据的存储设计”问题考察候选人对分布式系统技术的掌握情况,而回答好基于 Hash 取模、一致性 Hash 实现分库分表的解决方案,是你能否通过这第一关的关键。当掌握了常规的 Hash 取模分片方式后,面试官会引入一个场景问题(如大促热点问题)来考察你解决架构设计问题的思路。

2023-03-13 22:45:37 165 1

原创 3.分布式一:分布式相关理论

不但要掌握如何在面试中回答案例中 CAP 原理的问题,而且还要掌握回答问题的思路,以后遇到类似的理论性知识的考察,都可以从三个层面回答。展示理论深度。你可以从一个熟知的知识点出发,深入浅出地回答,比如它的工作原理、优劣势、适用场景等。结合落地经验。你不能仅停留在理论理解,还要结合落地方案的技术实现,这样才能体现你的技术闭环思维。展示知识体系,这是任何一个程序员向上发展的基础能力。理论深度和落地经验体现了作为程序员的基本素质,而知识体系和技术判断力则体现了你是否达到架构师的能力边界。

2023-03-13 22:37:01 102

原创 2.从全局技术视角介绍自己的技术方案

四步回答法:1.在回答系统复杂度来源的时候,要注意结合具体的业务场景和业务发展阶段来阐述。业务场景表明了业务的独特性,发展阶段表明了业务的成熟度,因为同一业务场景在不同阶段产生的矛盾也是不同的。2.在回答解决方案的时候,有价值的解决方案一定是建立在明确复杂度来源基础之上的。所以在设计架构的时候才分主要问题和次要问题,主要问题是必须要解决的点,次要问题可以根据实际情况进行取舍。3.在回答如何评估架构方案时,至少要从功能性和非功能性两个角度出发判断方案的合理性。

2023-03-13 22:26:31 134

原创 1.对架构设计的认知

首先要提高你对系统架构设计的认知能力,一个好的架构师的架构设计不是仅仅停留在技术解决方案上。其次要提高你分析系统问题的认知能力,做架构设计要具备根据现阶段的主要矛盾来分析问题的能力。最后你要扩大自己能够驾驭系统的边界,因为只有这样才能遇到之前没经历过的问题层次,注意我这里说的是问题层次,而不是问题数量。

2023-03-13 22:17:52 83

原创 PM-临时查询任务分析

2023-03-13 22:11:27 58

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除