首页 > 其他分享 >技术架构演进之路基础概念

技术架构演进之路基础概念

时间:2023-12-05 23:32:33浏览次数:39  
标签:架构 演进 并发 数据库 类比 系统 概念 集群 服务器

概述

在进行技术学习过程中,由于没有经历过一些中大型系统的实际经验, 导致无法从全局理解一些概念,所以本文以一个 "电子商务 " 应用为例,介绍从一百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,方便大家对后续知识做深入学习时 有一定的整体视野

常见概念

在正式引入架构演进之前,为避免对架构中的概念完全不了解导致低效沟通, 优先对其中一些比较重要的概念做前置介绍

应用(Application)/ 系统( System)

为了完成一整套服务的一个程序或者一组相互配合的程序群。生活例子类比:为 了完成一项任务,而搭建的由一个人或者一群相互配的人组成的团队。

模块(Module)/ 组件( Component)

当应用较复杂时,为了分离职责,将其中具有清晰职责的、内聚性强的部分,抽 象出概念,便于理解。生活例子类比:军队中为了进行某据点的攻克,将人员分为突击小组、爆破小组、掩护小组、通信小组等

分布式( Distributed)

系统中的多个模块被部署于不同服务器之上,即可以将该系统称为分布式系统。 如 Web 服务器与数据库分别工作在不同的服务器上,或者多台 Web 服务器被分别部 署在不同服务器上。生活例子类比:为了更好的满足现实需要,一个在同一个办公场 地的工作小组被分散到多个城市的不同工作场地中进行远程配合工作完成目标。跨主机之间的模块之间的通信基本要借助网络支撑完成。

集群(Cluster)

被部署于多台服务器上的、为了实现特定目标的一个 组特定的组件,整个整体被 称为集群。比如多个 MySQL 工作在不同服务器上,共同提供数据库服务目标,可以 被称为一组数据库集群。生活例子类比:为了解决军队攻克防守坚固的大城市的作战 目标,指挥部将大批炮兵部队集中起来形成一个炮兵打击集群。

分布式 vs 集群。通常不用太严格区分两者的细微概念,细究的话,分布式强调的是物理形态,即工作在不同服务器上并且通过网络通信配合完成任务;而集群更在意逻辑形态,即是否为了完成特定服务目标。

主( Master)/ 从( Slave)

集群中,通常有一个程序需要承担更多的职责,被称为主;其他承担附 属职责的被称为从。比如 MySQL 集群中,只有其中一台服务器上数据库允许进行数据的写入 (增 /删/改),其他数据库的数据修改全部要从这台数据库同步而来,则把那台数据库称为主库,其他数据库称为从库。

中间件( Middleware)

一类提供不同应用程序用于相互通信的软件,即处于不同技术、工具和数据库之间的桥梁。生活例子类比:一家饭店开始时,会每天去市场挑选买菜,但随着饭店业务量变大,成立一个采购部,由采购部专职于采买业务,称为厨房和菜市场之间的桥梁

容器编排(K8S)

kubernetes,简称 K8s ,是用 8代替名字中间的 8个字符 “ 而成的缩写。 是一个开源的,用于管理云平台中多个主机上的容器化 的应用, Kubernetes 的目标是让部署容器化的应用简单并且高效。可以理解为一个货船,安装集装箱的大小,货物情况合理的来组织集装箱完成整体货物的搬运。

可用性( Availability)

考察单位时间段内,系统可以正常提供服务的概率 /期望。例如: 年化系统可用性 = 系统正常提供服务时长 / 一年总时长。这里暗含着一个指标,即如何评价系统提供无 法是否正常,我们就不深入了。平时我们常说的 4 个 9 即系统可以提供 99.99% 的可用性, 5个9是99.999%的可用性, 以此类推。我们平时只是用高可用( High Availability HA )这个非量化目标简要表达我们系统的追求。

响应时长(Response Time RT)

指用户完成输入到系统给出用户反应的时长。例如点外卖业务的响应时长 = 拿到外卖的时刻 - 完成点单的时刻。通常我们需要衡量的是最长响应时长、平均响应时长和中位数响应时长。这个指标原则上是越小越好,但很多情况下由于实现的限制,需要根据实际情况具体判断

吞吐(Throughput)vs 并发(Concurrent)

吞吐考察单位时间段内,系统可以成功处理的请求的数量。并发指系统同一时刻支持的请求最高量。例如一条 2车道高速公路,一分钟可以通过 20 辆车,则并发是 2, 一分钟的吞吐量是 20 。实践中,并发量往往无法直接获取,很多时候都是用极短的时间段(比如 1秒)的吞吐量做代替。我们平时用高并发(Hight Concurrnet)这个非量化目标简要表达系统的追求。



标签:架构,演进,并发,数据库,类比,系统,概念,集群,服务器
From: https://blog.51cto.com/u_16405113/8696471

相关文章

  • 单机架构
    初期,我们需要利用我们精干的技术团队,快速将业务系统投入市场进行检验,并且可以迅速响应变化要求。但好在前期用户访问量很少,没有对我们的性能、安全等提出很高的要求,而且系统架构简单,无需专业的运维团队,所以选择单机架构是合适的用户在浏览器中输入www.google.com,首先经过DNS服......
  • 1.需求分析和架构设计
    需求分析熟悉产品需求以架构师的思维分析需求,不能只停留在表面实现需求,要考虑怎么实现能给业务带来增长全局思维、整体思维、闭环思维,不能只考虑自己,要全局考虑整个团队,要做到有输出、有输入、有结果浅层需求分析表面需要实现的功能,如登录、创建作品、编辑、发布、访问作......
  • 网络通信、UDP通信、TCP通信、BS架构模拟、URL了解
    网络编程可以让程序与网络上的其他设备中的程序进行数据交互所以,我们学习网络编程的主要目的就是为了实现网络通信网络通信网络通信基本模式常见的通信模式有如下2种形式:Client-Server(Cs)、Browser/Server(Bs)Client-Server(Cs)主要是客户端与服务端之间的联系(就是相应的App和后......
  • 直播预约丨《实时湖仓实践五讲》第四讲:实时湖仓架构与技术选型
    如今,大规模、高时效、智能化数据处理已是“刚需”,企业需要更强大的数据平台,来应对数据查询、数据处理、数据挖掘、数据展示以及多种计算模型并行的挑战,湖仓一体方案应运而生。《实时湖仓实践五讲》是袋鼠云打造的系列直播活动,将围绕实时湖仓的建设趋势和通用问题,邀请奋战于企业数字......
  • 直播预约丨《实时湖仓实践五讲》第四讲:实时湖仓架构与技术选型
    如今,大规模、高时效、智能化数据处理已是“刚需”,企业需要更强大的数据平台,来应对数据查询、数据处理、数据挖掘、数据展示以及多种计算模型并行的挑战,湖仓一体方案应运而生。《实时湖仓实践五讲》是袋鼠云打造的系列直播活动,将围绕实时湖仓的建设趋势和通用问题,邀请奋战于企业数......
  • Linux 用户管理:解析用户与组概念,掌握用户/组管理技巧
    在Linux操作系统中,用户管理是系统管理员日常工作中不可或缺的一部分。有效的用户管理有助于确保系统的安全性、可靠性和可维护性。本文将深入探讨Linux中用户与组的概念,以及如何有效地进行用户和组的管理。用户与组的概念在Linux系统中,每个用户都有一个唯一的用户标识符(UserID,......
  • Quartz核心原理之架构及基本元素介绍
    1什么是QuartzQuartz是一个作业调度框架,它可以与J2EE和J2SE应用相结合,也可以单独使用。它能够创建多个甚至数万个jobs这样复杂的程序,jobs可以做成标准的java组件或EJBS。Quartz很容易上手,创建一个任务仅需实现Job接口,该接口只有一个方法voidexecute(JobExecutionContextcontex......
  • Python闭包概念入门
    '''Python闭包概念入门闭包(Closure)是Python中一个重要的工具。闭包:高阶函数中,内层函数携带外层函数中的参数、变量及其环境,一同存在的状态(即使已经离开了创造它的外层函数),被称之为闭包。被携带的外层变量称之为:自由变量,也被形容为:外层变量被闭包......
  • Quartz核心原理之架构及基本元素介绍 | 京东物流技术团队
    1什么是QuartzQuartz是一个作业调度框架,它可以与J2EE和J2SE应用相结合,也可以单独使用。它能够创建多个甚至数万个jobs这样复杂的程序,jobs可以做成标准的java组件或EJBS。Quartz很容易上手,创建一个任务仅需实现Job接口,该接口只有一个方法voidexecute(JobExecutionContextcontext)......
  • Nim 概念 Concept 对性能的影响
    Nim概念Concept对性能的影响继上一篇文章《C#泛型编译特性对性能的影响》后,我又研究了Nim语言相关的设计,由于Nim语言与C#语言有些差异,比如Nim没有接口,也没有直接的class关键字,所以某些实现是变通的办法。概念Concept在Nim中没有Interface的概念,虽然有多次提案,......