软件架构 | 青训营笔记

94 阅读2分钟

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

  软件架构(简称架构)是有关软件整体结构与组件的抽象描述,用于指导软件系统的设计。

内容摘要

  • 常见的软件架构
  • 企业级架构分析

文章正文

常见软件架构

单机

  把所有服务实现在一个进程中,部署在一台机器上。其结构简单,但难以胜任高并发环境(C10K问题)且维护需要停止服务。

单体与垂直用用

  对单机应用进行水平扩展,部署到多个服务器上。虽然可以进行水平扩容,但其内部过于复杂,耦合度太高。因此,根据功能不同对应用进行垂直划分。这样可提高应用整体可用性,但应用仍然较复杂,

SOA

  SOA(Service-Oriebted Architecture)架构将应用的不同单元抽象为服务并定义服务间的通信标准,实现分工协作。但会增大应用治理难度。

企业级架构分析

云计算

  云计算是指通过软件自动化管理提供计算资源的服务网络。其基础为虚拟化和编排方案。云计算的架构分为IaaS、PaaS、SaaS 和 FaaS:

  • IaaS:Infrastructure as a Service,提供网络基础设施(如服务器)服务
  • PaaS:Platform as a Service,提供平台(如安装有某个操作系统的虚拟机)服务
  • SaaS:Software as a Service,提供一套软件之上(如Google Workspace)的服务,普通用户接触较多
  • FaaS:Function as a Service

云原生

  云原生技术为组织在公有云、私有云或混合云等新型环境构建可弹性扩展的服务。云原生的重点之一就是资源的弹性分配。这些资源包括服务资源、计算资源和消息队列等,而存储资源可抽象成服务的一种。

  在云原生用用下,微服务体现出了它便于部署、耦合性低的优点。微服务框架要解决的主要问题是服务间的通信,RPC 和 HTTP 便是常见的解决方案。

  服务网格(Service Mash)是微服务之间通信的中间层,其原理是高效的网络代理,实现业务代码与服务治理的解耦。相比于 HTTP 和 RPC,服务网格实现了治理的统一化并进一步降低耦合。

总结

  • 没有最好的架构,只有最适合的架构
  • 架构设计的一般过程:
    • 需求分析
    • 业界调研
    • 技术选型
    • 问题解决

本文若有不足之处,欢迎纠正(≧^.^≦)喵~
我的其他笔记,可在掘金或 Github( github.com/DoudiNCer/I… )阅读