八大技术架构-演进之路

单机架构

1、简介

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

2、出现原因

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

3、架构工作原理

单机架构通过应用(划分了多个模块)和数据库在单个服务器上协作完成业务运行,具体表现为,用户在浏览器中输入 www.baidu.com,首先经过 DNS 服务将域名解析成 IP 地址并返回,随后浏览器访问(实际访问的是该 IP 对应的应用服务),所访问到的都是同一个服务器

4、架构优缺点

优点

部署简单,成本低

缺点

存在严重的性能瓶颈;数据库和应用存在相互竞争资源的现象

5、相关软件

Web 服务器软件:Tomcat、ApacheApache 、Netty、Nginx、Resin等

数据库软件:MySQL、DBeaver、Oracle、PostgreSQL、SQL Server 等

应用数据分离架构

1、简介

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

2、出现原因

单机存在严重的资源竞争,导致站点变慢

3、架构工作原理

应用(划分为很多个模块)和数据库在各自的服务器上通过网络协作完成业务运行。具体的用户输入域名经过 dns 解析后找到对应的应用服务器(Tomcat服务),再去访问 MySQL 服务器,拿到数据后返回给应用服务,最后返回给用户 

4、优缺点

优点

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

缺点

硬件成本变高;性能有瓶颈,无法应对海量并发

应用服务集群架构

1、简介

在应用数据分离架构的基础上以集群的方式运作,引入决策层(负载均衡),应用以集群方式运作

2、出现原因

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

3、架构工作原理

应用不再是一个,而是变成了多个,并通过负载均衡来支持海量数据并发。 

4、优缺点

优点

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

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

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

缺点

数据库成为性能瓶颈,无法应对数据库的海量查询;

数据库是单点,没有高可用;

运维工作增多,扩展后运维部署工作增多,需要开发对应的工具应对快速部署;

硬件成本较高

5、相关软件

负载均衡软件:Nginx、HAProxy、LVS、F5 等

读写分离/主从分离架构

1、简介

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

2、出现原因

数据库成为瓶颈,而互联网应用一般读多写少,数据库承载压力大,主要是由这些都的请求造成的,因此我们可以将读操作和写操作分开

3、架构工作原理

数据库服务器不再是一个,而是变成了多个,数据库主机负责写操作,从机负责读操作,数据库主机通过复制将数据同步到从机

4、架构优缺点

优点

数据库的读取性能提升;

读取被其他服务器分担,写的性能简介提升;

数据库有从库,数据库的可用性提高了

缺点

热点数据的频繁读取导致数据库负载很高

当同步挂掉,或者同步延迟比较大时,写库和读库的数据不一致;

服务器成本需要进一步增加

5、相关软件

MyCat、TDDL、Amoeba、Cobar 等类似数据库中间件等

冷热分离架构

1、简介

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

2、出现原因

海量的请求导致数据库负载过高,站点响应再度变慢

3、架构工作原理

多了缓存服务器,对于热点数据全部放到缓存中,不常用数据再去查询我们的数据库。

4、架构优缺点

优点

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

缺点

带来了缓存一致性,缓存击穿,缓存失效,缓存雪崩等问题;

服务器成本需要进一步增加;

业务体量支持变大后,数据不断增加,数据库单库太大,单个表体量也太大,数据查询会很慢,导致数据库再度成为系统瓶颈。

5、相关软件

Memcached、Redis 等缓存软件

垂直分库架构

1、简介

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

2、出现原因

在冷热分离架构上,单机的写库会逐渐会达到性能瓶颈,需要拆分数据库,数据表的数据量太大,处理压力太大,需要进行分表,为降低运维难度,业界逐渐研发了分布式数据库,库表天然支持分布式

3、架构工作原理

 数据库是由多个主从库或者存储集群构成,支持分布式大规模并行处理

4、优缺点

优点

数据库吞吐量大幅提升,不再是瓶颈

缺点

跨库join、分布式事务等问题,这些需要对应的去进行解决,目前的mpp都有对应的解决方案;

数据库和缓存结合目前能够抗住海量的请求,但是应用的代码整体耦合在一起,修改一行代码需要整体重新发布

5、相关软件

分布式数据库:Greenplum、TiDB、Postgresql XC、HAWQ 等,商用的如南大通用的 GBase、 睿帆科技的雪球DB、华为的 LibrA 等。

微服务架构

1、简介

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

2、出现原因

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

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

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

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

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

3、架构工作原理

一个商城应用拆分成了多个微服务,如用户服务、交易服务和商品服务,相互之间协作支持整个商城的应用。

4、优缺点

优点

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

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

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

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

缺点

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

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

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

5、相关软件

Spring Cloud、Dubbo

容器编排架构

1、简介

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

2、出现原因

微服务拆分细,服务多部署工作量大,而且配置复杂,容易出错;

微服务数量多扩缩容麻烦,而且容易出错,每次缩容后再扩容又需要重新配置服务对应的环境参数信息;

微服务之间运行环境可能冲突,需要更多的资源来进行部署或者通过修改配置来解决冲突

3、架构工作原理

一个商城应用拆分成了多个微服务,如用户服务、交易服务和商品服务,每一个微服务打包到容器之中,相互协作来完成系统功能,通过容器编排工具完成部署运维

4、优缺点

优点

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

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

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

缺点

技术栈变多,对研发团队要求高;

机器还是需要公司自身来管理,在非大促的时候,还是需要闲置着大量的机器资源来应对大促,机器自身成本和运维成本都极高,资源利用率低,可以通过购买云厂商服务器解决。

5、相关软件

Docker、K8S

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

双十一网络电视盒子哪个品牌好?内行分享权威电视盒子排行榜

双十一大促正如火如荼进行中,因为我从事的工作和电视盒子有关,身边的朋友们在选购电视盒子时不知道从何下手就会问我的意见,本期将盘点业内公认的电视盒子排行榜,给双十一想买电视盒子的朋友们做个参考。 排行一:泰捷W…

解决 Django 开发中的环境配置问题:Windows 系统下的实战指南20231113

简介: 在本文中,我想分享一下我最近在 Windows 环境下进行 Django 开发时遇到的一系列环境配置问题,以及我是如何一步步解决这些问题的。我的目标是为那些可能遇到类似困难的 Django 开发者提供一些指导和帮助。 问题描述: 最近…

美颜与性能的平衡:视频直播美颜SDK集成与性能优化指南

目前美颜SDK所遇到的挑战是如何在追求美颜效果的同时保持系统性能的稳定。本文将深入探讨视频直播美颜SDK的集成以及性能优化的关键指南,以帮助开发者找到合适的平衡点。 一、美颜SDK的集成 1.选择适用于直播的美颜SDK 在美颜SDK的众多选择中,要考虑…

文献分享 C-C 模体化学因子受体2的抑制通过恢复免疫细胞格局减轻肝纤维化

C-C 模体化学因子受体2的抑制通过恢复免疫细胞格局减轻肝纤维化 C-C motif chemokine receptor 2 inhibition reduces liver fibrosis by restoring the immune cell landscape 发表于 International Journal of Biological Sciences IF 9.2 摘要 在肝脏中,细胞外…

【从零开始学习Linux】一文带你了解Shell外壳及用户权限(二)

🚩纸上得来终觉浅, 绝知此事要躬行。 🌟主页:June-Frost 🚀专栏:Linux入门 🔭【从零开始学习Linux】系列均属于Linux入门,主要包含Linux操作系统下的指令、操作、权限以及开发工具&a…

抖音自动发评论之论人工智能AI的应用和发展趋势

人工智能(Artificial Intelligence,AI)是目前国际上热门的科技话题之一。它是计算机科学中的一个分支,旨在创造能够智能地工作、学习、感知、理解和决策的机器。人工智能的应用范围十分广泛,包括语音识别、自然语言处理…

冰点还原精灵_Deep Freeze Standard v8.60.020.5592中文版

eep Freeze(又被成为冰点还原精灵)是Faronics公司出品的一款简单易用的系统还原软件,使用能够帮助用户轻松将系统还原到安装该款软件之后状态,避免因为病毒的入侵以及人为的对系统无意或无意的破坏,让你的系统始终完美…

【LeetCode】每日一题 2023_11_12 每日一题 Range 模块(线段树)

文章目录 刷题前唠嗑题目:Range 模块题目描述代码与解题思路 刷题前唠嗑 LeetCode? 启动!!! 嗯?怎么是 hard,好长,可恶,看不懂,怎么办 题目:Range 模块 题…

全国平均风速数据,有图有数据!

全国平均风速数据是一份重要的气象数据,它反映了全国各地的风速情况,对于气象预测、能源开发、环境保护等方面都有重要的意义。 本文将详细介绍全国平均风速数据的来源、统计方法和应用场景,并分析其变化趋势和影响因素。 数据基本信息&#…

【MySQL】MySQL中的锁

全局锁 全局锁是对整个数据库实例加锁,整个库处于只读状态。 flush tables with read lock 适用场景 全局锁适用于做全库逻辑备份,但是整个库处于只读状态,在备份期间,所有的更新操作、DDL将会被阻塞,会对业务产生影…

记一次前后端分离项目跨域导致的set-cookie失效问题解决方案

起因公司项目使用了springsecurity的基础登录进行认证授权,而基础登录使用的是sessioncookie的形式,项目前后端分离,前端调接口的时候就会出现,登陆后点击其他页面,提示未登录跳转登录页的情况,排查了一下问…

图论14-最短路径-Dijkstra算法+Bellman-Ford算法+Floyed算法

文章目录 0 代码仓库1 Dijkstra算法2 Dijkstra算法的实现2.1 设置距离数组2.2 找到当前路径的最小值 curdis,及对应的该顶点cur2.3 更新权重2.4 其他接口2.4.1 判断某个顶点的连通性2.4.2 求源点s到某个顶点的最短路径 3使用优先队列优化-Dijkstra算法3.1 设计内部类…

CPD:使用restAPI和cpd-cli命令创建DMC实例

环境 Red Hat Enterprise Linux release 8.6 (Ootpa)OCP 4.12.22IBM CP4D 4.8.0Data Management Console 3.1.12 (DMC for CPD 4.8.0) 注:使用了fyre VM。 创建DMC实例 准备 首先export环境变量: . ./stg_env.sh把 cpd-cli 放到PATH里。编辑 ~/.ba…

从GPT定制到Turbo升级再到Assistants API,未来AI世界,你准备好了吗?

引言 在OpenAI DevDay发布会上,OpenAI再次震撼整个人工智能行业,为AI领域带来了重大的更新。CEO Sam Altman宣布推出了定制版本的ChatGPT,这意味着用户现在可以根据自己的需求打造个性化的GPT,并分享至GPT Store。这一消息对于受A…

iText v1.8.1(OCR截图文字识别工具)

iText for mac是一款OCR(光学字符识别)工具,可以从图片中识别文字,适用于从扫描版的PDF等任意图片中提取文字。 使用iText,您可以方便快捷地从图片中摘抄和批注文字,满足您的各种需求。其自带截图功能&…

基于果蝇算法优化概率神经网络PNN的分类预测 - 附代码

基于果蝇算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于果蝇算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于果蝇优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络的光滑…

upload-labs关卡5(点和空格绕过)通关思路

文章目录 前言一、回顾上一关知识点二、靶场第五关通关思路1.看源代码2.点和空格绕过3、验证上传 总结 前言 此文章只用于学习和反思巩固文件上传漏洞知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的网站做渗透测试&#xff0…

Unity中雾效的实现方法二

文章目录 前言一、声明雾效所需要的内置变体二、在 v2f 中声明顶点传入片段中的雾效插值器三、 在顶点着色器中计算雾效采样四、在片元着色器中进行雾效颜色混合在这里插入图片描述 五、最终效果 前言 Unity中雾效的实现方法二,使用 Unity 自带的方法实现&#xff…

JVM及其垃圾回收机制(GC)

目录 一.JVM内存区域划分 二.JVM类加载机制 类加载过程 类加载的时机 双亲委派模型 三.JVM垃圾回收机制(GC) GC工作过程 1.找到垃圾/判断垃圾 (1)引用计数【python/PHP】 (2)可达性分析【Java】 2.对象释放…

shell 语法介绍

大家好,我是蓝胖子,在日常开发中或多或少都会接触到shell脚本,可以说会shell脚本是一位后端开发的基本功,今天我将会花上一篇文章总结下常见的shell的语法,学完本篇,相信简单的shell脚本就能够看懂了&#…