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

点击下方“JavaEdge”,选择“设为星标”

第一时间关注技术干货!

免责声明~

任何文章不要过度深思!

万事万物都经不起审视,因为世上没有同样的成长环境,也没有同样的认知水平,更「没有适用于所有人的解决方案」

不要急着评判文章列出的观点,只需代入其中,适度审视一番自己即可,能「跳脱出来从外人的角度看看现在的自己处在什么样的阶段」才不为俗人

怎么想、怎么做,全在乎自己「不断实践中寻找适合自己的大道」

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

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

系统设计基础知识

水平和垂直扩展

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

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

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

微服务

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

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

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

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

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

代理服务器

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

  • 提高安全性

  • 提高隐私性

  • 访问被阻止的资源

  • 控制员工和子女的互联网使用

  • 缓存数据以加速请求

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

正向代理

CAP 定理

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

未完待续。。。

参考:

  • 编程严选网

写在最后

编程严选网(www.javaedge.cn),程序员的终身学习网站已上线!

点击阅读原文,即可访问网站!

欢迎长按图片加好友,我会第一时间和你分享软件行业趋势面试资源学习途径等等。

35154fb347fccc41e47855a01fdd5742.jpeg添加好友备注【技术群交流】拉你进群,更多教程资源应有尽有

关注公众号后,在后台私信:

  • 回复【架构师】,获取架构师学习资源教程

  • 回复【面试】,获取最新最全的互联网大厂面试资料

  • 回复【简历】,获取各种样式精美、内容丰富的简历模板

  • 回复 路线图,获取直升Java P7技术管理的全网最全学习路线图

  • 回复 大数据,获取Java转型大数据研发的全网最全思维导图

  • 微信【ssshflz】私信 【副业】,进副业交流群

  • 点击阅读原文,即可访问程序员一站式学习网站


   

ff498fb590530d8b944d04f59e17cf1e.png

最近在准备面试,为大家准备一份最新最全的互联网大厂Java面经总结。
后端职业发展知识星球:

往期推荐


精心整理Java大厂面试必读书籍(强烈推荐)
我是如何一步步让公司的MySQL支撑亿级流量的?
你真的思考过自己写的代码为啥这么垃圾吗?

   

   

   
嘿,你在看吗?

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-25 10:46:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-25 10:46:04       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-25 10:46:04       82 阅读
  4. Python语言-面向对象

    2023-12-25 10:46:04       91 阅读

热门阅读

  1. AWS认证SAA-C03每日一题

    2023-12-25 10:46:04       46 阅读
  2. c语言查找算法

    2023-12-25 10:46:04       66 阅读
  3. 第二章 mysql配置

    2023-12-25 10:46:04       46 阅读
  4. 某大型零售企业薪酬与绩效考核体系项目纪实

    2023-12-25 10:46:04       70 阅读
  5. LeetCode //C - 643. Maximum Average Subarray I

    2023-12-25 10:46:04       65 阅读
  6. 面试经典150题(47-49)

    2023-12-25 10:46:04       55 阅读