写点什么

如何进行平台型网站架构设计?

  • 2009-10-26
  • 本文字数:1272 字

    阅读完需:约 4 分钟

在欧拉的“平台网站架构设计之我所见”的博客中,他从选择技术方案和物理架构、平台研发和架构优化等方面阐述了他在多年的平台型网站架构设计过程中的经验心得。

欧拉先是分析了在选择技术方案和物理架构中的几个常见问题,以来解决如何提高开发效率,使平台具有高性能、高负载性的问题:

开发语言和数据库:我个人觉的最关键是你和你的团队最擅长的开发语言和数据库是哪个,古语有云:“工欲善其事, 必先利其器!”,趁手的开发语言和数据库有助于事半功倍。试想如果你选择了一个并不很熟悉的语言,也许这个语言和数据库在基础性能上的确比你掌握的语言好,但是在研发过程中学习曲线肯定长。成熟框架还是自己实现:我个人的一些经验是,尽量使用开源的成熟框架,因为平台研发初期使用成熟的开源框架,能提高开发效率,并且在质量上有保证。我曾经接手过一个平台的改版,框架是前面开发人员自己写的,里面的一些设计思想不是很成熟,导致平台在负载增高后性能很差,整改起来很麻烦。

除此之外,Web Server/DB Server/Cache Server 的选择也是很重要的一点,欧拉认为这一部分一定要使用具有前瞻性、易配置、能监控和维护的产品,并提出几个选型的标准:丰富和深入的配置选项、基于高并发模型、支持负载均衡和请求分发、高效的缓存机制、实时的状态监控机制等。而对于操作系统的选择,则要稳定安全、易管理和维护、易监控等。对于物理架构,即服务器的搭建方式,欧拉同样认为前瞻性是非常重要的:

平台初期的话,我想大部分访问量都不高,Web Server/DB server/Cache Server 放在一台服务器上都没问题。但是自己心里最好能预估一下这个平台会发展到什么样的规模,在做架构设计的时候,按照事先预估的来决定怎么做物理架构,并为以后的架构升级做准备。说到这里,想到前百度架构师雷鸣说过的一句话,当你的会员数达到目前的 5 倍或 10 倍的时候,架构就要升级。

在实质性的研发过程中,需要注意的是平台网站研发的模式和传统 IT 项目研发的不同,以前是开发过程中要和客户、需求人员等打交道,而现在关注的是产品设计。对于平台网站研发项目的管理,欧拉推荐使用敏捷开发方法,通过设立短的发布周期进行迭代开发,并使用 JIRA 等成熟的项目管理系统进行管理等。对于团队研发需要注意的地方,欧拉总结如下:

  • 合适的开发工具;
  • 如何控制代码质量;
  • (根据)需要引入新框架;
  • 知识总结和培训。

对网站研发过程中的架构优化、存储和搜索等关键点,欧拉也分享了自己的经验,比如对于网站速度慢,而却又不知如何下手的问题,欧拉提出的解决方案是:

我的经验是从数据开始,从最外围开始画圈,找到源头。先从外围开始收集日志,比如 access_log 访问日志或 sql_log 数据库操作日志,找出访问最多的 10 条日志和执行时间最长的 10 条日志,然后根据日志去反查到底是什么引起的操作,然后一条条的解决。如果解决不了,那么就考虑重构。

在文章的最后,欧拉来分享了一些他认为有价值的资料,比如新型的大型BBS 架构(Squid+Nginx) Nginx 图片服务器的架构方案校内相册发展过程及核心技术分析爆料架构设计贵在务实大型网站架构不得不考虑的 10 个问题等。

2009-10-26 20:569017

评论

发布
暂无评论
发现更多内容

几种2022年流行的跨端技术方案的比较

Geek_99967b

小程序

物联网技术在物联网产业格局的分布与应用

AIRIOT

低代码 物联网 低代码,项目开发

如何搭建清晰易懂的数据看板?

字节跳动数据平台

字节跳动 BI BI 分析工具 sentinel dashboard 可视化看板

典型的数据湖应用案例

五分钟学大数据

数据湖 7月月更

Seata 多语言体系建设

SOFAStack

开源项目 seata 开源软件 多编程语言 项目共建

nacos注册中心之服务地址的查询

急需上岸的小谢

7月月更

王者荣耀商城异地多活架构设计

joak

openharmony萌新贡献指南

坚果

开源 HarmonyOS OpenHarmony 7月月更

学生思维VS职场思维

KEY.L

Baklib:分享一些关于建设企业知识管理(KM)的方法

Baklib

如何将 NFT 元数据从 IPFS 转移到智能合约中

devpoint

智能合约 NFT Metaverse 7月月更

连接无限·协同无界|融云首届全球企业通信云大会 WECC 来了

融云 RongCloud

通信云

IMPALA2.12环境安装

怀瑾握瑜的嘉与嘉

7月月更

DeFi 2.0的LaaS协议,重振DeFi赛道发展的关键

BlockChain先知

【刷题记录】15.三数之和

WangNing

7月月更

Linux并不是一个操作系统

冯亮

Linux GNU

React Native 跨端框架与小程序混编的方法

Geek_99967b

小程序

手把手带你体验Python实现人脸识别

迷彩

人脸识别 7月月更

文档协同工具推荐

Baklib

你的技术leader不懂这个?没有它就是没有设计的完成思考过程

田晓亮

方法论 架构设计

深度遍历:统计最高分的节点数目 🐟

空城机

算法题 7月月更

承上启下继往开来,Python3上下文管理器(ContextManagers)与With关键字的迷思

刘悦的技术博客

Python 数据库 Python3 上下文 上下文管理器

MySQL的锁(一)

技术小生

MySQL 7月月更

力扣第三题——无重复字符的最长子串

为自己带盐

力扣

Paper Time 回顾|MB2:为自治数据库建立行为模型

OceanBase 数据库

架构实战营第7模块作业

Geek_53787a

Docker 搭建 MySQL 主从复制

宁在春

MySQL Docker 主从复制 7月月更

👈🏻👈🏻👈🏻你来追我呀!Flutter 实现追逐动画

岛上码农

flutter ios 移动端开发 安卓开发 7月月更

论文领读|面向机器翻译的多语言预训练技术哪家强?最新进展一睹为快!

澜舟孟子开源社区

人工智能 自然语言处理 机器学习 后端 机器翻译

【Docker 那些事儿】容器监控系统,来自Docker的暴击

Albert Edison

Docker 云计算 Kubernetes 云原生 7月月更

如何进行平台型网站架构设计?_Web框架_霍太稳@极客邦科技_InfoQ精选文章