中小型网站建设平台黑龙江建设工程招标网

张小明 2026/1/7 10:09:52
中小型网站建设平台,黑龙江建设工程招标网,石家庄网站制作招聘,可以让网友帮做任务的网站1. 引言 1.1 青春的旋律 最近发现#xff0c;以前初高中时代喜欢的很多歌手#xff0c;各大曲库平台的歌曲都开始收费了。 比如以前喜欢的音乐才子 VAE#xff0c;无论是江南夜色下的小桥屋檐#xff0c;还是烟火绝、客怎眠的关外野店#xff0c;亦或是紫烟留香、翩若绝…1. 引言1.1 青春的旋律最近发现以前初高中时代喜欢的很多歌手各大曲库平台的歌曲都开始收费了。比如以前喜欢的音乐才子 VAE无论是江南夜色下的小桥屋檐还是烟火绝、客怎眠的关外野店亦或是紫烟留香、翩若绝影的惊鸿一面。那些动人的旋律都会在某个午睡后的黄昏或大雨后的清晨突然萦绕脑海久久无法散去。不知道是怀念曾经一起听歌的人还是怀念那些青春的回忆。1.2 网盘的妙用无论怀念与否歌是要听的会员是不可能充的 于是机智pinqiong的我开始在各大平台寻找免费的资源。不得不说互联网真是一个伟大的发明只要通电上网就没有找不到的资源。特别是网盘系统真是资源共享的一把好手PS有喜欢 VAE 歌曲的文末可从网盘里获取免费的歌曲资源自取不谢。相信大家都用过网盘从存储照片到分享工作文档它已经成为了我们生活中不可或缺的一部分。但你是否好奇过背后是怎么样的系统设计在支撑着这些功能今天我们就来探讨一下网盘系统的架构设计。2. 网盘系统百度网盘是一个备受欢迎的云存储和文件分享平台拥有 8 亿多用户和高达 10wPB 的存储容量。在这篇文章中我们将深入探讨百度网盘系统的核心功能以及如何应对高并发和海量存储可能引发的挑战。2.1 架构概述百度网盘的系统设计采用分布式架构以应对用户庞大的数量和海量的存储需求。核心组件包括客户端层用于接收和分发不同设备的用户请求对文件资源进行拆分和组装直接和后端服务进行交互。应用微服务处理核心业务逻辑如文件上传下载、文件共享、权限控制、VIP 限速等。关系型DB系统用于持久化存储用户的文件和元数据以及用户权限等基础信息。消息队列异步削峰解耦提高写入性能减轻数据库负载和应用间频繁通信的压力。注册中心和缓存应用节点定时上报服务器的 IP 节点端口到注册中心以便其它服务器实时调用。缓存可以存储 Token 等认证信息或应用热点数据。分布式文件系统用于存储非结构化文件比如图片、音频、视频等数据存储效率高可扩展性好。2.2 亿万级用户的挑战对于像网盘这样的存储系统每天都有大量的数据产生和传输。以百度网盘为例在 2022 年底用户就已经突破了 8 亿存储量更是早已超过了 10wPB即 1000亿 GB。所以设计一个网盘系统有如下挑战。存储量大百度网盘目前有 8 亿多用户普通用户最大存储量为 1 TB存储量就按 1000亿GB 来算每个用户差不多 100GB【1000GB/8】的存储量存储空间的平均使用率为 10%。吞吐量高以百度网盘每天日活量为 2 亿日活用户占比约 25%每个用户平均访问 4 次网盘。所以网盘系统的 QPS 约为 1 万【2亿用户*4次/(24*3600秒) 】高峰期为平均 QPS 的两倍即 2 万。网络带宽假设用户每次上次下载的文件平均大小为 2MB网络带宽负载约为 18GB/s2亿*4*2M/(24*3600*1024G)即 144Gb/s。高峰流量带宽约为平均的 2 倍约为 288Gb/s。2.3 功能需求通用的功能有以下几点支持用户注册登录网盘开通 VIP以及注销账户。上传文件下载文件。添加好友好友之间可进行文件共享。新增、修改及删除存储目录。重命名文件数据或删除不需要的文件。允许向好友发送文件或通过链接分享文件给陌生人。2.4 非功能需求当前设计的网盘系统需要有以下要求海量数据存储8 亿注册用户约 25% 的活跃用户1 亿 TB 空间。高并发访问平均 1万QPS高峰期 2 万QPS。大流量负载平均网络带宽 144Gb/s高峰期 280Gb/s。高可靠存储文件不能丢失持久存储的可靠性达到 6 个 9即 100 万个文件最多丢失或损坏 1 个文件。高可用服务用户正常上传下载功能可用性 4个9即一年最多 53 分钟365*24*60*0.0001不可用。权限控制文件需要隔离存储除了用户本人和共享的文件外其余文件不能让其他人看到。3. 核心功能3.1 文件上传和下载文件上传用户通过网盘客户端或网页界面上传文件上传请求经过客户端应用层后为了确保大文件上传的可靠性我们可以根据文件大小对文件进行切片上传。然后客户端调用应用微服务处理文件基础数据元数据和文件内容分别对元数据和文件内容数据进行异步上传。文件下载用户请求下载文件时客户端层将请求发送到应用微服务。为了提高下载速度可将文件块并发从服务器下载然后在客户端进行文件组装再返回给用户设备。3.2 文件共享好友分享用户可以分享文件或文件夹给好友分享时可以指定好友只读、或者存储权限并且可指定文件共享的时间期限。只读权限好友在收到只读分享权限时只能查看文件或文件夹的内容不能保存、修改或删除文件。转存权限好友收到存储权限的文件分享后可以选择在期限内将文件转存到自己的存储空间并且可以再次将文件分享出去。链接分享用户可以将文件或文件夹通过链接分享出去通过链接分享的权限默认为转存权限分享范围可以设定为公开、私密或者仅限特定用户访问。公开范围任何人都可以访问该文件或文件夹可以转存文件到自己的存储空间。私密范围生成链接方便打开文件只有用户自己可以访问。特定用户范围允许用户的好友或者指定分享给某人当其它人打开链接时显示无权限访问。4. 详细设计4.1 文件存储和元数据管理分离存储由于 MySQL 这类关系型数据库不适合存储大数据文件而像 HDFS、Ceph 这类文件系统在数据查询时又非常缓慢。所以我们将文件数据分为元数据和文件内容将它们分开进行存储其中元数据包括文件所有者、文件权限、文件类型、分享信息等基础信息存储在关系型数据库 MySQL 里面。文件内容将文件的具体信息比如图片、音频、视频等多媒体数据保存在对象存储服务里比如 Ceph 分布式对象存储服务器。而负责响应元数据和文件内容的请求也分成文件元数据管理系统File Metadata Management简称 FMM和文件内容管理系统File Content Management简称 FCM两个系统。架构图如下由于用户文件可能包括视频、音频等大文件但是 Ceph 不适合存储过大文件所以我们对上传文件内容进行拆分把大文件分成很多个小块block以便更好地上传下载大文件。这样做还有一个好处当大文件分块上传下载时可以并发处理这些文件块然后在 SDK 端进行文件组装加快文件的传输速度。并且当用户网络断连以后我们只需要重传剩余的文件块即可实现断点续传功能。文件上传文件上传的时序图如下用户上传文件后客户端应用根据用户上传的文件大小将文件分成一个个 block假设每 8M 生成一个 block然后将 block 对应的 MD5 值信息上传到元数据管理系统FMM。FMM 通过上传的 block 列表判断 MD5 值是否有重复。如果是新的 MD5 文件块则为它们分配 id并存储到每个文件元数据表中。然后 FMM 生成一个访问 Token结合 blockId 列表以及可用的 FMM 服务器列表一起返回给客户端。当客户端收到 FMM 的响应时会对比 MD5 值判断哪些是需要上传的文件块信息。然后带着 Token 以及需要上传的文件块 ID 和文件块内容并发传入 FMM 的各可用节点将真实的文件块存到对象存储系统 Ceph 中。当客户端带着 blockId 列表请求 FCM 时为了保证 blockId 来自 FMM 而非用户伪造一般 FCM 需要再调用一次 FMM 做用户鉴权。但是我们为了整体的架构简洁性考虑用缓存 Token 的方式来替代内部 API 的调用一方面减少了系统的交互另一方面提升了整体的响应速度。文件下载文件下载的时序图如下当用户下载文件时客户端传入文件名、用户等信息以获取 FMM 获取文件的元数据。接着FMM 服务器从 MySQL 中查询对应用户的文件 blockId 列表分别从 ZK 获取可访问的 FMM 服务器列表、从 Redis 生成访问 Token然后返回给客户端。由客户端根据 FCM 的服务器列表和响应的 blockId 列表信息并发调用 FCM 服务器下载文件 block当下载完成所有的文件 block 后客户端将文件 block 组装成一个完整的文件返回给用户设备。表设计User 表记录用户关键信息ID用户名手机号已用空间用户类型VIP、平民等。File 表记录文件元数据信息存储文件的树形结构包括文件 ID名称所属用户父文件 ID子文件个数创建时间文件大小等。File_block 表记录文件块的具体信息ID文件 ID文件块 MD5 值等。上传下载限速在设计网盘时考虑到系统的用户量和存储量比较大我们将应用系统和存储服务器都加入集群并集成负载均衡、服务网关等基础设施以提供故障转移、高可用和弹性伸缩等能力。而基于内存、网络带宽的成本考虑我们不可能一味加机器来保证用户的上传下载速率并且基于商业化考量我们可以对非会员的普通用户进行限速。具体实现为当客户端请求 FMM 系统进行上传或下载任务时我们先获取用户的用户类型如果是平民用户我们在返回客户端可用的 FCM 节点列表时可将服务器数量适当降低。比如VIP 用户可以享受 50 台服务器同时上传下载而普通用户只分配 5 台服务器来进行上传下载文件。4.2 文件共享RBAC 权限控制由于网盘的文件共享是可以实时修改状态的所以我们采用 RBACRole-Based Access Control基于角色的权限访问控制的思想来控制用户访问文件的权限。权限相关的表设计如下User 表存储系统用户的信息同上包括用户ID、用户名等。Role 表定义系统中的角色每个角色包括角色 ID、角色名称等。常见的角色有超管、普通用户、好友、只读用户、限制用户等。UserRole 表建立用户和角色之间的关联记录哪些用户拥有哪些角色包括用户 ID 和角色 ID。File 表表示系统中的文件元数据信息同上包括文件 ID、文件名称等。Permission 表定义角色对资源的权限包括权限ID、角色ID、用户ID、文件ID过期时间等。通过 RBAC 的机制我们可以轻松管理用户对资源的权限根据角色分配权限并在需要时回收权限。给好友分享文件有了 RBAC 来进行权限控制我们注册账号并上传文件给好友分享的业务流程如下用户注册和登录为用户分配角色将相关记录插入到 UserRole 表中初始为普通用户角色可上传、下载、分享和管理自己的文件。用户通过注册功能创建帐户其信息存储在 User 表中。创建和共享文件用户可以创建文件或文件夹这些资源的信息存储在 File 表中。当用户希望共享文件时可以选择指定共享对象其他用户或好友并赋予文件权限。权限分配文件所有者将权限授予特定的好友将好友的用户 ID、赋予何种角色、以及对应的文件 ID 插入到 Permission 表中。例如文件所有者角色可以有完全访问权限而好友角色可以具有转存权限和继续分享权限只读 角色只具有访问权限。文件访问当用户尝试访问文件时系统会检查用户本身的角色权限【判断用户是不是违规用户、或受限制的用户】以及与文件相关的权限。如果用户的角色具有文件的特定权限例如读取或写入权限则允许用户访问文件。链接分享整体流程和好友共享类似唯一不同在于将记录插入到 Permission 表时可以将文件的权限设置为公开访问对应的用户置为 NULL默认所有用户可访问和转存文件。insertinto permission (file_id, role_id, user_id) values (被共享的文件ID, 公开角色的ID, NULL)这样当用户在访问该文件时判断出该文件的权限为公开访问就可以访问或转存共享文件了。权限回收当资源所有者或管理员决定回收某个用户或角色对资源的权限时系统会删除相关的权限记录。具体实现为在 Permission 表新增一个过期时间字段当用户共享文件给好友、或生成链接分享时需要设置具体的过期时间。文件系统可以开启定时任务定期清理已经过期的权限确保文件只能在有效期内被用户访问。若设置链接为无限期访问则可以设置过期时间为过去的某个时间点。文件删除当用户删除文件时我们首先需要通过 FMM 的接口获取文件块列表然后删除元数据信息释放用户的存储空间同时通过消息队列将已删除的文件块列表传输至 FCM删除文件内容。为了保证文件元数据和文件内容的事务一致性我们采用了分布式事务中的最大努力通知思想。具体实现为新增一个监控告警系统当文件内容删除失败时可以采用短信或邮件的方式通知管理员来手动处理不同步数据。对用户来说文件元数据已经看不到了所以文件内容和文件元数据只需要保证最终一致性即可。不明白分布式、最终一致性的同学可以看我之前的这篇文章深入浅出分布式、CAP和BASE理论5. 小结目前互联网市场竞争激烈网盘领域也不例外。国内有很多网盘供应商如百度网盘、腾讯微云、360 云盘等但百度网盘依旧一家独大市场份额占比超过了 80%。数据来源观研报告网目前个人网盘使用痛点集中在速度、安全、分享和价格四个层面。用户为优质服务和体验付费的意愿显著提升因此做好VIP付费会员的经营与变现成为个人网盘商业化的主流。但是作为一个很少充值网盘 VIP 的人来说我相信普通用户才是大群体所以更希望网盘应用们在商业变现时也可以考虑下平民用户的使用体验。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

关于建设教体局网站的申请个人域名可以做企业网站吗

YOLO-v5的工程智慧:如何重新定义工业级目标检测 在智能摄像头自动识别行人、无人机巡检农田病害、自动驾驶系统感知周围车辆的今天,我们很少停下来问一句:这些实时视觉任务背后,是谁在默默扛起性能与效率的双重压力? 答…

张小明 2025/12/26 5:40:16 网站建设

网站建设领域的基本五大策略要学会贵港网站营销

地址重定位与GOT/PLT机制详解地址重定位定义与作用:地址重定位是将程序中的逻辑地址(编译时生成的虚拟地址)转换为运行时物理地址的过程,确保程序在内存中任意位置正确运行。其核心解决多道程序环境下地址冲突、内存共享及动态加载…

张小明 2025/12/26 5:37:28 网站建设

企业网站维护报价郑州响应式网站建设

MIDI音乐制作实战指南:从零开始掌握专业编辑技巧 【免费下载链接】midieditor Provides an interface to edit, record, and play Midi data 项目地址: https://gitcode.com/gh_mirrors/mi/midieditor 当你在音乐创作中遇到这些问题时,是否感到无…

张小明 2025/12/26 5:37:30 网站建设

企业网站建设方案怎么写重庆智能网站建设多少钱

DBeaver搜索功能失效问题排查与修复指南 【免费下载链接】dbeaver DBeaver 是一个通用的数据库管理工具,支持跨平台使用。* 支持多种数据库类型,如 MySQL、PostgreSQL、MongoDB 等;提供 SQL 编辑、查询、调试等功能;支持数据迁移和…

张小明 2026/1/7 1:04:39 网站建设

成都生物城建设有限公司网站app搭建要多少钱

reaConverter Pro是一款功能强大的专业级批量文件转换与处理工具,以其全面的格式支持和高效的批量处理能力,在图形图像处理领域占据重要地位。该软件集格式转换、批量编辑、自动化流程于一体,为专业用户提供了完整的文件处理解决方案。 获取…

张小明 2025/12/26 5:37:36 网站建设

电子商务与网站建设的报告网站建设服务代理

PDF自动化排版终极方案:wkhtmltopdf实战全解析 【免费下载链接】wkhtmltopdf 项目地址: https://gitcode.com/gh_mirrors/wkh/wkhtmltopdf 你是否遇到过这样的困扰:精心编写的HTML文档转换成PDF后,页码混乱不堪,目录与正文…

张小明 2025/12/26 5:37:34 网站建设