架构师之路 -- 基础设施架构

简介: 架构师之路 -- 基础设施架构

系统层次划分


任何一个系统按照逻辑部署维度都可以划分成应用层与基础设施层,开发的应用软件还有使用第三方的应用可以抽象成一些组件的集合,为了运行这些组件需要基础设施层来提供支撑,基础设施层有物理机、存储、虚拟机、容器这些元素。

image.png

基础设施层中最基本的是物理机,随着技术的发展慢慢出现了虚拟机和容器。

我们先来看看基础设施架构的演进。


基础设施架构演进


基础设施架构不是一步到位的事情,是需要循环渐进不断完善,随着系统复杂度的提升和业务发展不断的演进。接下来我们以Ngnix+web+db这样最基础的架构看看一个系统的基础设施从简单到复杂的演变的过程:

一台主机运行多个组件

在系统上线初期用户量比较小,对系统的可用性要求也比较低。这样我们可以将所有组件都部署在一台主机上。

一台主机运行一个组件

随着系统业务发展,系统有了性能方面的要求,这时候就需要独立部署,一个组件部署到一台机器上,每台机器的配置也不尽相同,比如数据库和web服务器配置会更高点。

一个组件运行在多台主机上

随着业务的继续发展,系统有了可用性方面的要求,这时候就需要将组件进行多实例部署,每个实例部署在不同的机器上,通过集群软件来支持主备切换,这样就形成了既保证性能又保证可用性的架构。

主机有多台,每台运行多个组件,有负载均衡和主备切换机制

随着系统复杂度的提升,部署的组件越来越多。如果再采用一台机器部署一个组件的话会导致运营成本上升过快,考虑到资源成本这时候就会考虑交叉式的部署架构。一台机器部署多个组件,但是他们之间是交叉进行部署。这样既保证了组件有多实例又保证了任何一台机器挂了的话最少还有一个实例能提供服务。

一个组件用一台虚拟机运行,一台物理机运行多个虚拟机

物理机的性能相对都比较高,如果一台物理机只部署几个组件实际上是对物理机的浪费。为了提高物理机的资源利用率这时候我们将物理机拆分成虚拟机来对外提供部署能力。

一台物理机首先划分出若干个虚拟机,这些组件分别部署在这些虚拟机里。这样就实现了资源的充分利用也提升了系统的可用性还有运维的便利度。

一个组件用一个容器运行,一台物理机上运行多个容器

再往后我们可以将虚拟机替换成容器实现,容器是更轻量的技术,使用容器可以有更高的资源使用率

这就是一个系统基础设施演进的过程,当然这些方案并不是说只能选择其中一种,可以根据实际场景组合使用,演变成既有物理机也有虚拟机、容器的混合状态。


基础架构核心问题


基础设施原则上是解决组件到运行环境的映射问题,基础设施架构需要考虑下面十个方面的核心问题:

  • 主机硬件配置 需要选择什么样的配置来支撑组件部署?
  • 主机与组件的对应关系 主机与组件之间是什么关系?哪些组件部署在哪些主机上?
  • 主机管理 如何管理这些主机?
  • 组件管理 如何管理众多的组件?
  • 环境隔离 不同开发环境之间如何隔离?
  • 资源隔离 一个组件占用太多资源的话势必会导致其他组件资源变少?如何给组件分配合适的资源?
  • 总体资源利用率 系统的利用率是否处在一个合理的状态?
  • 性能 部署架构下各个组件的性能是否能得到保障?会不会出现瓶颈?
  • 可用性 主机挂了系统的可用性能否得到保障?
  • 成本 如何在有限的预算下去支撑所有组件的运行,或者说是能否通过一些好的设计去节省预算?

考虑了上面几个核心问题做出的基础设施架构才是良好的架构,这些核心问题的解决又需要架构师对服务器、网络、存储等知识有一定的了解,关注本系列文章,帮你解决这些问题。

目录
相关文章
|
2月前
|
敏捷开发 缓存 架构师
Apache 架构师总结的 30 条架构原则
Apache 架构师总结的 30 条架构原则
24 0
|
2月前
|
中间件 编译器 调度
嵌入式软件架构基础设施设计方法
嵌入式软件架构基础设施设计方法
78 0
|
1月前
|
机器学习/深度学习 人工智能 架构师
【架构师】AI时代架构师必备技能
【架构师】AI时代架构师必备技能
|
2月前
|
存储 消息中间件 算法
深度思考:架构师必须掌握的五大类架构设计风格
数据流风格注重数据在组件间的流动,适合处理大量数据。调用返回风格则强调函数或方法的调用与返回,过程清晰明了。独立构件风格让每个构件独立运作,通过接口交互,提升灵活性和可重用性。虚拟机风格则模拟完整系统,实现资源的高效利用。
深度思考:架构师必须掌握的五大类架构设计风格
|
2月前
|
设计模式 架构师 前端开发
架构师进阶篇-什么是架构师
架构师进阶篇-什么是架构师
59 0
|
4月前
|
人工智能 运维 架构师
数美科技首席架构师陈建:基于云上弹性的高可用实时风控架构实践
2023年10月31日-11月2日,2023云栖大会在中国杭州·云栖小镇举行,北京数美时代科技有限公司首席架构师陈建在【CloudOps云上运维专场】发表了题为《基于云上弹性的高可用实时风控架构实践》的主题演讲,从在线实时风控架构及高可用解决方案等方向做了分享。
|
5月前
|
Dubbo 应用服务中间件 Docker
阿里P8架构师谈微服务架构:Dubbo+Docker+SpringBoot+Cloud
什么是微服务架构呢?简单说就是将一个完整的应用(单体应用) 按照一定的拆分规则(后文讲述)拆分成多个不同的服务,每个服务都能独立地进行开发、部署、扩展。服务于服务之间通过注入RESTful api或其他方式调用。
|
1天前
|
监控 负载均衡 持续交付
构建高效微服务架构:后端开发的新趋势
【5月更文挑战第5天】在数字化转型的浪潮中,微服务架构以其灵活性、可扩展性和容错性成为企业追求的技术典范。本文深入探讨了微服务的核心组件、设计原则和实施策略,旨在为后端开发者提供构建和维护高效微服务系统的实用指南。通过分析微服务的最佳实践和常见陷阱,我们揭示了如何优化系统性能、保证服务的高可用性以及如何处理分布式系统中的复杂性。
|
1天前
|
缓存 NoSQL Java
构建高性能微服务架构:Java后端的实践之路
【5月更文挑战第5天】在当今快速迭代和高并发需求的软件开发领域,微服务架构因其灵活性、可扩展性而受到青睐。本文将深入探讨如何在Java后端环境中构建一个高性能的微服务系统,涵盖关键的设计原则、常用的框架选择以及性能优化技巧。我们将重点讨论如何通过合理的服务划分、高效的数据存储策略、智能的缓存机制以及有效的负载均衡技术来提升整体系统的响应速度和处理能力。
|
1天前
|
监控 持续交付 数据库
构建高效可靠的微服务架构:策略与实践
【5月更文挑战第5天】 在当今快速发展的软件开发领域,微服务架构已成为构建可扩展、灵活且容错的系统的首选模式。本文将探讨如何通过一系列经过验证的策略和最佳实践来构建一个高效且可靠的微服务系统。我们将深入分析微服务设计的核心原则,包括服务的细粒度划分、通信机制、数据一致性以及容错处理,并讨论如何利用现代技术栈来实现这些目标。文章将提供一套综合指南,旨在帮助开发者和架构师在保证系统性能的同时,确保系统的稳健性。
16 4