首页 > 其他分享 >系统架构设计面试指南(01)-微服务和CAP

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

时间:2023-12-24 23:32:22浏览次数:31  
标签:架构设计 01 服务 系统 CAP 扩展 应用程序 代理服务器 设计

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

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

系统设计基础知识

水平和垂直扩展

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

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

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

微服务

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

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

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

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

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

代理服务器

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

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

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

正向代理

CAP 定理

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

标签:架构设计,01,服务,系统,CAP,扩展,应用程序,代理服务器,设计
From: https://blog.51cto.com/JavaEdge/8957420

相关文章

  • 饮冰十年-人工智能-FastAPI-01- 深入理解 Python 协程
    Python协程是一种强大的异步编程工具,可以有效地处理并发任务,提高程序性能。在这篇博客中,我们将深入探讨协程的概念、用法以及如何在Python中使用它们。一、什么是协程协程定义协程(Coroutine)是一种特殊的函数,它可以在执行中暂停并在稍后的时间点继续执行。这种能力使得我们能......
  • [SDOI2010] 大陆争霸 题解
    [题目传送门](https://www.luogu.com.cn/problem/P2446)#解法由题可知,一个城市$u$保护城市$v$,所以建一条边$u\tov$表示城市$u$保护城市$v$,因为题目说保证有解,所以建的图一定是一个**有向无环图$DAG$**。再在此基础上求出最短路径。具体过程为设$dis_u$表示实际到达(攻破)$u$的最......
  • python网站创建014:jQuery的引入、选择器和筛选器
    1.下载jQuery之后,那如何使用呢?假如我想操作一个div标签,给这个标签补充文字<!DOCTYPEhtml><html><head><title>初识:JavaScript</title><metacharset="UTF-8"></head><body><!--定义一个无文本的div标签--><div......
  • SD Host控制器微架构设计-02
    SD_clk测试模式下,选择hclk,将扫描链中的时钟保持一致clk_en表示可以通过软硬件关闭时钟sd_if模块模块中设置一些寄存器,我们可以对寄存器进行读写或者对于寄存器中的某些域段进行读写操作对于AHB总线的协议进行解析,将addressphase和dataphase进行对齐ahb总线信号和......
  • ASP.NET Core 6(.NET 6) 修改默认端口的方法(5000和5001)
    ​ ASP.NETCore6(.NET6)默认将HTTP端口绑定到5000,将HTTPS端口绑定到5001。可以通过以下三种方式修改默认端口:详细文档:ASP.NETCore6(.NET6)修改默认端口的方法(5000和5001)-CJavaPy方法一:修改launchSettings.json文件在项目的根目录下,找到launchSettings.jso......
  • JavaImprove--Lesson01--枚举类,泛型
    一.枚举认识枚举类枚举是一种特殊的类枚举的格式:修饰符 enmu  枚举类名{  名称1,名称2;  其它成员}//枚举类publicenumA{//枚举类的第一列必须是罗列枚举对象的名称X,Y,Z;privateStringname;publicStringgetName(){retu......
  • 软件架构设计与模式之:数据库设计与数据访问模式
    1.背景介绍数据库设计和数据访问模式是软件架构和设计的核心领域之一。在现代软件系统中,数据库通常是系统的核心组件,负责存储和管理数据。数据访问模式则是一种设计模式,用于实现数据库操作的高效、可靠和可扩展的方式。在本文中,我们将讨论以下主题:背景介绍核心概念与联系核心算法原......
  • 2023-2024-1 20231301 《计算机基础与程序设计》第十三周学习总结
    2023-2024-120231301《计算机基础与程序设计》第十三周学习总结作业信息作业链接作业课程<班级>(2023-2024-1-计算机基础与程序设计)作业要求<作业>(2023-2024-1计算机基础与程序设计第十三周学习总结)作业目标<《C语言程序设计》预习第十二章>《C语言程序设......
  • 在统信UOS操作系统1060上如何部署DNS服务器?01
    原文链接:在统信UOS操作系统1060上如何部署DNS服务器?01hello,大家好啊!今天我要给大家带来的是在统信UOS操作系统1060上部署DNS服务器系列的第一篇文章。在这个系列中,我们将一步步搭建一个完整的DNS服务器环境。而今天,我们的第一步是搭建一个测试用的HTTP服务器。这个过程相对简单,但它......
  • UAV2101~2105串行通信训练
    训练001、单片机与PC机通信,11.0592M晶振,波特率9600。实现任意字符发送。#include<reg52.h>bitbusy;voidSendData(unsignedchardat){while(busy);//判断是否忙busy=1;SBUF=dat;}voidSendString(char*s){while(*s)//Checktheendo......