16个系统设计中的核心概念(上)

介绍16个基本的系统设计概念

微信搜索关注《Java学研大本营》

系统设计是计算机科学技术领域的重要主题。在系统设计中,对于负载均衡、缓存、分区、复制、数据库和代理等基本设计概念的深入理解是十分重要和必要的。这些概念是系统设计的关键要素,对于设计高质量的系统和应对各种挑战至关重要。通过掌握理解这些基本思想,对于提升设计水平和获取更好的设计成果非常有帮助。

图片

本文介绍16个基本的系统设计概念。

1 域名系统(DNS,Domain Name System )

域名系统(DNS)是互联网基础架构的核心组成部分,将人类友好的域名转换为相应的IP地址。它的功能类似于互联网的电话簿,允许用户通过键入易于记忆的域名(如www.designgurus.io)而不是计算机用于相互识别的数字IP地址(如“192.0.2.1”)来访问网站和服务。

当在网络浏览器中输入一个域名时,DNS负责查找相关的IP地址并将您的请求引导到正确的服务器。该过程始于您的计算机向递归解析器发送查询请求,然后递归解析器搜索一系列的DNS服务器,从根服务器开始,然后是顶级域(TLD)服务器,最后是权威名称服务器。一旦找到IP地址,递归解析器将其返回给您的计算机,使您的浏览器能够与目标服务器建立连接并访问所需的内容。

图片

2 负载均衡器(Load Balancer)

负载均衡器是一种网络设备或软件,用于将传入的网络流量分配到多个服务器,以确保资源的最佳利用、降低延迟并保持高可用性。它在扩展应用程序和有效管理服务器工作负载方面发挥着至关重要的作用,特别是在流量突增或请求在服务器之间分布不均的情况下。

负载均衡器使用不同的算法来确定如何分配传入的流量。常见的算法包括:

  • 轮询:请求按照顺序循环地均匀分布到所有可用服务器上。

  • 最少连接:负载均衡器将请求分配给活动连接最少的服务器,优先选择负载较轻的服务器。

  • IP 哈希:客户端的 IP 地址经过哈希计算,得到的值用于确定请求应该发送到哪个服务器。这种方法可以确保特定客户端的请求始终被路由到同一台服务器上,有助于维持会话持久性。

图片

3 API 网关(API Gateway)

API 网关是一个服务器或服务,充当外部客户端与应用程序内部微服务或基于 API 的后端服务之间的中间人。它是现代架构中的关键组件,特别适用于基于微服务的系统,可以简化通信过程,并为客户端提供访问各种服务的单一入口点。

API 网关的主要功能包括:

  • 请求路由:根据预定义的规则和配置,将来自客户端的 API 请求定向到适当的后端服务或微服务。

  • 身份验证和授权:API 网关可以处理用户的身份验证和授权,确保只有经过授权的客户端可以访问服务。它可以验证 API 密钥、令牌或其他凭据,然后将请求路由到后端服务。

  • 速率限制和流量控制:为了保护后端服务免受过载或滥用,API 网关可以根据预定义的策略强制执行速率限制或对来自客户端的请求进行流量控制。

  • 缓存:为了降低延迟和后端负载,API 网关可以缓存频繁使用的响应,直接提供给客户端,而无需查询后端服务。

  • 请求和响应转换:API 网关可以修改请求和响应,例如转换数据格式、添加或删除标头,或修改查询参数,以确保客户端与服务之间的兼容性。

图片

4 内容分发网络(CDN,Content Delivery Network)

内容分发网络(CDN)是由分布在全球各地的服务器组成的网络,用于存储和传递内容,如图片、视频、样式表和脚本,以从地理上更接近用户的位置提供服务。CDN旨在改善内容传递到最终用户的性能、速度和可靠性,无论用户与源服务器的位置关系如何。

CDN的工作原理如下:

  • 当用户请求网站或应用程序的内容时,请求会被定向到最近的CDN服务器,也称为边缘服务器。

  • 如果边缘服务器已经缓存了所请求的内容,它会直接向用户提供内容。这样可以减少延迟并改善用户体验,因为内容传输的距离更短。

  • 如果边缘服务器上没有缓存所请求的内容,CDN会从源服务器或其他附近的CDN服务器检索内容。一旦获取到内容,它会被缓存在边缘服务器上并提供给用户。

  • 为了确保内容保持最新,CDN会定期检查源服务器是否有变更,并相应地更新缓存。

图片

5 正向代理与反向代理(Forward Proxy vs. Reverse Proxy)

正向代理,也称为“代理服务器”或简称为“代理”,是位于一个或多个客户机前面的服务器,充当客户机与互联网之间的中间人。当客户机请求互联网上的资源时,请求首先发送到正向代理。正向代理会代表客户机将请求转发到互联网,并将响应返回给客户机。

反向代理是位于一个或多个Web服务器前面的服务器,充当Web服务器与互联网之间的中间人。当客户端请求互联网上的资源时,请求首先发送到反向代理。反向代理将请求转发给其中一个Web服务器,然后将响应返回给反向代理。反向代理再将响应返回给客户端。

图片

6 缓存(Caching)

缓存是位于应用程序和数据的原始来源(如数据库、文件系统或远程Web服务)之间的高速存储层。当应用程序请求数据时,首先在缓存中进行检查。如果缓存中存在数据,则将其返回给应用程序。如果缓存中不存在数据,则从原始来源检索数据,将其存储在缓存中供将来使用,并返回给应用程序。在分布式系统中,可以在多个位置进行缓存,例如客户端、DNS、CDN、负载均衡器、API网关、服务器、数据库等。

图片

7 数据分区(Data Partitioning)

在数据库中,水平分区,也称为分片(sharding),涉及将表的行分成较小的表,并将它们存储在不同的服务器或数据库实例上。这样做是为了将数据库的负载分布到多个服务器上,以提高性能。

另一方面,垂直分区涉及将表的列分成单独的表。这样做是为了减少表中的列数,并提高仅访问少数列的查询的性能。

图片

8 数据库复制(Database Replication)

数据库复制是一种技术,用于在不同的服务器或位置上维护同一数据库的多个副本。数据库复制的主要目的是提高数据的可用性、冗余性和容错性,确保系统在硬件故障或其他问题的情况下继续运行。

在复制数据库的设置中,一个服务器充当主数据库(或主库),而其他服务器则充当副本(或从库)。该过程涉及在主数据库和副本之间同步数据,以使它们都具有相同的最新信息。数据库复制提供了多个优点,包括:

  • 提高性能:通过在多个副本之间分布读查询,可以减轻主数据库的负载并提高查询响应时间。

  • 高可用性:在主数据库发生故障或停机的情况下,副本可以继续提供数据,确保应用程序的不间断访问。

  • 增强数据保护:在不同位置拥有数据库的多个副本有助于防止由于硬件故障或其他灾难导致的数据丢失。

  • 负载均衡:副本可以处理读查询,从而实现更好的负载分配,减轻主数据库的总体压力。

推荐书单

《3D图形系统设计与实现》

《3D图形系统设计与实现》详细阐述了与3D图形系统设计与实现相关的基本解决方案,主要包括对象和图形设备、交互式图形界面、几何体、颜色、数字图像、3D场景描述、三维几何体模型、建模技术、层次结构和体系结构对象、视见相机转换、视见的表面剪裁、光栅化、可见表面计算、局部光照模型、全局光照、贴图技术、着色机制,以及三维图形系统等内容。此外,《3D图形系统设计与实现》还提供了相应的示例,以帮助读者进一步理解相关方案的实现过程。   《3D图形系统设计与实现》适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考手册。

《3D图形系统设计与实现》icon-default.png?t=N7T8https://item.jd.com/12644925.html

图片

精彩回顾

系统设计必会,如何编写REST API文档

12个系统设计中必知必会的微服务模式(上)

12个系统设计中必知必会的微服务模式(下)

8个要点,彻底比较IntelliJ IDEA专业版和社区版

超简单,在IntelliJ IDEA中使用JUnit和Mockito进行单元测试

微信搜索关注《Java学研大本营》

访问【IT今日热榜】,发现每日技术热点

  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
大学生在线租房平台管理系统按照操作主体分为管理员和用户。管理员的功能包括报修管理、报修评价管理、字典管理、房东管理、房屋管理、房屋收藏管理、房屋留言管理、房屋租赁管理、租房论坛管理、公告信息管理、留言板管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 大学生在线租房平台管理系统可以提高大学生在线租房平台信息管理问题的解决效率,优化大学生在线租房平台信息处理流程,保证大学生在线租房平台信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理大学生在线租房平台信息,包括房屋管理,培训管理,报修管理,薪资管理等,可以管理公告。 房屋管理界面,管理员在房屋管理界面可以对界面显示,可以对房屋信息的房屋状态进行查看,可以添加新的房屋信息等。报修管理界面,管理员在报修管理界面查看报修种类信息,报修描述信息,新增报修信息等。公告管理界面,管理员在公告管理界面新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
基于hal库的OLED显示屏驱动C语言实现源码.zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值