六种常见系统架构

news2025/1/16 20:20:45

六种常见系统架构 - 基础篇

  • 目录
    • 概述
      • 需求:
    • 设计思路
    • 实现思路分析
      • 1.URL管理
      • 2.微服务架构
      • 3.四、微服务架构
      • 4.多级缓存架构
  • 参考资料和推荐阅读

Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.

目录

在这里插入图片描述

概述

需求:

1、单库单应用架构:最简单的,可能大家都见过

设计思路

实现思路分析

1.URL管理

1、单库单应用架构:最简单的,可能大家都见过
2、内容分发架构:目前用的比较多
3.、读写分离架构:对于大并发的查询、业务

2.微服务架构

4、微服务架构:适用于复杂的业务模式的拆解

5、多级缓存架构:可以把缓存玩的很好
6、分库分表架构:解决单体数据库瓶颈

3.四、微服务架构

1、单体数据库写请求量大量增加,导致数据库压力变大
2、数据库一旦挂了,那么整个业务都挂了

3、业务代码越来越多,都在一个GIT里,越来越难以维护

4、代码腐化严重,臭味越来越浓
如上图所示,我把业务分块,做了垂直切分,切成一个个独立的系统,每个系统各自衍化,有自己的库、缓存、ES等辅助系统,系统之间的实时交互通过RPC,异步交互通过MQ,通过这种组合,共同完成整个系统功能。

对于问题一,由于拆分成多个子系统,系统的压力被分散了,而各个子系统都有自己的数据库实例,所以数据库的压力变小。
对于问题二,一个子系统A的数据库挂了,只是影响到系统A和使用系统A的那些功能,不会所有的功能不可用,从而解决一个数据库挂了,导致所有的功能都不可用的情况。

对于问题三、四,也因为拆分得到了解决,各个子系统都有自己独立的GIT代码库,不会相互影响。通用的模块可通过库、服务、平台的形式解决。

4.多级缓存架构

这个模式可以说是应对超高查询压力的一种普遍采用的策略,基本的思想就是在所有链路的地方,能加缓存的就加缓存,如下图所示:

如上图所示,一般在三个地方加入缓存,一个是客户端处,一个是API网关处,一个是具体的后端业务处,下面分别介绍:

客户端处缓存:这个地方加缓存可以说是效果最好的一个——无延迟。因为不用经过长长的网络链条去后端业务处获取数据,从而导致加载时间过长,客户流失等损失,虽然有CDN的支持,但是从客户端到CDN还是有网络延迟的,虽然不大,具体的技术依据不同的客户端而定,对于WEB来讲,有浏览器本地缓存、Cookie、Storage、缓存策略等技术;对于APP来讲,有本地数据库,本地文件,本地内存,进程内缓存支持,以上提到的各种技术有兴趣的同学可以继续展开学习,如果客户端缓存没有命中,那么会去后端业务拿数据,一般来讲,就会有个API网关,在这里加缓存也是非常重要的。

优点:抗住大量读请求,减少后端压力。

缺点:数据一致性问题较为突出,容易发生雪崩,即:如果客户端缓存失效、API网关缓存失效,那么所有的大量请求瞬间压向后端业务系统,后果可想而知。

六、分库分表架构
这种模式主要解决单表写入、读取 、存储压力过大,从而导致业务缓慢甚至超时,交易失败,容量不够的问题。一般有水平切分和垂直切分两种,这里主要介绍水平切分。这个模式也是技术架构迭代演进的必经之路。

主机:这是最主要的也是最重要的点,本质上分库分表是因为计算与存储资源不够导致的,而这种资源主要由物理机,主机提供的,毕竟没有可用的计算资源,怎么分效果都不是太好。

参考资料和推荐阅读

  1. https://blog.csdn.net/weixin_38889300/article/details/121433945

欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!~
如有侵权,请私信联系删除,多谢啦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/162158.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Unity学习笔记】[Unity中文课堂教程] C#中级编程代码

【Unity学习笔记】[Unity中文课堂教程] C#中级编程代码 最近想补一补C#基础,Unity官方的C#中级编程教程质量很高,于是开个帖子把跟着敲记录了部分价讲解和我自己的理解的代码存在这 原课程链接:添加链接描述 https://www.bilibili.com/video…

Java字符流(FileReader/FileWriter)

文章目录概念FileReader字符输入流相关方法和构造器FileWriter字符输出流相关方法和构造器为什么用完不close或flush,会写入不到数据?概念 在Java中,使用Unicode约定存储字符。字符流自动允许我们逐字符读/写数据,有助于执行16位…

2023年网络爬虫实训(第五天)

任务1:掌握re.match和re.search的用法,完成课堂代码.掌握基础通配符的用法如\w \s \d [] * ^ $.并完成作业4. 1.re.match() re.match()的是从头匹配一个符合规则的字符串,从起始位置开始匹配,匹配成功返回一个对象&…

1.力扣刷题之二分查找

题目: 704. 二分查找 - 力扣(LeetCode) 思路 解题 左闭右闭 左闭右开 题目: 704. 二分查找 - 力扣(LeetCode) 思路 这道题首先要找出关键词:有序数组,元素不重复;这些都是使用二分法的前提条件&#x…

使用Stable Diffusion和Pokedex的描述生成神奇宝贝图片

还记得我们以前使用GAN、Clip、DALL-E生成神奇宝贝的文章吗,现在是时候使用Stable Diffusion了 在本文中,我将展示如何从神奇宝贝系列不同游戏中的Pokedex条目中获取神奇宝贝描述,并使用Stable Diffusion根据这些藐视生成图片,这样…

【基数排序】 C++高效实现

题目描述 给定你一个长度为 nnn 的整数数列。 请你使用快速排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式 输入共两行,第一行包含整数 nnn。 第二行包含 nnn 个整数(所有整数均在 1∼1091 \sim 10^91∼109 范围内&…

Android架构演进 · 设计模式· 为什么建议你一定要学透设计模式?

“ 【小木箱成长营】设计模式系列文章(排期中): Android 架构演进 设计模式 Android 常见的 4 种创建型设计模式(上) Android 架构演进 设计模式 Android 常见的 4 种创建型设计模式(下) Android 架构演进 设计模式 Android 常见的 6 种结构型设计模式(上) An…

vue2 中组件的生命周期

目录 一、组件的生命周期 1、什么是组件的生命周期? 2、生命周期的阶段划分: (1)创建阶段:beforeCreate、created、beforeMount、mounted ​(2)运行阶段:beforeUpdate、updatev…

【顺序表】数据结构,java代码实现

前言: 大家好,我是良辰丫🍓🍓🍓,顺序表和数组有什么区别呢,我们带着这个疑问去接触顺序表,学习顺序表相关知识。🚀🚀🚀 🧑个人主页&am…

商城系统春节氛围营造

春节将至,无论是线上还是线下,都在紧锣密鼓的进行春节营销,线下商家可以通过布置店铺,来营造节日氛围,那对于线上商城来说,又能从哪些方面进行氛围营造呢?今天,我们就以CRMEB Pro版系…

Spring Boot Actuator详解与深入应用(一):Actuator 1.x

《Spring Boot Actuator详解与深入应用》预计包括三篇,第一篇重点讲Spring Boot Actuator 1.x的应用与定制端点;第二篇将会对比Spring Boot Actuator 2.x 与1.x的区别,以及应用和定制2.x的端点;第三篇将会介绍Actuator metric指标…

AWVS扫描报告分析

系列文章 AWVS安装与激活 AWVS扫描Web应用程序 扫描报告分析 生成报告 1.选则我们已经扫描好的网站,点击它 2.点击后,右上角选择生成报告 3.选择生成报告的类型 4.点击生成报告 如下我们分别选择了三种规格生成了三份不同类型的报告 5.点击HTML&…

Vivado

Vivado设计套件,是Xilinx公司最新的为其产品定制的集成开发环境,支持Block Design、Verilog、VHDL等多种设计输入方式,内嵌综合器以及仿真器,可以完成从设计输入、综合适配、仿真到下载的完整FPGA设计流程。 Vivado集成了HLS&…

与机器人chatGPT聊聊软件测试的热门话题

之前我和chatGPT有过一次对话, 那只是问一些有趣的、时髦的大众话题。上周末在家,想考一考chatGPT的软件测试专业水平,确定它是否算得上一名测试专家?通过一系列有难度的提问,感觉有时它答的精妙与全面,但有…

SAP ABAP——SAP包(一)【包概要简述及创建】

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后…

jsp 实验室管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 jsp 实验室管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql,使用…

Node 异步I/O 实现

Node 异步I/O 实现 文章目录Node 异步I/O 实现理想的非阻塞异步 I/O现实的异步I/O实现方案重磅来了 Node 的异步 I/O的实现整个异步 I/O 的过程Node 实现异步 I/O 的总结PS:🌰理想的非阻塞异步 I/O 但是现实是骨感的,现实的异步I/O实现方案有…

Apache Doris 系列: 基础篇-使用BitMap函数精准去重(1)

1. 简述 精准去重的常用方式是使用SQL函数COUNT(DISTINCT),这种方法最简单,但是要求所有数据都汇聚在一个节点上计算,在数据量大的情况下,需要等待比较常的时间。 例如一个6000000行数据的表,执行以下SQL,…

模板技术详解

目录 一、概念介绍 二、函数模板 2.1 概念 2.2 函数模板格式 2.3 函数模板原理 2.4 函数模板实例化 2.5 函数模板的匹配原则 三、类模板 3.1 类模板格式 3.2 类模板实例化 四、非类型模板参数 五、模板特化 5.1 概念 5.2 函数模板特化 5.3 类模板特化 六、模板…

如何使用mybatis处理数据库关系中的一对多关系呢?

测试环境的搭建: 本篇文章的测试环境搭建和上篇文章基本相似,这里在上篇文章传送门测试环境的基础上进行对比和修改! 上篇文章所提到的多对一是多个学生对应一个老师,是在学生的角度去获取老师的信息,而本篇文章的一…