企业网站开发培训,网站建设与维护实训总结,生态建筑建设公司网站,公司网站建站流程目录
一、常见概念
1.1基本概念
二、架构演进
2.1单机架构
2.2应用数据分离架构
2.3应用服务集群架构
2.4读写分离 / 主从分离架构
2.5引入缓存 —— 冷热分离架构
2.6垂直分库
2.7业务拆分 —— 微服务 一、常见概念
1.1基本概念
应用#xff08;ApplicationApplication/ 系统System
为了完成一整套服务的一个程序或者一组相互配合的程序群。
模块Module/ 组件Component
当应用较复杂时为了分离职责将其中具有清晰职责的、内聚性强的部分抽象出概念便于 理解。
分布式Distributed
系统中的多个模块被部署于不同服务器之上即可以将该系统称为分布式系统。
集群Cluster
被部署于多台服务器上的、为了实现特定目标的一个/组特定的组件整个整体被称为集群。比如 多个 MySQL 工作在不同服务器上共同提供数据库服务目标可以被称为一组数据库集群。
主Master/ 从Slave
集群中通常有一个程序需要承担更多的职责被称为主其他承担附属职责的被称为从。
中间件Middleware
一类提供不同应用程序用于相互通信的软件即处于不同技术、工具和数据库之间的桥梁。
可用性Availability
考察单位时间段内系统可以正常提供服务的概率/期望。例如 年化系统可用性 系统正常提供 服务时长 / 一年总时长。
响应时长Response Time RT
指用户完成输入到系统给出用户反应的时长。
吞吐Throughputvs 并发Concurrent
吞吐考察单位时间段内系统可以成功处理的请求的数量。并发指系统同一时刻支持的请求最高 量。 二、架构演进
2.1单机架构
初期我们需要利用我们精干的技术团队快速将业务系统投入市场进行检验并且可以迅速响 应变化要求。但好在前期用户访问量很少没有对我们的性能、安全等提出很高的要求而且系统架构简单无需专业的运维团队所以选择单机架构是合适的。 2.2应用数据分离架构
随着系统的上线我们不出意外地获得了成功。市场上出现了一批忠实于我们的用户使得系统 的访问量逐步上升逐渐逼近了硬件资源的极限同时团队也在此期间积累了对业务流程的一批经 验。面对当前的性能压力我们需要未雨绸缪去进行系统重构、架构挑战以提升系统的承载能力。但由于预算仍然很紧张我们选择了将应用和数据分离的做法可以最小代价的提升系统的承载能力。 和之前架构的主要区别在于将数据库服务独立部署在同一个数据中心的其他服务器上应用服务通过网络访问数据。
2.3应用服务集群架构
负载均衡为了解决用户流量向哪台应用服务器分发的问题需要一个专门的系统组件做流 量分发。实际中负载均衡不仅仅指的是工作在应用层的甚至可能是其他的网络层之中。同时流量调度算法也有很多种。 2.4读写分离 / 主从分离架构
保留一个主要的数据库作为写入数据库其他的数据库作为从属数据库。从库的所有数据全部来自主库的数据经过同步后从库可以维护着与主库一致的数据。然后为了分担数据库的压力我们可以将写数据请求全部交给主库处理但读请求分散到各个从库中。由于大部分的系统中读写请求都是不成比例的例如 100 次读 1 次写所以只要将读请求由各个从库分担之后数据库的压力就没有那么大了。当然这个过程不是无代价的主库到从库的数据同步其实是由时间成本的 2.5引入缓存 —— 冷热分离架构
随着访问量继续增加发现业务中一些数据的读取频率远大于其他数据的读取频率。我们把这部 分数据称为热点数据与之相对应的是冷数据。针对热数据为了提升其读取的响应时间可以增加本地缓存并在外部增加分布式缓存缓存热门商品信息或热门商品的 html 页面等。通过缓存能把绝大多数请求在读写数据库前拦截掉大大降低数据库压力。其中涉及的技术包括使用memcached作为本地缓存使用 Redis 作为分布式缓存还会涉及缓存一致性、缓存穿透/击穿、缓存雪崩、热点数据集中失效等问题。 2.6垂直分库
随着业务的数据量增大大量的数据存储在同一个库中已经显得有些力不从心了所以可以按照 业务将数据分别存储。比如针对评论数据可按照商品ID进行hash路由到对应的表中存储针对支付记录可按照小时创建表每个小时表继续拆分为小表使用用户ID或记录编号来路由数据。只要实时操作的表数据量足够小请求能够足够均匀的分发到多台服务器上的小表那数据库就能通过水平扩展的方式来提高性能。 2.7业务拆分 —— 微服务
随着人员增加业务发展我们将业务分给不同的开发团队去维护每个团队独立实现自己的微 服务然后互相之间对数据的直接访问进行隔离可以利用 Gateway、消息总线等技术实现相互之间的调用关联。甚至可以把一些类似用户管理、安全管理、数据采集等业务提成公共服务。 至此一个还算合理的高可用、高并发系统的基本雏形已显。注意以上所说的架构演变顺序只是针对某个侧面进行单独的改进在实际场景中可能同一时间会有几个问题需要解决或者可能先达到瓶颈的是另外的方面这时候就应该按照实际问题实际解决。如在政府类的并发量可能不大但业务可能很丰富的场景高并发就不是重点解决的问题此时优先需要的可能会是丰富需求的解决方案。对于单次实施并且性能指标明确的系统架构设计到能够支持系统的性能指标要求就足够了但要留有扩展架构的接口以便不备之需。对于不断发展的系统如电商平台应设计到能满足下一阶段用户量和性能指标要求的程度并根据业务的增长不断的迭代升级架构以支持更高的并发和更丰富的业务。所谓的“大数据”其实是海量数据采集清洗转换、数据存储、数据分析、数据服务等场景解决方案的一个统称在每一个场景都包含了多种可选的技术如数据采集有Flume、Sqoop、Kettle等数据存储有分布式文件系统HDFS、FastDFSNoSQL数据库HBase、MongoDB等数据分析有Spark技术栈、机器学习算法等。总的来说大数据架构就是根据业务的需求整合各种大数据组件组合而成的架构一般会提供分布式存储、分布式计算、多维分析、数据仓库、机器学习算法等能力。而服务端架构更多指的是应用组织层面的架构底层能力往往是由大数据架构来提供。