架构演化

架构演化:系统也要“与时俱进“ 本文探讨了系统架构演化的概念、类型与策略。架构演化指系统架构随业务和技术发展而不断调整优化,包含渐进式、激进式和混合式三种类型。常见场景包括单体到微服务、集中式到分布式、本地到云端等转变。文章介绍了绞杀者模式、抽象切换和并行运行等演化策略,并分析了业务中断、数据一致性等技术风险。通过Netflix和Amazon的案例,阐述了架构演化的渐进性、可回滚、可观测等原则,以及避免过度设计和永恒重构等反模式。最后强调架构演化的核心是持续演进以适应变化,并提出了思考架构重构时机和挑战的问题。 阅读详情

架构演化

  • 单体架构

    一个开源的容器,直接用JSP/Servlet或者开源的Spring等一些开源框架来构建我们的应用,然后选择一个数据库来存储数据,两者通过JDBC技术连接和操作。

在这里插入图片描述

  • 数据库与应用分离

    当网站的访问量不断增大的时候,服务器的负载也就持续升高,造成访问缓慢,或者直接宕机,这时候就需要做一些改变,这时候,最容易也是改变最小的方案就是,数据库和应用分离。
    在这里插入图片描述

  • 应用集群

    经过上面的应用和数据分离后,以后缓解了一下应用服务器的压力,但当访问量继续不断增大,应用服务器压力还是会越来越大。接下来就是要对引用服务器进行集群处理。当增加多台应用服务器的时候,用户对与服务器的选择就是一个问题,这边有2种解决方案:

    • DNS

在这里插入图片描述

  • 负载均衡

    在这里插入图片描述
    对于这2种方式,一般选择后者。

当架构从单体到集群的时候,就会遇到多台服务器一个session怎么共享的问题。

用户使用网站服务的时候,基本上需要浏览器与WEB服务器的多次交互,HTTP协议本事没有状态的,需要基于HTTP协议支持会话状态(Session State)机制。这种机制可以使Web服务器从多次单独的HTTP请求中可以识别这个请求来自于哪一个会话。(这个会话的作用就是可以让Web服务器识别HTTP请求使用户A发起的还是用户B发起的)具体的实现方式:在用户A第一次用浏览器和Web服务器进行交互的时候,Web会分配一个会话标示(SessionId),然后浏览器把这个标示存在Cookie中,然后再接下来用户A发出的所有请求中,浏览器会自动带上这个SessionId来请求Web服务器,Web服务器通过识别会话标示来确实这个请求是用户A发出的。如果浏览器禁用cookie的情况,一般浏览器会把这个标示放到URL参数中。

​ 当用户A访问我们的应用时,因为我们的应用服务器时集群,通过负载均衡把用户A的第一次请求转发到应用1上。应用1返回给用户A一个会话标示a。当下次用户A再次请求的时候,正常情况负载均衡又把用户A的转发调度到应用2上了,而这时候应用2识别不了会话标示a,也就识别不了用户A,通常表现为用户A需要重新登陆。所以当架构到集群的时候,需要解决Session共享问题。

解决方法:

  • Session Sticky

    负载均衡根据每一次的请求的会话来进行转发。就是用户A始终转发到应用1上。

    问题:

    • 如果集群中的一台服务器宕机,那这个服务器上的用户数据就会丢失,如果这些数据包含登陆数据,就会导致这些用户重新登陆
    • 会话标示是应用层的信息,那么负载均衡如果要将同一个会话的请求保存到同一个服务器上,就需要进行会话解析,这个开销大
    • 负载均衡变成了一个有状态的节点,和无状态的节点相比,内存开销大,容灾方面更麻烦
  • Session Replication

    对于服务器上的会话进行同步,即集群中的应用服务器相互之间同步自己的会话数据。

    问题:

    • 同步Session 数据会造成网络开销,只要Session有变化,就需要同步所有的数据,如果集群数量大,同步带来的网络宽带开销就会越来越大。
    • 每一台服务器都要保存所有的Session数据,如果用户量大的话,每台服务器Session数据占用比较严重。
  • Session 集中存储

    问题:

    • 读写Session数据引入了网络操作,这相对于本级读取增加了时延和不稳定性。但正常通信都发生在内网,影响小。
    • 如果集中Session的机器或者集群有问题,会影响应用

    对比上面3种,最终用的比较多的是第三种方式。

  • 数据读写压力大,读写分离

    经过上述应用的集群,解决应用的负载,下面会出现问题就是数据库方面,随着访问量和数据量都在增长,数据库的压力也随之变大,这个时候就可以考虑读写分离(另类的集群),通过增加一个读库,来分担数据库的读写压力。

在这里插入图片描述

  • 缓存机制

    根据28定律,80%的时候我只访问20%数据。所以为了加快对于读取速度,我们加入缓存机制,把热数据放入缓存中,因为缓存读取速度要大大快于数据库的读取的速度。
    在这里插入图片描述

  • 分布式存储系统

    弥补关系型数据库的不足,引入分布式存储系统,例如:分布式文件系统,分布式key-value系统,分布式数据库。

    在这里插入图片描述

  • 垂直拆分/水平拆分

    对着业务的增加,读写分离也慢慢遇到的瓶颈,这个时候就有垂直拆分/水平拆分两种方式来进一步缓解压力

    • 垂直拆分

      就是把不同的业务的数据拆分到不同的数据库中,例如电子商务中,商品,用户,交易就可以拆分开。

      这种拆分在程序上就需要配置多个数据源,同时还需要考虑业务的事务处理。

    • 水平拆分

      就是把一个表的数据拆到2个数据库中。一般是是某一个业务的数据表的数据量或者更新量达到单个数据库的瓶颈的时候,会把一个表的数据拆到2个数据库。

  • 应用拆分

    随着读写分离,分布式存储,数据垂直拆分,数据水平拆分的引入,数据方面的问题基本上可以解决。对着业务的增长,应用的功能也越来越多,,应用也越来越大。这时候就可以考虑把应用拆分,拆分几个模块,几个模块直接通过RPC来链接(Dubbo/Spring Cloud)
    在这里插入图片描述

​

vue2/3 - [超详细] 实现企业微信扫码登录完整流程及代码,vue项目接入企业微信扫码登录功能教程,支持新跳页显示二维码或div容器里内嵌登录二维码(详细代码注释,一键复制开箱即用) vue企业微信扫码登录,vue网页网站企业微信扫码登录教程,vue如何实现企业微信扫码登录功能,vue详细企业微信扫码登录功能实现,vue2实现企业微信扫码登录,前端vue企业微信扫码登录教程,vue pc电脑端企业微信扫码登录详细教程,vue项目中怎么做企业微信扫码注册登录,vue实现网站接入企业微信扫码登录,vue2做企业微信扫码登录的优质文章教程,vue网站对接企业微信扫码登录,vue企业微信扫码登录如何新开一页全屏显示登录二维码,vue企业微信登录二维码 内嵌在div容器里/跳页显示登录二维码,vu 阅读详情

相关推荐

深入解读ATPG Pattern类型:除了Basic Scan,Clock PO和RAM Sequential模式怎么用?

本文深入解析ATPG高级Pattern类型,包括Clock PO和RAM Sequential模式的应用策略。通过Mentor DFT工具链中的Tessent平台,详细介绍了这些模式的工作原理、配置命令及实战案例,帮助提升芯片测试的故障覆盖率和效率。特别适用于处理时钟域交叉和嵌入式存储器的复杂电路测试需求。

weixin_27697385的博客 486

架构师之路---架构的演变详解

EAI 是将基于异构平台下的业务应用系统集成在一起的一种技术,是解决各个系统之间的互联、互相传输数据的一种解决方案。那为什么要出现这种解决方案?这主要是企业在发展过程中,出现了各种各样的应用系统比如ERP、PLM、财物系统、CRM等等,这些系统都是相互独立的,相互无法互通互联,形成 “信息孤岛”,企业无法实现对整体业务运作和流程管理的全面掌控。而 EAI 可以通过中间件作为粘合剂来连接企业内外各种业务相关的异构系统、应用以及数据源,从而满足企业内部应用系统之间信息共享的需要。

菠萝吹雪爱Java的博客 2459

大模型训练方法全面解析:SFT、RFT、TRPO、DPO、PPO、GRPO、RLH、RLHF技术深度剖析

大模型训练方法全面解析 本文系统介绍了当前主流的大模型训练和对齐技术,包括监督微调(SFT)、拒绝采样微调(RFT)、信任域策略优化(TRPO)、直接偏好优化(DPO)、近端策略优化(PPO)等。这些方法各有特点:SFT简单高效但数据依赖性强;RFT通过质量筛选提升输出质量;TRPO训练稳定但计算复杂;PPO是RLHF核心算法,平衡探索与利用。文章详细分析了各方法的实现原理、优势劣势及适用场景,为开发者选择合适的大模型训练策略提供参考。

2794

架构演变过程

架构演变过程 单体架构 、垂直应用架构、分布式架构、SOA、微服务架构、ServiceMesh

杨宇昌的博客 2941

实战Nocobase插件开发:如何用yarn pm命令快速创建和测试API接口插件

本文详细介绍了如何使用Nocobase插件开发工具快速创建和测试API接口插件,涵盖从环境配置、插件骨架生成到数据模型定义和接口实现的完整流程。通过yarn pm命令简化开发步骤,帮助开发者高效构建支持CRUD的API插件,适用于低代码平台开发场景。

weixin_29313239的博客 456

ASP.NET MVC5 C# Entity Framework 连接 Oracle 数据库

ASP.NET MVC5 C# Entity Framework 连接 Oracle 数据库创建数据库安装 Entity Framework配置数据库连接字符串添加实体模型类添加数据库上下文类添加控制器类运行测试 创建数据库 创建【全局数据库名】为 demodb 的Oracle数据库,用 SYSTEM 用户连接成功后创建【用户名】为 DJIANG 的用户,并授予该用户 DBA 角色 安装 Enti...

idjiang的博客 2537

一:架构演变过程

这里写目录标题单体架构单体集群架构分布式集群架构微服务架构体系(Dubbo、SpringCloud) 单体架构 单体架构存在的问题: 1、并发量的问题 2、所有的业务共享资源,一旦某个业务出现问题,可能会连带其他的业务不可用 单体集群架构 集群的问题: 1、可以局部的解决并发量的问题,但是并不完美 2、资源隔离的问题仍然存在 分布式集群架构 优势: 1、按照模块进行拆分,分布到不同的机器上,处理不同的业务,这样如果某个业务有问题,不会影响其他业务的正常工作。 2、可以很灵活的根据业务的并发大

qq_44949002的博客 2017

锂电池剩余使用寿命预测(RUL) | 基于Stacked-LSTM-Autoencoder的锂电池寿命多变量多步预测(Tensorflow)

锂电池剩余使用寿命预测(RUL) | 基于Stacked-LSTM-Autoencoder的锂电池寿命多变量多步预测(Tensorflow)

前程算法屋的博客 851

系统架构设计师 10:软件架构的演化和维护

冒险越来越深入了。

拉里小猪的博客 2001

多角度模板匹配的模板创建技巧

基于形状的模板匹配多角度创建技巧

manuoo的专栏 3402

AUTOSAR模式管理-EcuM多核处理及其他概念

因此,EcuM不请求状态。因此,BswM必须确保,例如,在调用EcuM_GoHalt或EcuM_GoPoll之前,必须将关机目标从其默认值更改为ECUM_STATE_SLEEP。对于ECU的关闭,BswM(位于主EcuM的同一个分区中)最终调用主核上的GoOff,该GoOff将请求分发给所有的从核。在ECU Manager模块的早期版本中,睡眠目标被特殊处理,因为在ECU中实现的睡眠模式取决于ECU的功能。在使用了外部的SBC控制相关的MCU的下电的时候,在OFF阶段最后调用SBC进入到Sleep的指令。

m0_49148264的博客 1340

架构的演变

基本概念 在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍。 1.什么是分布式? 系统中的多个模块在不同服务器上部署,即可称为分布式系统,如Tomcat和数据库分别部署在不同的服务器上,或两个相同功能的Tomcat分别部署在不同服务器上。 2.什么是高可用? 系统中部分节点失效时,其他节点能够接替它继续提供服务,则可认为系统具有高可用性。 3.什么是集群? 一个特定领域的软件部署在多台服务器上并作为一个整体提供一类服务,这个整体称为集群。 如Zookeeper中的

LXY的博客 782

大型网站架构演化

网站技术是为业务而存在的,除此毫无意义。在技术选型和架构设计中,脱离网站业务发展的实际,一味追求时髦的新技术,可能会将网站技术发展引入崎岖小道,架构之路越走越难。

贾欣晓的博客 1407

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【软考系统架构设计师】九、架构演化与维护

演化的重要性:软件架构并非一成不变,需随需求变化、技术迭代、环境迁移持续调整,否则会导致系统性能下降、扩展性不足、维护成本激增,甚至被淘汰。演化与定义的关系:架构定义是演化的基础,明确系统核心构件与连接件;演化是定义的动态延伸,在保持核心架构稳定性的同时,适配内外部变化,二者相互依存、动态平衡。核心目标:在不破坏系统核心功能与稳定性的前提下,提升系统适应性(适配新需求)、性能(优化响应速度)、可维护性(降低修改成本),延长系统生命周期。架构演化与维护是软考系统架构设计师的核心实践模块。

weixin_44762713的博客 1194

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

大型网站架构演化总结

大型网站架构的演化是一个持续的过程,每个阶段都有其独特的挑战和优势。随着用户需求的不断变化和技术的不断进步,企业需要灵活调整架构,以提高系统的性能、可维护性和可扩展性。同时,架构的选择也需结合具体的业务场景、团队能力和技术栈来进行优化。【分析不同维度设计的技术】在软件架构设计中,分析不同维度的设计技术有助于选择适合特定需求和场景的解决方案。以下是从多个维度分析的技术,包括架构风格、技术栈、开发流程、部署方式和监控/治理等方面。1. 架构风格单体架构:所有功能模块在同一代码库中,适合小型应用或团队。

qq_24442273的博客 928

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

涌现与进化设计Back-End-Developer-Interview-Questions:架构演化模式

在软件开发的世界中,我们常常面临一个核心矛盾:**稳定性与适应性**的对立。传统的瀑布式开发试图通过前期详尽的设计来确保稳定性,但在快速变化的需求和技术环境中,这种刚性设计往往成为创新的桎梏。 > "架构不是一次性的设计决策,而是随着系统演进不断调整的活体结构。" Back-End-Developer-Interview-Questions项目本身就是一个典型的演化式架构案例。从个人笔记到开源...

gitblog_00051的博客 971

Java商城 架构演化

本系列文章主要是针对Java商城相关架构演化的介绍,不讲解具体业务、技术等。 最近公司要搞商城,让我多方咨询,最后看了很多,要不就是代码、表字段注释不全,要不就是bug多,要么就是文档缺少,最后决定自己开发一套商城。 下面是开发的一些心得体会,权且记录下来,给自己做个记录把。 之前一直都是在从事电商相关和互联网金融开发,处理过亿级数据量,所以被目前这家公司看重。 由于Java是开源的,最近几年Ha...

MrYin的博客 2230

8. 大型网站架构演化

1.1 大型网站软件系统的特点 1.2 大型网站架构演化发展历程 1.3 大型网站架构演化的价值 1.4 网站架构设计误区 1.5 小结

enlyhua的专栏 448

《AcFun 的视频架构演化实践》读后感

《AcFun 的视频架构演化实践》读后感 《AcFun 的视频架构演化实践》从视频的核心技术栈、视频生产、视频消费、AcFun 的选择介绍了AcFun 的视频架构演化。 1、视频的核心技术栈 AcFun 弹幕视频网(acfun.tv)是中国最早上线的弹幕视频网站,也是最具影响力的弹幕视频平台。“AcFun”原取意于“AnimeComic Fun”。自2007年6月6日成立以来,AcFun 历...

weixin_34019144的博客 185

【redis】Redis 架构演化之路

里面大致说了redis的架构演进。开始学redis架构的时候,总是感觉架构好多,迷迷糊糊的,但是你知道Redis 架构演化之路之后,就明白了前因后果,这样学习更加深入以及搞笑。这篇文章我想和你聊一聊 Redis 的架构演化之路。现如今 Redis 变得越来越流行,几乎在很多项目中都要被用到,不知道你在使用 Redis 时,有没有思考过,Redis 到底是如何稳定、高性能地提供服务的?如果你对 Redis 已经有些了解,肯定也听说过。

九师兄 1172

Darwin:Go语言的数据库架构演化库

Darwin:Go语言的数据库架构演化库 项目基础介绍 Darwin 是一个使用 Go 语言编写的数据库架构演化库。它旨在帮助开发者在 Go 应用程序中轻松管理数据库架构的变更和版本控制。作为一个开源项目,Darwin 以 MIT 许可证发布,允许用户自由使用、修改和分享。 主要编程语言 Go 核心功能 Darwin 的核心功能是管理和应用数据库迁移。它支持以下关键特性: 版本控制:Darwin...

gitblog_00660的博客 378

大型网站架构演化历程

摘自《大型网站技术架构》:第一章 大型网站架构演化 一、大型网站系统的特点 高并发,大流量 需要面对高并发用户,大流量访问。Google 日均 PV 35 亿,日 IP 访问数 3 亿;腾讯 QQ 的最大在线用户数 1.4 亿(2011年数据)。 高可用 系统 7 x 24 小时不间断服务。 海量数据 需要存储、管理海量数据,需要使用大量服务器。Facebook 每周上传的照片数量接近 10 亿,百度收录的网页数目有数百亿,Google 有近百万台服务器为全球用户提供服务。 用户分布广泛,网络..

遇见你是我最美丽的意外 4434

企业级应用,如何实现服务化一(项目架构演化)

1.企业级应用架构演化   1.1.架构演化图   1.2.文字描述 #单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本 #垂直应用架构 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率 #分布式服务架构 当垂直应用越来越多,应用之间交互不可避免,...

weixin_30312659的博客 102

《大型网站技术架构》笔记——1. 大型网站架构演化

文章目录前言1.1 大型网站软件系统的特点1.2 大型网站架构演化发展历程1.2.1 初始阶段的网站架构1.2.2 应用服务和数据服务分离1.2.3 使用缓存改善网站性能1.2.4 使用应用服务器集群改善网站的并发处理能力1.2.5 数据库读写分离1.2.6 使用反向代理和 CDN 加速网站响应1.2.7 使用分布式文件系统和分布式数据库系统1.2.8 使用 NoSQL 和搜索引擎1.2.9 业务拆分1.2.10 分布式服务1.3 大型网站架构演化的价值观1.3.1 大型网站架构技术的核心价值是随网站所需灵

bm1998 317

《大型网站技术架构》读书笔记一:大型网站架构演化

一、大型网站架构演化 本篇文章是《大型网站技术架构》的笔记,感兴趣可以阅读该书。 1.1 大型网站系统特点 序号 特点 描述 1 高并发、大流量 需要面对高并发用户、大流量访问 2 高可用 系统7X24 小时不间断服务 3 海量数据 需要存储、管理海量数据,需要使用大量服务器 4 用户分布广泛,网络情况复杂 许多大型互联网都是为全球用户提供服务,用户分布广泛,各地网络千...

uzong 522
上一篇: 配置多种环境配置文件
下一篇: HashMap源码分析(一)
Coder_Qiang
博客等级 码龄10年 33粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coder_Qiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值