技术架构

一、单机架构

简介:应用服务和数据库服务共用一台服务器

出现原因:出现在互联网早期,访问量比较小,单机足以满足

架构工作原理:以电商为例,可以看到通过应用(划分了多个模块)和数据库在单个服务器上协作完成业务运行

技术案例:

优缺点:

优点:部署简单,成本低

缺点:存在严重的性能瓶颈,数据库和应用相互竞争资源

二、应用数据分离架构

简介:应用服务和数据库服务使用不同的服务器

出现的原因:单机存在严重的资源竞争,导致站点变慢

架构工作原理:以电商为例,可以看到应用(划分多个模块)和数据库在各自服务器上通过协作完成业务运行

技术案例:

优缺点:

优点:成本相对可控,性能相比单机有提升,数据库单独隔离,不会因为应用把数据库搞坏,有一定的容灾能力

三、应用服务集群架构

简介:引入了负载均衡,应用以集群方式运作

出现原因:单个应用不足以支持海量的并发请求,高并发的时候站点响应变慢

架构工作原理:以电商为例,可以看到应用不再是一个,而是编程了多个通过负载均衡来支持海量的并发请求

技术案例:

优缺点:

优点:

应用服务器高可用:应用满足高可用,不会一个服务出问题真个站点挂掉

应用服务具备一定高性能:如果不访问数据库,应用相关处理通过扩展可以支持海量请求快速响应

应用服务有一定的扩展能力:支持横向扩展

缺点:数据库是单点,没有高可用;运维工作增多,需要开发对应的工具对快速部署;硬件成本较高

四、读写分离/主从分离架构

简介:将数据库读写操作分散到不同的节点,数据库服务器搭建主从集群,一主多从,一主多从都可以,数据库主机负责写操作,从机只负责多操作

出现的原因:数据库成为瓶颈,而互联网一般读多写少,数据库承载压力大,主要是由于这些读的请求造成的,那么我们可以把读操作和写操作分开

架构工作原理:以电商为例,可以看到数据库服务器不在是一个,而是变成了多个数据库主机负责写操作,从机负责读操作,数据库主机通过复制将数据同步到从机

技术案例:

架构优缺点:

优点:数据库的读取性能提升;读取被其他服务器分担,写的性能被间接提升;数据库有缺点;从库,数据库的可用性提高了

缺点:热点数据频繁读取导致数据库负载很高;档同步挂掉,或者同步延迟较大时,写库和读库的数据不一致;服务器成本需要进一步增加

五、冷热分离架构

简介:引入缓存,实行冷热分离,将热点数据放到缓存中快速响应

出现原因:海量的请求导致数据库负载过高,站点相应再度变慢

架构工作原理:以电商为例,可以看到多了缓存服务器,对于任店数据全部都放到缓存中,不常用数据再去查询我们的数据库

优缺点:

优点:大幅降低对数据库的访问请求,性能提升非常明显

缺点:带来了缓存一致性,缓存击穿,缓存失效,缓存雪崩等问题;业务体量支持变大后,数据不断增加,数据库单库太大,单个表体量也太大,数据库查询会很慢,导致数据库再度成为系统瓶颈

六、垂直分库架构

简介:数据库的数据被拆分,数据库数据分布式存储,分布式处理,分布式查询,也可以理解为分布式数据库架构

出现原因:单机的写库会逐渐会达到性能瓶颈,需要拆分数据库,数据表的数据量太大,处理压力太大,需要进行分表,为降低运维压力,业界逐渐研发了分布式数据库,库表天然支持分布式。

架构原理:以电商为例,数据库是由多个主从库或存储集群构成,支持分布式大规模并行处理

技术架构:

优缺点:

优点:数据吞吐量大幅上升

缺点:跨库join、分布式事务等问题,这些需要对应的去进行解决,目前mpop都有对应的解决方案;数据库和缓存结合目前能够抗住海量的请求,但是应用的代码整体耦合在一起,修改一行代码需要真题重新发布

七、微服务架构

简介:微服务是一种架构风格,按照业务代码块来划分应用代码,使单个应用的职责更清晰,相互之间可以做到独立升级迭代。

出现原因:

扩展性差:应用程序无法轻松扩展,因为每次需要更新应用程序时,都必须重新构建整个系统

持续开发困难:一个很小的代码改动,也需要重新部署整个应用,无法频繁并轻松的发布版本

不可靠:即使系统的一个功能不起作用,可能导致整个系统无法工作

不灵活:无法使用不同的技术构建单体应用程序

代码维护难:所有功能耦合在一起,新人不止从何下手

架构原理:以电商为例,一个电商应用拆分成多个微服务程序,如用户服务,交易服务,商品服务,相互之间协作支持整个商城的应用

技术架构:

优缺点:

优点:

灵活性高:服务独立测试,部署,升级,发布

独立扩展:每个服务可以各自进行扩展

提高容错性:一个服务问题并不会让整个系统瘫痪

性能技术的应用容易:支持多种编程语言

缺点:

运维复杂度高:业务不断发展,应用和服务都会不断变多,应用和服务的部署变得复杂,同一台服务器上部署多个服务还要解决运行环境冲突问题,此外,对于大促这类需要动态扩缩容的场景,需要水平扩展服务的性能,就需要在新增的服务上准备运行环境,部署服务等,运维将变得十分困难

资源使用变多:所有这些独立运行的微服务都需要占用内存和CPU

处理故障困难:一个请求跨多个服务调用,需要查看不同服务的日志完成问题定位

八、容器编排架:

简介:借助容器化技术(如docker)将应用/服务可以打包为镜像,通过编排工具(如k8s)来动态分发和部署镜像,服务一容器化方式运行

出现原因:微服务拆分细,服务多部署工作量大,而且配置复杂,容易出错;微服务数量多扩缩容麻烦,而且容易出错,每次缩容后扩容有需要重新配置服务对应的环境参数信息;微服务之间运行环境可能冲突,需要更多的资源来进行部署或者通过修改配置来解决冲突

架构工作原理:以电商为例,一个商城应用拆分成了多个微服务器,如用户服务、交易服务和商家服务,每个微服务打包了到容器中

技术案例:

优缺点:

优点:

部署运维简单快速:一条命令可以完成几百个服务的部署或者扩缩容

隔离性好:容器与容器之间文件系统、网络等互相隔离,不会产生环境冲突

轻松支持滚动更新:盘本间切换都可以通过一个命令完成升级或者回滚

缺点:技术栈多,对研发团队要求高;机器还是需要公司自身来管理,在非大促的时候,还是需要闲置着大量的机器资源来应对大促,机器本身成本和运维成本都极高,资源利用率低,可以通过购买云厂商服务器解决

总结:

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

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

相关文章

开发者选型:小程序原生or 小程序框架?

从2017年小程序推出以来,小程序的发展可谓突飞猛进。其流量入口多、易于传播且开发成本低的特性,使得越来越多的企业摒弃原生开发选择小程序。市场业务需求也越来越大,但是对于开发者来说哦,用原生去开发小程序很难受,…

C++ STL概念之 序列式容器4(bitset / array / forward_list / deque)

bitset 接口 set all bits (1) bitset& set() noexcept;single bit (2) bitset& set (size_t pos, bool val true); 用于序列中的一位或所有位设置为1。 bitset& set() noexcept; 这个版本将位序列中的所有位都设为1。 bitset& set(size_t pos, bool val …

Java 高级面试问题及答案2

Java 高级面试问题及答案 问题 1: 请解释 Java 中的多线程和并发的区别,并举例说明如何避免常见的并发问题。 答案: 多线程是指程序中有多个线程同时执行,而并发是指程序设计中允许多个操作看起来是同时执行的,即使它们可能不是…

视频智能检测AI智能分析网关V4告警消息推送:公众号消息推送的配置步骤介绍

TSINGSEE青犀智能分析网关V4属于高性能、低功耗的软硬一体AI边缘计算硬件设备,目前拥有3种型号(8路/16路/32路),支持Caffe/DarkNet/TensorFlow/PyTorch/MXNet/ONNX/PaddlePaddle等主流深度学习框架。硬件内部署了近40种AI算法模型…

继承,多态,封装以及对象的打印

前言: 我们都知道Java是一种面向对象的编程语言,面向对象语言的三大特性就是继承,多态,封装,而这些特性正好的Java基础的一个主体内容。在学到这之前,我们肯定已经学习过了类和对象,所以这部分…

光学镜片镀膜上下料设备

在现代化工业生产的浪潮中,智能化、自动化已成为提升生产效率、降低成本的关键所在。特别是在精密制造领域,对于设备的高精度、高效率要求更是严苛。今天向大家推荐一款引领行业潮流的智能设备——富唯智能镀膜上下料设备。 产品介绍 实现功能 单面镀膜…

NGINX SPRING HTTPS证书

服务器:xxx.xxx.xxx.56 客户端器:xxx.xxx.xxx.94##生成服务器证书和密钥容器 keytool -genkey -alias tas-server -keypass 250250 -keyalg RSA -keysize 2048 -validity 3650 -keystore D:\https证书\tas-server.jks -storepass 250250 -dname "C…

IT行业的现状与未来:技术创新引领时代变革

随着技术的不断进步,IT行业已成为推动全球经济和社会发展的关键力量。从云计算、大数据、人工智能到物联网、5G通信和区块链,这些技术正在重塑我们的生活和工作方式。本文将探讨当前IT行业的现状及未来发展趋势,并邀请行业领袖、技术专家和创…

低成本创业分享,一个不用自己囤货、进货、直播的项目|抖音小店

大家好,我是喷火龙 在抖音上面开店,不仅可以卖自己的商品,还可以卖别人的商品赚差价, 并且不需要你囤货、进货、直播、剪视频,也不需要有粉丝。 这个项目就是抖音小店无货源。 很多朋友对抖音小店无货源模式的玩法…

tensorrtx-yolov5-v6.0部署在windows系统

前言:最近几天一直在搞这个东西,现在跑通了,为了以后自己看和帮助他人,就记录一下。虽然是跑通了但是觉得怪怪的,感觉不是自己想要的效果,另外这个只能检测图片,不能摄像头实时监测(我暂时没找到…

MATLAB实现BFGS算法,用wolfe选择步长

BFGS 算法简介 BFGS(Broyden-Fletcher-Goldfarb-Shanno)算法是一种用于无约束优化问题的准牛顿法。它通过构建和更新近似的海森矩阵(Hessian Matrix)来加速优化过程。BFGS 是一种常用且有效的优化算法,尤其适用于大规…

python脚本-修改.xlsx表格内“符合条件的”单元格样式(字体颜色、底色)

方法一 创建新的表格,将源表格的值写入新表格内(写之前check每个单元格,进行样式设置),这种做法会让“未指定样式的单元格”默认样式写入 # codingutf-8 import pandas as pd from openpyxl.styles import Font,Patt…

spring 约定优于配置 spring boot约定大于配置

目录 约定优于配置 SpringBoot 中的约定优于配置 约定优于配置的起源 约定优于配置 约定优于配置:也称作按约定编程是一种软件设计范式。目的在于减少软件开发人员所需要做出决定的数量,从而获得简单的好处,而又不失其中的灵活性。开发人员仅…

Linux磁盘I_O性能优化:调整请求队列长度

在本篇博客中,将探讨如何在CentOS系统上调整磁盘I/O请求队列长度,以改善机械硬盘(HDD)和固态硬盘(SSD)的读写性能。调整请求队列长度是一个高级优化策略,可以帮助减少I/O操作的延迟,…

springsecurity项目快速搭建

自定义security的搭建 package com.sangeng.config;import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;Co…

智能文档处理:解析文档场景下多模态大模型的应用与研究前沿

解析文档场景下多模态大模型的应用与研究前沿 一、TextIn 文档解析技术1. 现有大模型文档解析问题2. 文档解析技术背景3. TextIn 文档解析技术架构4. 版面分析关键技术 Layout-engine 二、TextIn 文本向量化技术三、TextIn.com Text Intelligence 一、TextIn 文档解析技术 hell…

【driver6】debugfs,性能优化,

文章目录 1.内核调试手段:debugfs.h中api建立目录/sys/kernel/debug2.性能优化:裸磁盘无法使用,一般都刷文件系统。驱动加上要考虑磁盘io,内存占用,cpu使用情况3.Valgrind内存泄漏排查案例:4.cpu瓶颈&#…

英语学习笔记10——Look at ...

Look at … 看…… 词汇 Vocabulary fat adj. 胖的,丰富的 n. 脂肪 例句:他是个胖男孩。    He is a fat boy. 搭配:fat cat 有钱人,土豪 woman n. 女人 girl n. 女孩 madam n. 女士 man n. 男人 boy n. 男孩 sir n. 先生 …

云飞云共享云桌面如何降低电脑投入成本?

云飞云共享云桌面作为一种创新的云计算解决方案,以其独特的优势在业界赢得了众多认可。其中,它极大地降低了电脑投入成本,为企业和个人用户带来了实实在在的经济效益。那么,云飞云共享云桌面是如何实现这一点的呢? 设…

spring-boot-cache整合redis

引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId> </dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>…