系统架构设计面试指南(01)-微服务和CAP

2023-12-26 09:54:05 浏览数 (3)

第一时间关注技术干货!

免责声明~ 任何文章不要过度深思! 万事万物都经不起审视,因为世上没有同样的成长环境,也没有同样的认知水平,更「没有适用于所有人的解决方案」; 不要急着评判文章列出的观点,只需代入其中,适度审视一番自己即可,能「跳脱出来从外人的角度看看现在的自己处在什么样的阶段」才不为俗人。 怎么想、怎么做,全在乎自己「不断实践中寻找适合自己的大道」

系统设计是定义满足特定需求的系统的架构、接口和数据的过程。系统设计通过协同和高效的系统满足您的业务或组织需求。一旦业务或组织确定了其需求,就可以开始构建一个将这些需求融入物理系统设计的过程,以满足客户的需求。您设计系统的方式将取决于您是选择自定义开发、商业解决方案还是两者结合。

系统设计需要对构建和工程系统采取系统的方法。良好的系统设计要求您考虑基础设施的方方面面,从硬件和软件,一直到数据及其存储方式。

系统设计基础知识

水平和垂直扩展

可扩展性是指应用程序在不牺牲延迟的情况下能够处理和经受增加的工作负载的能力。应用程序需要强大的计算能力才能良好地进行扩展。服务器应该足够强大,以处理增加的流量负载。有两种主要的扩展应用程序的方式:水平和垂直。

水平扩展,或称为横向扩展,意味着向现有硬件资源池中添加更多硬件。这会增加系统整体的计算能力。垂直扩展,或称为纵向扩展,意味着增加服务器的性能。这会提高运行应用程序的硬件的性能。

这两种扩展方式都有各自的优缺点。在某些情况下,您需要考虑权衡并决定哪种类型的扩展对您的用例最适合。了解扩展的好处和风险,对应用程序可扩展性产生负面影响的主要瓶颈等内容。

微服务

[微服务],或称为微服务架构,是一种通过松散耦合的服务构建应用程序的体系结构风格。它将大型应用程序划分为独立的、模块化的服务。这些模块可以独立开发、部署和维护。

在微服务体系结构中,每个微服务都有一个专门的团队负责。

当团队#1超出单个微服务的限制时,我们可以轻松地扩展微服务以满足团队需求的变化。

与传统的单体应用程序相比,微服务的运行速度更快、更可靠。由于应用程序被分解为独立的服务,每个服务都有自己的逻辑和代码库。这些服务可以通过应用程序编程接口(API)相互通信。

对于希望开发更具可扩展性应用程序的组织来说,微服务是理想的选择。由于其现代的能力和模块,微服务使得更容易扩展应用程序。如果您与一个庞大或不断增长的组织合作,微服务对您的团队非常有利,因为它们更容易随着时间的推移进行扩展和定制。

代理服务器

[代理服务器],或称为正向代理,充当用户和互联网之间的通道。它将终端用户与他们浏览的网站分开。代理服务器不仅转发用户请求,还提供许多好处,例如:

  • 提高安全性
  • 提高隐私性
  • 访问被阻止的资源
  • 控制员工和子女的互联网使用
  • 缓存数据以加速请求

每当用户发送对终端服务器的地址的请求时,流量都会通过代理服务器流向该地址。当请求返回到用户时,它会通过相同的代理服务器返回给用户。

正向代理

CAP 定理

CAP 定理是系统设计领域的基本定理。它指出分布式系统在分区的情况下只能同时提供一致性、可用性和分区容错性中的两个属性。该定理在分区存在时形式化了一致性和可用性之间的权衡。

未完待续。。。

参考:

  • 编程严选网

0 人点赞