架构初探1| 青训营笔记

85 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 17 天

架构介绍

软件架构是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。架构对实现软件有指导作用。

单机架构

软件系统具备对外提供服务,将所有功能都集中实现在一个进程里,并部署在一台机器上。

优点是简单,缺点是运维需要停服。

单机服务形态一般只出现在预研或初创阶段,只要业务有发展的诉求,就应该快速做架构迭代。

单体/垂直应用架构

单体架构:实现进程的分布式部署,并引入负载均衡层,经过垂直切分实现。

垂直应用架构:在单体架构的基础上,把不同应用的代码从进程中拆分。

这两种架构,解决了单机服务的问题,但面临的挑战如下:

随着业务场景的复杂,服务的职责变得越来越多,导致开发者无法集中精力专注业务。业务发展的上线变更会影响到其他所有不涉及的场景。

SOA(service-oriented Architecture)

服务:将应用的不同功能单元抽象为服务

通信标准:服务之间通信的基石

微服务架构:服务之间的通信有两个发展方向:中心化和去中心化。而去中心化的方向,其最终形态为微服务架构。

优点:不同模块的RD可以专注自身业务逻辑,其开发迭代效率得到显著提升,各个服务独立运维,变更操作的影响面可控,应用整体的稳定性得到提高。

问题:分布式架构解决数据一致性,复杂的依赖下如何做到高可用,同时管理多个微服务如何运维,微服务的目标是强化单一职责,控制爆炸半径,如何在解耦和过微之间取舍。

企业级后端架构剖析

云计算

通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模熟悉分析和存储的基石。

虚拟化技术包括硬件(虚拟机)、操作系统(容器)和网络。

编排方案包括虚拟机编排方案(OpenStack),容器编排方案(Kubernetes)

架构类型包括IaaS(Infrastructure as a Service), PaaS(Platform as a Service) , SaaS(Software as a Service) ,FaaS(Function as a Service) 。

云原生

是云计算发展到现在的一种形态,是组织在公有云,自由云,混合云等新型的动态环境中,构建和运行可弹性拓展的应用提供了可能。其代表技术有:容器化,服务网络,微服务,不可变基础架构和声明式API,基于上述技术,开发者可以构建出容错性好,易于管理,具备较好观测性的云服务,结合可靠自动化机制,服务可以轻松应对频繁和可预测的重大变更。

云原生主要包括:

  • 弹性资源:基于虚拟化容器和灵活的编排调度机制,可以为云服务提供快速扩容和缩容能力,而且极大地提高了物理资源的利用率,注意掌握kubernetes技术。

  • 微服务架构:依托于功能单元结构,保证云服务具备快速迭代和复杂交互的可能。

  • DevOps: 自动化软件从设计到交付的流程,保证软件工作高效。

  • 服务网络:通过将业务逻辑与网络通信和治理解耦开,业务不在关心异构系统中RPC中间件治理能力的不统一,使得复杂治理能力落地成为可能。