这是我参与「第五届青训营 」伴学笔记创作活动的第 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… )阅读