系统架构
系统架构
架构概述
前端架构
前端架构包括以下关键组件和技术:
主架构选择了backbone.js,它提供了组件化开发、状态管理和路由控制等功能。又在其基础上引入了Gulp、Babel、browserify、Scss、jQuery、underscore、ES6等用以构建可维护和高性能的前端应用程序。
使用了WebSocket协议和后台进行消息的即时通讯。
设计了风格统一、用户友好、直观的界面,包括搜索、文件夹管理、文件预览等功能。
网站支持全平台预览,使用了CSS媒体查询和移动优化技术创建响应式布局,以确保网盘产品在不同设备上具备一致的外观和功能。
考虑多语言支持,目前系统支持中、英文两种语言,可在界面随时切换,也能通过浏览器语言进行切换。
采用了代码分割、懒加载、资源压缩和CDN加速等前端性能优化技术,以提高页面加载速度和响应时间。
实施前端安全性最佳实践,包括XSS(跨站脚本攻击)和CSRF(跨站请求伪造)防护。确保数据传输加密和安全存储。
跨平台和多语言:
巴别鸟系统前端部分包含了:巴别鸟iOS版(iPhone、iPad)、巴别鸟安卓版、巴别鸟web版、巴别鸟微信版(H5),巴别鸟mac客户端,巴别鸟windows客户端、巴别鸟Linux(麒麟)客户端。
原生iOS客户端使用Object-C和Swift开发。
原生安卓客户端、鸿蒙使用Java开发(Android studio)。
windows、mac、麒麟 客户端使用Electron及C++进行开发,包含 客户端界面、同步端、传输管理、映射盘四个组件。
后端架构
服务器拓扑结构
巴别鸟的后端架构主要负责业务逻辑、数据处理和与前端的交互。它满足了以下关键目标:
模块化设计: 后端采用了模块化的设计,以便将不同功能和业务逻辑划分为独立的模块。这有助于代码的可维护性和可扩展性。
性能: 巴别鸟后端具有良好的性能,能够处理大规模的文件上传、下载、搜索和协作请求。采用了适当的负载均衡及缓存策略和优化技术以提高响应时间。
安全性: 巴别鸟后端重点强化安全性,包括用户身份验证、授权、数据加密和防御性编程,以保护用户数据免受攻击。
可扩展性: 巴别鸟后端架构具备可扩展性,以适应未来的业务需求和新功能的添加。采用了SOA服务架构和模块化组件设计,以支持功能的灵活扩展。
数据管理: 巴别鸟后端有效地管理了用户数据、文件数据和元数据。这包括数据库设计、备份策略和数据清理。
框架选择
巴别鸟采用了松散的、面向服务的架构模式。不同的服务,其设计、开发、部署都是独立的,这样就确保了系统的稳定性和可扩展性。最终,我们会采用docker把这些服务容器化,进行统一的管理和部署。
对于逻辑简单、高频访问的服务,我们选择Nodejs及相应的开发框架。
对于逻辑复杂、低消耗的服务,我们会选择Struts2+Spring框架。
对于逻辑复杂、且高消耗(比如MD5计算、文件分块、加密)的服务,我们会选用Rust语言进行开发。
数据层
数据库: 巴别鸟选择了MySQL作为数据库管理系统,也支持使用其他数据库(可按需支持 高斯、PostgreSQL、Oracle)
同时,巴别采用ORM(对象关系映射): 使用ORM框架(Hibernate)将数据库表映射到Java对象,以简化数据访问和持久化。
安全性
用户身份验证: 使用强大的用户身份验证机制,包括单一登录(SSO)、OAuth认证和多因素认证(MFA)。
授权: 使用Spring Security等授权框架来定义和强制访问控制策略,确保用户只能访问其授权的资源。
数据加密: 实施数据传输和存储的加密,以保护用户数据的安全性。
业务逻辑
文件管理: 开发了业务逻辑来处理文件上传、下载、版本控制、共享和协作功能。
用户管理: 实施用户管理、权限管理和用户组织结构。
搜索功能: 开发了高效的搜索引擎,支持文件和元数据的快速检索。
在线编辑:负责文件的在线编辑、协同编辑。
文件转码:负责文件的批量排队转码,生成预览文件。
对象存储:文件的分块及落盘,存储系统管理。
Web服务
RESTful API: 使用RESTful API,以支持前端和其他客户端的数据交互和协作。
缓存管理
缓存策略: 使用缓存来提高性能,包括页面缓存、数据缓存和会话缓存。
异步任务处理
消息队列: 使用消息队列系统RabbitMQ来处理异步任务,如文件转码、文件预览生成等。
通过采用Struts2和Spring框架,结合以上设计考虑,可以构建一个强大、高性能、安全可靠的企业网盘后端系统,满足用户的需求并支持未来的扩展和功能添加。
云基础设施选择(公有云 SAAS版本巴别鸟)
公有云基础设施选择可以直接影响到企业网盘产品的性能、可靠性和安全性。巴别鸟公有云版本经过多方对比,选择了阿里云的ECS、OSS服务以及CDN分发业务。目前(2023年)公有云SAAS模式运行的巴别鸟系统已经0服务器故障在线运作了超过10年。
云服务提供商选择
业务服务器SAAS版本巴别鸟使用了阿里云的ECS(云服务器)集群
阿里云的ECS是一种弹性计算服务,为你提供了虚拟机实例,使你能够在云中运行应用程序。这些是选择ECS的一些关键优势:
灵活性: ECS允许你根据需要创建、启动和停止虚拟机实例。这意味着你可以根据流量需求来扩展或缩减计算资源。
可扩展性: 阿里云提供了多种不同规格的ECS实例,以满足不同工作负载的需求。你可以根据应用程序的性能要求进行选择。
可靠性: 阿里云的ECS实例通常具有高可用性,提供了多个数据中心和可用区,以确保业务连续性。
安全性: 阿里云提供了各种安全性功能,包括网络隔离、防火墙和安全组,以帮助你保护你的虚拟机实例免受恶意攻击。
对象存储SAAS版本巴别鸟使用了阿里云的OSS(对象存储服务)
阿里云的OSS是一种高度可扩展、安全可靠的云存储服务,适用于存储和管理大量的文件和数据。以下是选择OSS的一些优势:
可扩展的存储: OSS提供了可扩展的存储容量,可以根据你的需要进行动态扩展。这对于企业网盘产品中的文件存储非常重要。
数据备份和恢复: 阿里云的OSS具有数据备份和版本控制功能,可以帮助你保护数据免受丢失或损坏。
安全性: 数据存储在OSS中通常会受到加密和访问控制的保护,以确保数据的安全性。
CDN整合: 与CDN服务集成,可以提高文件的分发速度和用户体验。
为确保全球各地的访问通畅,巴别鸟也使用了CDN分发
CDN(内容分发网络)服务是将内容缓存到全球分布的边缘节点,以降低加载时间并提高用户体验。阿里云的CDN服务可以为企业网盘产品带来以下好处:
快速分发: 加速文件的分发,确保用户能够快速访问和下载文件,不受地理位置的限制。
负载均衡: CDN可以帮助分担服务器的负载,降低服务器的压力,提高网站的性能。
安全性: CDN服务通常具有DDoS攻击防护功能,可保护网站免受恶意攻击。
全球覆盖: 阿里云的CDN服务具有全球性覆盖,可确保你的内容快速传递给全球用户。
数据中心地理位置
目前巴别鸟使用了阿里云的两个数据中心:
杭州数据中心 及 威海数据中心
一南一北的配置能保证服务的可持续性及灾备需求。
数据库设计
数据库类型
巴别鸟企业网盘采用了多种类型的数据库,同时也可根据客户需求支持信创的数据库产品或是Oracle等大型数据库。
巴别鸟默认的产品数据库为:
核心数据库为关系型数据库 mysql
辅助数据库有:Redis 数据库,MongoDB 数据库
数据库架构
数据架构在企业网盘系统中扮演着至关重要的角色,确保了数据的高可用性、性能和一致性。下面是巴别鸟的数据库架构:
A. 主从数据库架构
主库(Master)
主库负责处理写入操作,包括用户上传文件、修改文件信息等。
主库提供高可用性、数据一致性和事务处理。
从库(Slave)
从库主要用于读取操作,包括文件的查询、搜索等。
从库可以提供负载均衡,分担主库的读取负载。
数据同步:采用数据复制机制确保从库与主库的数据保持同步。
故障转移:从库可以在主库故障时接管写入操作,确保系统的连续性。
B. 关系型数据库(MySQL)
数据库设计
数据库设计以支持文件和用户管理,包括文件元数据、用户信息、权限等表的定义。
数据表之间的关系清晰,使用外键来维护数据一致性。
数据冗余
主从架构中的从库用于数据冗余,以防止主库故障时的数据丢失。
数据同步机制确保从库的数据与主库保持一致。
C. NoSQL数据库(MongoDB)
文件元数据存储
MongoDB可用于存储文件的元数据,如文件名、大小、版本信息等。
具有弹性模式的MongoDB适用于不断变化的数据模式。
D. 缓存数据库(Redis)
缓存读取数据
Redis用于缓存频繁读取的数据,以减轻数据库的负载。
缓存的数据可以包括用户会话信息、热门文件、访问日志等。
E. 数据备份和恢复
备份策略
定期备份主库和从库的数据,以确保数据的安全性。
巴别鸟备份数据存储在不同地理位置的可靠存储中。
灾难恢复
我们制定详实的恢复计划,包括从备份中还原数据的步骤和时间表。
巴别鸟运维团队会定期测试灾难恢复过程以确保其有效性。
F. 数据一致性和事务管理
事务支持
使用数据库事务来确保一系列操作的一致性,如文件上传、共享和权限更改。
事务应该被正确地管理,以避免数据损坏和不一致性。
并发控制
使用数据库锁和隔离级别来管理并发访问,以避免数据竞争和冲突。
G. 监控和性能优化
性能监控
实施数据库性能监控,包括查询响应时间、负载和资源利用率。
根据监控结果进行性能调整,以确保数据库的稳定性和性能。
查询优化
优化复杂查询以提高查询性能,包括索引优化和查询计划分析。
这些数据架构的元素将有助于确保你的企业网盘系统能够具备高可用性、性能卓越和数据的安全性。通过合理的数据库设计和维护,你可以提供稳定可靠的服务,满足用户需求并确保数据的完整性。
数据备份和恢复策略(公有云)
A. 数据备份
定期备份计划:巴别鸟有定期的备份计划,以确保数据的连续备份(每日凌晨数据备份)。
完整备份和增量备份:巴别鸟采用完整备份和增量备份的组合策略。完整备份将数据库的全部数据备份,而增量备份仅备份自上次备份以来发生更改的数据,以减少备份时间和存储空间的消耗。
多备份位置:公有云版本巴别鸟有杭州机房及威海机房两个地理位置,以应对自然灾害或硬件故障。云存储和远程数据中心是常见的备份存储选择。
自动化备份:巴别鸟的数据库备份采用全自动备份机制,无需人工干预,以提高可靠性。
备份测试:我们会定期测试备份以确保其完整性和可用性。通过还原备份数据到测试环境中并验证数据的一致性来进行测试。
B. 灾难恢复
恢复计划:我们建立了详细的恢复计划,明确每个步骤和责任。确保团队成员了解如何执行恢复过程。
备份恢复测试:我们会定期测试备份恢复过程,以确保在紧急情况下能够迅速有效地还原数据。测试应包括各种故障场景的模拟。
备份监控:监控备份任务的运行情况,出现问题会自动提醒及报错,确保备份系统正常运行。
灾难恢复团队:我们有专门的灾难恢复团队,7*24小时待命,负责在紧急情况下采取行动,确保业务的持续运行。
通信计划:我们建立了有效的通信计划,及自动告警信息送达监控,以通知相关利益相关者有关灾难事件和恢复过程的信息。
文档和培训:确保恢复计划和过程的详细文档,并为团队成员提供培训,使其了解恢复策略和步骤。
以上策略和努力立足于确保数据库数据的安全性和可用性,并最大程度地减少数据丢失和系统停机的风险。