初涉项目架构

news2024/9/23 21:18:52

初涉项目架构

  • 了解传统项目与互联网项目的区别

    • 传统项目指OA、HR、CRM这种,互联网项目则是常见的app

    • 首先是受众(服务对象)不同,传统项目是面向公司、学校等群体,互联网项目则是面向全体网民

      1. 两种对象数量不同,差异较大
      2. 两种对象对产品的忍耐力不一样
  • 互联网项目特点:

    • 用户多、 流量大,并发大、 海量数据
    • 易受攻击
    • 功能繁杂、 变更快
  • 大型互联网项目的架构目标;

    1. 高性能
      • 响应快:发出请求到收到响应数据的时间
      • 并发数:系统同时能处理的请求数量
        • 并发连接数:发起请求并建立连接。每秒服务器连接的总TCP数量
        • 请求数:QPS(Query Per Second),一次TCP连接可能产生多次请求
        • 并发用户数:单位时间内有多少用户
      • 吞吐量:单位时间内系统能处理的请求数
        • QPS
        • TPS(Transactioins Per Second)
          • 一次页面的访问属于一个TPS
          • 一次页面的请求,可能产生多次对服务器的请求
          • 所以结论: QPS >= 并发连接数 >= TPS
    2. 高可用: 网站服务一直可以正常访问
    3. 可伸缩:通过硬件 / 增加减少,提高 / 降低处理能力
    4. 高可扩展:系统间耦合低
    5. 安全性:网站安全访问,数据加密,安全存储
  • 分布式系统(满足上述目标);

    • 集群和分布式:

      • 集群:很多’‘人’'做一样的事
        • 一个业务模块,在多台服务器上都有部署
      • 分布式:很多’‘人’'做不一样的事
        • 一个大的业务系统,拆分为小的业务模块,分别部署在多台服务器
      • 在这里插入图片描述

    • 架构演进:

      单体架构 —> 垂直架构 —> 分布式架构 —> SOA架构 —> 微服务架构

      1. 单体架构:
        • 优点:
          • 简单:开发部署方便。小型项目的首选
        • 缺点一大堆:
          • 启动慢、 可靠性查、拓展性差、性能低
      2. 垂直架构:
        • 垂直架构是指将大的单体架构中的多个功能模块拆分成多个独立项目,形成多个单体架构
        • 拆分后,对于之前的一个大的单体架构的存在问题就有所减轻
        • 但垂直架构不够先进的地方就在于,拆分后的每个项目中存在很多重复的模块,问题出于它不能远程调用
      3. 分布式架构:
        • 分布式架构就是在垂直架构基础上,将那些重复的模块抽取出来,作为独立的服务,供其他调用者消费,以实现服务的共享和重用
        • RPC:Remote Procedure Call(远程过程调用) 有非常多的协议和技术来实现RPC的过程。比如:HTTP REST风格、 Java RMI规范、 WebServiece SOAP协议、 Hession等
        • 缺点:
          • 服务提供方一旦产生变更(如 地址等),所有消费者都需要变更
      4. SOA架构:
        • SOA(Service - Oriented Architecture面向服务的架构)是一个组件模型,ta将应用程序的不同功能单元(服务)进行拆分,并在这些服务之间定义良好的接口和契约联系起来
        • 提供了ESB(Enterprise Service Bus)企业服务总线,相当于一个服务中介。主要是提供了服务之间的交互和治理。ESB包含了负载均衡、流量控制、加密处理、服务监控、异常处理、监控告急等等
        • 上面分布式的缺点就得以改善了,消费者不用变更了,让那个中介去变更
      5. 微服务架构:
        • 微服务架构是在SOA上做的升华,微服务架构强调”业务需要彻底的组件化和服务化“,原有的单个业务系统拆分成多个独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。
        • 微服务架构 = 80% SOA服务架构思想 + 100% 组件化架构思想 + 80% 领域建模思想
        • 特点:
          • 服务实现组件化:开发者可以自由选择开发技术
          • 服务之间交互一般使用REST API
          • 去中心化:每个微服务有自己的数据库
        • 服务实现组件化:开发者可以自由选择开发技术
        • 服务之间交互一般使用REST API
        • 去中心化:每个微服务有自己的数据库
        • 方便部署、测试、运维

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

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

相关文章

使用Java连接星火认知大模型:一个实际案例解析

引言: 随着人工智能技术的快速发展,认知大模型如星火在自然语言处理、语音识别等领域发挥着越来越重要的作用。本文将通过一个实际的Java代码示例,详细讲解如何使用Java连接星火认知大模型,并处理其响应。 1.导入依赖&#xff1…

Github 2024-07-13 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-07-13统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目3TypeScript项目2Go项目2Java项目2Rust项目1非开发语言项目1Solidity项目1从零开始构建你喜爱的技术 创建周期:2156 天Star数量:25…

如何在 Android Studio 中导出并在 IntelliJ IDEA 中查看应用的 SQLite 数据库

在 Android 应用开发过程中,调试和查看应用内的数据库内容是常见的需求。本文将介绍如何使用 Android Studio 导出应用的 SQLite 数据库,并在 IntelliJ IDEA 中查看该数据库。 步骤一:在设备上运行您的应用 首先,确保您的应用已…

T113-i系统启动速度优化方案

背景: 硬件:T113-i + emmc 软件:uboot2018 + linux5.4 + QT应用 分支:longan 问题: 全志T113-i的官方系统软件编译出的固件,开机启动时间10多秒,启动时间太长,远远超过行业内linux系统的开机速度,需要进一步优化。 T113-i 优化后启动速度实测数据 启动阶段启动时间(…

本地部署 EVE: Unveiling Encoder-Free Vision-Language Models

本地部署 EVE: Unveiling Encoder-Free Vision-Language Models 0. 引言1. 快速开始2. 运行 Demo 0. 引言 EVE (Encoder-free Vision-language model) 是一种创新的多模态 AI 模型,主要特点是去除了传统视觉语言模型中的视觉编码器。 核心创新 架构创新&#xff…

装饰模式(大话设计模式)C/C++版本

装饰模式 需求分析: 1. 选择服饰 > 服饰类 2. 输出结果 对象是人 > 人类将Person类中一大堆服饰功能抽象出服饰类,然后通过Person类聚合服饰属性,通过Set行为来设置服饰属性,最后达到灵活打扮的效果 装饰模式 动态地给一个…

如何查找电脑的MAC地址

一. 什么是mac地址? mac地址本质上帮助我们连接到我们遇到的大多数本地网络。每个网络适配器通常由网络接口​​控制器(NIC) 制造商分配一个唯一的 mac 地址。 二. 如何查找mac地址 1.点击网络和Internet设置 2.点击WLAN点击硬件属性 3.即可查看mac地址

css基础(1)

CSS CCS Syntax CSS 规则由选择器和声明块组成。 CSS选择器 CSS选择器用于查找想要设置样式的HTML元素 一般选择器分为五类 Simple selectors (select elements based on name, id, class) 简单选择器(根据名称、id、类选择元素) //页面上的所有 …

【漏洞复现】某赛通 电子文档安全管理系统 多个接口存在远程命令执行漏洞

免责声明: 本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测…

WPF学习(3) -- 控件模板

一、操作过程 二、代码 <Window x:Class"学习.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expressio…

Linux系统编程-线程同步详解

线程同步是指多个线程协调工作&#xff0c;以便在共享资源的访问和操作过程中保持数据一致性和正确性。在多线程环境中&#xff0c;线程是并发执行的&#xff0c;因此如果多个线程同时访问和修改共享资源&#xff0c;可能会导致数据不一致、竞态条件&#xff08;race condition…

Python3.6.6 OpenCV 将视频中人物标记或者打马赛克或加图片并保存为不同格式

1、轻松识别视频人物并做出标记 需安装face_recongnition与dlib&#xff0c;过程有点困难&#xff0c;还请网上查找方法 import face_recognition import cv2 #镜像源 -i https://pypi.mirrors.ustc.edu.cn/simple # 加载视频 video_file E:\\videos\\1.mp4 video_capture …

taocms 3.0.1 本地文件泄露漏洞(CVE-2021-44983)

前言 CVE-2021-44983 是一个影响 taoCMS 3.0.1 的远程代码执行&#xff08;RCE&#xff09;漏洞。该漏洞允许攻击者通过上传恶意文件并在服务器上执行任意代码来利用这一安全缺陷。 漏洞描述 taoCMS 是一个内容管理系统&#xff08;CMS&#xff09;&#xff0c;用于创建和管…

IDEA中Git常用操作及Git存储原理

Git简介与使用 Intro Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git是一款分布式版本控制系统&#xff08;VSC&#xff09;&#xff0c;是团队合作开发…

树莓派pico入坑笔记,esp01/01s使用

目录 关于树莓派pico和circuitpython的更多玩法&#xff0c;请看树莓派pico专栏 说明 关于at指令 WiFi的at指令 UDP的at指令 样例程序 调试助手端输入指令 sta端程序 效果 进阶使用 库函数说明 样例代码 关于树莓派pico和circuitpython的更多玩法&#xff0c;请看树…

【Superset】dashboard 自定义URL

URL设置 在发布仪表盘&#xff08;dashboard&#xff09;后&#xff0c;可以通过修改看板属性中的SLUG等&#xff0c;生成url 举例&#xff1a; http://localhost:8090/superset/dashboard/test/ 参数设置 以下 URL 参数可用于修改仪表板的呈现方式&#xff1a;此处参考了官…

Linux 下 redis 集群部署

目录 1. redis下载 2. 环境准备 3. redis部署 3.1 修改系统配置文件 3.2 开放端口 3.3 安装 redis 3.4 验证 本文将以三台服务器为例&#xff0c;介绍在 linux 系统下redis的部署方式。 1. redis下载 下载地址&#xff1a;Index of /releases/ 选择需要的介质下载&am…

[NSSRound#4 SWPU]1zweb

非预期解&#xff1a; 输入/flag&#xff0c;点击查看 预期解&#xff1a; upload.php <?php if ($_FILES["file"]["error"] > 0){echo "上传异常"; } else{$allowedExts array("gif", "jpeg", "jpg"…

GuLi商城-商品服务-API-品牌管理-JSR303自定义校验注解

自定义注解规则: 可以参考@NotNull注解 package com.nanjing.common.valid;import javax.validation.Constraint; import javax.validation.Payload; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target;i…

数据结构(空间复杂度介绍)超详细!!!

1. 数据结构前言 1.1 数据结构 数据结构是计算机存储、组织数据的形式&#xff0c;指相互之间存在一种或多种特定关系的数据元素的集合 1.2 算法 算法&#xff1a;良好的计算过程&#xff0c;它取一个或一组的值为输入&#xff0c;并产生出一个或一组的值作为输出。即算法经…