如何成为一名架构师

2023-03-06 20:38:24 浏览数 (1)

想必工作多年的研发工程师,有很多都是想成为架构师。但是并不是每一个研发都有机会参与架构设计,很多公司不一定会主动培养你成为架构师。但是我觉得要先掌握架构师的知识体系,然后通过实践进行校验,自己把自己培养成一名架构师。

架构师需要具备的能力模型,需要那几部分组成呢

1、基础技术架构,这部分是纯技术架构,所有非功能性的技术都是基础技术的范畴。

2、业务架构,在业务场景下对业务需求的抽象。

3、开发技能,这是架构师落地架构的能力。

在一个开发需求过程中,会经历需求分析、架构设计、架构选型、架构落地这四个阶段。对架构师的能力要求,一句话就是“架构师要把握系统技术”

在需求分析阶段,架构师对于业务架构,要给出一个合理的需求分析抽象模型。

在架构设计和架构选型阶段,架构师要充分考虑技术的合理性,制定合理的设计方案。

在架构落地阶段,架构师要能指导研发进行落地,并推进项目的执行。

那么在架构师能力模型的指导下,需要掌握哪些知识体系呢?

计算机包括五大体系结构(即冯诺依曼结构),分别是控制器、运算器、存储器、输入及输出。换句话说,一个分布式系统也包含这五大部件其中最重要的是计算和存储。计算与存储由一系列网络节点组成,每个节点之间的通信就是输入与输出,各节点之间的调度管理就是控制器。

在这里插入图片描述在这里插入图片描述

对于分布式架构师,可以从以下四个角度进行知识体系的拆解。

一、存储

存储指分布式存储系统,首先要知道什么是分布式存储、为什么选型分布式存储、以及分布式存储中关注哪些问题。

首先,为了解决数据的水平扩展,要做数据分片,因为分布式系统区别于传统单机系统就在于能将数据分布到多个节点,并在多个节点之间实现负载均衡。这种数据水平扩容的能力就叫做数据分片。

数据分片会涉及分片规则,常见的有范围分片和哈希分片,不同的分片规则就有不同的分片算法,如哈希分片就会涉及哈希取模算法、虚拟桶算法、一致性哈希算法。

又因为数据要分布到多个节点,这个时候就需要做数据复制,数据复制就会存在同步复制和异步复制,为了保证数据的可靠性和可用性,增强系统的容错,数据复制就会产生副本,副本则是分布式存储系统解决高可用的唯一手段。

多个副本同步会产生一致性的问题,从而引出一致性问题的分类,如强一致性、弱一致、最终一致,要想解决一致性问题,会涉及一致性问题的协议:如两阶段提交协议(Two-PhraseCommit,2PC)、Paxos协议选举、向量时钟(VectorClock)、RWN协议、Raft协议。

多个副本还会带来主选举,这会涉及分布式锁的问题:多个机器竞争一个锁,当某个机器释放锁或者挂掉,其他机器可以竞争到锁,继续执行任务。为了解决锁的容错性,比如解决双主(脑裂)问题,就会涉及租约机制,租约机制可以解决网络分区问题造成的“双主”问题。

最后,为了衡量副本可用性和一致性,就会引出分布式系统的基础理论 CAP 、BASE,以及 PACELC。

这样就梳理清楚了分布式存储的知识体系。分布式存储是分布式系统知识体系中最基础的理论。

二、计算

分布式计算就会涉及到三个概念:并行计算、分布式计算、云计算。

并行计算:同时使用多种计算资源解决计算问题的过程,比如多线程就是一种并行计算;服务集群也是一种并行计算。

分布式计算:是从集群技术发展而来,区别在于集群虽然连接了多台机器,但某项具体的任务执行时还是会被转发到某台服务器上,分布式计算则将任务分割到多台服务器上并行计算,然后得到结果。

云计算:分布式计算 虚拟化技术的综合技术的统称,不同商业公司有着各自不同的定义,通俗来讲就是开发者利用云 API 开发应用,然后上传到云上托管,并提供给用户使用,而不关心云背后的运维和管理,以及机器资源分配等问题。

需要了解分布式领域中的计算模式,如分布式并行计算框架 Hadoop 中的 MapReduce 的设计思想,以及基于流式计算框架 Storm、Spark、Flink 的架构设计方案。

三、输入输出

系统架构中的输入输出,是指系统间通信的技术。

其中包括基础知识,比如网络通信最基础的协议(诸如 TCP/UDP 协议等);网络 I/O 模型(Blocking-IO,NonBlocking-IO、Asyn-IO),最后是偏应用的知识,例如连接复用、序列化/反序列化、RPC、MQ 消息队列等。

这部分最重要的是理解高性能的原理,掌握流量的流转过程以及应对方案,比如当请求到达网络设备时,要依次考虑以下问题:

网络设备如何处理流量?这会涉及中断和缓存。

操作系统如何处理流量?这会涉及 I/O 模型,select、poll、epoll,以及 I/O 多路复用。

应用系统如何处理流量?这会涉及 NIO 的开发,如 Reactor 模式、Netty 框架原理等。

系统线程如何处理流量?还会涉及多线程的设计模式。

最后,是要了解分布式系统通信的核心技术:RPC 和 MQ。

四、控制器

分布式系统体系中的控制器,可以理解为系统架构中的调度系统,包括流量调度和资源调度。

流量调度(我们常说的流量控制):这块需要掌握流量控制的常用方案策略,比如负载均衡、服务路由、熔断、降级、限流等,其实常用的高可用、高性能的解决方案很多都是基于流量上的调度。

资源调度:如果我们将流量调度迁移到服务器的计算资源、存储资源或基础资源上面的话,就会引出另一种基于资源的调度,如 Mesos、Yarn 基于计算资源的调度;HDFS、GlusterFS、Ceph 基于存储资源的调度;Kubernetes、Mesos 基于容器资源的调度(包括计算、存储、网络等综合性的资源调度)。

这块需要了解常用系统调度设计,调度算法与负载策略。比如,如果让你对单个服务器的计算资源做调度,要具备设计思路:让集群选举一个主节点,每个从节点会向主节点汇报自己的空闲资源,当请求到来时,主节点通过资源调度算法选择一个合适的从节点来处理该请求。

作为架构师,不仅要突破技术思维的限制,向上要立足于部门和公司、向下管控系统和研发,站在全局的角度去规划、组织、系统技术的发展。

架构设计的思路总结为以下几点:

1、从自己熟知的领域出发,才会容易理解新的知识。

2、形成知识网络图谱,建议把自己的核心知识梳理成一个清晰的结构图,然后结合已有知识,再逐步将零散的知识点补充到这张图谱上。

3、培养自己的技术判断力,针对同一问题有不同方法,不同维度、不同角度的分析和对比。这样可以提高对技术的领悟能力。

0 人点赞