系统架构演变

news2024/11/17 13:44:03

1.1系统架构的演变

2008年以后,国内互联网行业飞速发展,我们对软件系统的需求已经不再是过去”能用就行”这种很low的档次了,像抢红包、双十一这样的活动不断逼迫我们去突破软件系统的性能上限,传统的IT企业”能用就行”的开发思想已经不能满足互联网高并发、大流量的性能要求。系统架构走向分布式已经是服务器开发领域解决该问题唯一的出路,然而分布式系统由于天生的复杂度,并不像开发单体应用一样把框架一堆就能搞定,因此各大互联网公司都在投入技术力量研发自己的基础设施。这里面比较有名的如阿里的开源项目dubbo, Netflix开发的一系列服务框架。

1.1.2 单体架构

单体架构也称之为单体系统或者是单体应用。就是一种把系统中所有的功能、模块耦合在一个应用中的架构方式。

存在的问题:

  1. 代码耦合:模块的边界模糊、依赖关系不清晰,整个项目非常复杂,每次修改代码都心惊胆战
  2. 迭代困难:每次功能的变更或bug的修复都会导致重新部署整个应用,随着代码的增多,构建、测试和部署的时间也会增加
  3. 扩展受限:单体应用只能作为一个整体进行扩展,无法根据业务模块的需要进行伸缩
  4. 技术债务:随着时间推移、需求变更和人员更迭,会逐渐形成应用程序的技术债务,并且越积越多不坏不修
  5. 阻碍创新:单体应用往往使用统一的技术平台或方案解决所有的问题,要想引入新技术平台会非常困难

1.1.3 分布式架构

分布式:需要按照功能点把系统拆分,拆分成独立的功能,单独为某一个节点添加服务器,需要系统之间配合才能完成整个业务逻辑。

分布式架构优点:

  1. 不同的团队负责不同的子项目
  2. 可以灵活的进行分布式部署
  3. 可以为某一模块单独加集群

分布式架构缺点:

  1. 模块之间有一些通用的业务逻辑无法共用。

1.1.4 soa架构

SOA:Service Oriented Architecture(面向服务的架构)。也就是把工程拆分成服务层,表现层两个工程。服务层中包含业务逻辑,只需要对外提供服务即可。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现,使用ESB(Enterparise Servce Bus企业服务总线,代表技术:Mule、WSO2)提供表现层和服务层之间的交互。

存在的问题:

  1. 不支持集群、臃肿

1.2 dubbox框架

1.2.1 dubbox简介

Dubbo(读音[ˈdʌbəʊ])是阿里巴巴公司开源的一个基于Java的高性能RPC(Remote Procedure Call)框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。后期阿里巴巴停止了该项目的维护,于是当当网在这之上推出了自己的Dubbox。

1.2.2 dubboX架构

节点角色说明:

Provider: 暴露服务的服务提供方。

Container: 服务运行容器。

Registry: 服务注册与发现的注册中心。

Consumer: 调用远程服务的服务消费方。

Monitor: 统计服务的调用次调和调用时间的监控中心。

调用关系说明:

0. 服务容器负责启动,加载,运行服务提供者。

1. 服务提供者在启动时,向注册中心注册自己提供的服务。

2. 服务消费者在启动时,向注册中心订阅自己所需的服务。

3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

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

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

相关文章

单片机设计_智能蓝牙电子秤(51单片机、HX711AD)

想要更多项目私wo!!! 一、电路设计 智能蓝牙电子称由51单片机、HX711AD称重模块、HC-05蓝牙模块、LCD1602等电路组成硬件部分,然后上传至APP。 二、运行结果 三、部分代码 #include "main.h" #include "HX711.h" #include "uart.h" #include …

【蓝桥杯冲冲冲】[NOIP2000 提高组] 方格取数

蓝桥杯备赛 | 洛谷做题打卡day19 文章目录 蓝桥杯备赛 | 洛谷做题打卡day19[NOIP2000 提高组] 方格取数题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示题解代码我的一些话 [NOIP2000 提高组] 方格取数 题目背景 NOIP 2000 提高组 T4 题目描述 设有 N N…

已解决:安卓,怎么优雅接入科大讯飞语音评测功能?

写在前面: 网上关于讯飞接入的博客都很少,按说讯飞都是业界翘楚,不知为何,很少搜索到精品,一搜就是一个要求开会员的博客,我也是醉了。讯飞提供的文档也是不清晰,我是摸着石头过河,…

MySQL JSON数据类型全解析(JSON datatype and functions)

JSON(JavaScript Object Notation)是一种常见的信息交换格式,其简单易读且非常适合程序处理。MySQL从5.7版本开始支持JSON数据类型,本文对MySQL中JSON数据类型的使用进行一个总结。 目录 一、MySQL中的JSON 1.1 JSON数据格式 1.2 …

最长公共子串的问题(正常方法和矩阵法,动态规划)

题目: 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符…

Windows Qt C++ VTK 绘制三维曲线

Qt 自带数据可视化从文档上看,只能实现三维曲面。 QwtPlot3D在Qt6.6.0上没编译通过。 QCustomPlot 只能搞二维。 VTK~搞起。抄官网demo。 后续需求: 1、对数轴 2、Y轴逆序 3、Z轴值给色带,类似等高线图的色带 期待各位大佬多多指导。…

如何快速搭建实用的爬虫管理平台

目录 一、前言 二、选择合适的爬虫框架 三、搭建数据库 步骤1 步骤2 步骤3 四、搭建Web服务器 步骤1 步骤2 步骤3 步骤4 五、管理爬虫 六、总结 一、前言 爬虫是互联网数据采集的关键工具,但是随着数据量的增加和需求的多样化,手动运行和管…

超越传统,想修哪里就修哪里,SUPIR如何通过文本提示实现智能图像修复

项目简介 通过参数增加使得模型不仅能够修复图像中的错误或损坏,还能根据文本提示进行智能修复。例如根据描述来改变图像中的特定细节。这样的处理方式提升了图像修复的质量和智能度,使得模型能够更准确、更灵活地恢复和改进图像。 SUPIR的主要功能图像…

详解矩阵的LDU分解

目录 一. 矩阵分解 二. 解方程 三. 例题说明 四. 矩阵的LDU分解 五. 矩阵三角分解的唯一性 一. 矩阵分解 其实我们可以把一个线性系统(Linear System)看成两个三角系统(Triangular Systems),本文章将解释为什么可…

QT实现USB摄像头接入显示

一、UVC协议简介 UVC全称是USB Video Class(USB视频类),是一种标准化的USB视频设备通信协议,它定义了摄像头与主机之间的数据传输协议和格式。 UVC协议的出现,解决了摄像头厂商之间互不兼容,以及摄像头应…

2.Linux的例行性工 作(计划任务)

目录 1. 场景: 2. 单一执行的例行性任务--at(一次性) 2.1. 安装 2.2. at命令详解 2.2.1. 格式 2.2.2. 参数 2.2.3. 时间格式 2.2.4. 实验1 2.2.5. 实验2 2.2.6. 注意 2.2.7. at命令执行过程分析 2.2.8. 实验3 3. 循环执行的例行…

Elasticsearch:聊天机器人、人工智能和人力资源:电信公司和企业组织的成功组合

作者:来自 Elastic Jrgen Obermann, Piotr Kobziakowski 让我们来谈谈大型企业人力资源领域中一些很酷且改变游戏规则的东西:生成式 AI 和 Elastic Stack 的绝佳组合。 现在,想象一下大型电信公司的典型人力资源部门 — 他们正在处理一百万件…

mac/macos上编译electron源码

官方教程:Build Instructions | Electron 准备工作这里不写了,参考官方文档,还有上一篇windows编译electron electron源码下载及编译-CSDN博客 差不多步骤,直接来 网络记得使用魔法 下载编译步骤 0. 选择目录很重要&#xff0…

Emergent Abilities of Large Language Models 机翻mark

摘要 证明通过扩大语言模型可以可靠地提高性能和样本效率在广泛的下游任务。相反,本文讨论了我们称之为大型语言模型的新兴能力的一种不可预测的现象。我们认为如果一个能力不存在于较小的模型中,但在较大的模型中存在,则该能力就是新兴的。…

InforSuiteAS中创中间件windows环境部署

版本:InforSuiteAS_StE_V10.0.5.2.1 环境要求:Java环境 DK1.8版本, 内存2GB或以上 , 硬盘空间 10GB或以上, 监视器 图形界面安装需要256色以上,字符界面安装没有色彩要求 ,浏览器 Microsoft …

el-tree基础的树形节点设置节点不能选中高亮出来,对已经选中的节点设置disabled,对当前节点刚选中后设置禁用disabled

一、 el-tree基础的树形节点设置节点不能选中高亮出来 需求 我们使用element-ui或者element-plus的时候会遇到树形控件的使用,我们使用树形控件会限制有的节点不让选中和高亮出来,这个时候需要我们做限制。在实现中我们发现了element-ui和element-plus…

SQL注入实战:绕过操作

一:绕过操作 1、常用绕过方式 大小写绕过: 通过修改关键字内字母大小写来绕过过滤措施。例如:AnD11Select* from ** oRdEr by 1 双写绕过: 使用双写绕过。因为在过滤过程中只进行了一次替换。就是将关键字替换为对应的空。 比如 union在…

使用Opencv-python库读取图像、本地视频和摄像头实时数据

使用Opencv-python库读取图像、本地视频和摄像头实时数据 Python中使用OpenCV读取图像、本地视频和摄像头数据很简单, 首先需要安装Python,然后安装Opencv-python库 pip install opencv-python然后在PyCharm或者VScode等IDE中输入对应的Python代码 一…

VS执行程序的时候运行上一次的程序。

这个问题我找了很久,最后自己随便按一下,成功了,分享给大家: 上面的代码是我测试的时候用的,随便写个c或者c代码就行,因为这个时候,我的代码已经更改了,它依然执行上一次的程序。我…

2024.1.27每日一题

LeetCode 最大合金数 2861. 最大合金数 - 力扣(LeetCode) 题目描述 假设你是一家合金制造公司的老板,你的公司使用多种金属来制造合金。现在共有 n 种不同类型的金属可以使用,并且你可以使用 k 台机器来制造合金。每台机器都需…