能力
-
基础技术架构:这部分是纯技术架构,所有非功能性的技术都是基础技术的范畴。
-
业务架构:在业务场景下对业务需求的抽象。
-
开发技能:这是架构师落地架构的能力。
把握系统技术
-
在需求分析阶段:架构师对于业务架构,要给出一个合理的需求分析抽象模型。
-
在架构设计和架构选型阶段:架构师要充分考虑技术的合理性,制定合理的设计方案。
-
在架构落地阶段:架构师要能指导研发进行落地,并推进项目的执行。
架构师知识体系
-
存储
分布式存储系统
为了解决数据的水平扩展,要做数据分片,因为分布式系统区别于传统单机系统就在于能将数据分布到多个节点,并在多个节点间实现负载均衡。这种数据水平扩容的操作叫数据分片。
数据分片会涉及分片规则,常见的有范围分片和哈希分片,不同的分片规则就有不同的分片算法,如哈希分片就会涉及哈希取模算法、虚拟桶算法、一致性哈希算法。
又因为数据要分布到多个节点,你还需要数据复制,数据复制就会存在同步复制和异步复制。为了保证数据的可靠性和可用性,增强系统容错,数据复制就会产生副本,副本则是分布式存储系统解决高可用的唯一手段。
而多个副本同步会产生一致性的问题,从而引出一致性问题的分类,如强一致性、弱一致、最终一致,要想解决一致性问题,会涉及一致性问题的协议:如两阶段提交协议(Two-PhraseCommit,2PC)、Paxos协议选举、向量时钟(VectorClock)、RWN协议、Raft协议。
多个副本还会带来主选举,这会涉及分布式锁的问题:多个机器竞争一个锁,当某个机器释放锁或者挂掉,其他机器可以竞争到锁,继续执行任务。为了解决锁的容错性,比如解决双主(脑裂)问题,就会涉及租约机制,租约机制可以解决网络分区问题造成的“双主”问题。
为了衡量副本可用性和一致性,就会引出分布式系统的基础理论 CAP 、BASE,以及 PACELC。
-
计算
并行计算、分布式计算、云计算
-
并行计算:同时使用多种计算资源解决计算问题的过程,比如多线程就是一种并行计算;服务集群也是一种并行计算。
-
分布式计算:是从集群技术发展而来,区别在于集群虽然连接了多台机器,但某项具体的任务执行时还是会被转发到某台服务器上,分布式计算则将任务分割到多台服务器上并行计算,然后得到结果。
分布式领域中的计算模式,如分布式并行计算框架 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 基于容器资源的调度(包括计算、存储、网络等综合性的资源调度)。
单个服务器的计算资源做调度,你至少要具备设计思路:让集群选举一个主节点,每个从节点会向主节点汇报自己的空闲资源,当请求到来时,主节点通过资源调度算法选择一个合适的从节点来处理该请求。
无论你从事哪个领域的架构设计工作,都要明白作为架构师,一定是技术出身,但是要突破技术思维的限制,向上立足于部门和公司、向下管控系统和研发,站在全局的角度去规划、组织、系统技术的发展。
标签:体系,架构,知识,调度,流量,分片,架构师,节点 From: https://www.cnblogs.com/jiaozg/p/17218269.html