写点什么

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

  • 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:569351

评论

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

Android:这是一份全面&详细的-热修复-学习指南(1),统统给你解决

android 程序员 移动开发

云小课|大数据时代的隐私利器-GaussDB(DWS)数据脱敏

华为云开发者联盟

EI智能体 DWS数据脱敏 数据仓库服务GaussDB(DWS)

Code Review&编程习惯,安卓工程师面试题

android 程序员 移动开发

Android:知道类加载过程面试还是卡壳?干货总结,安卓运行内存监控

android 程序员 移动开发

Android:这是一份全面&详细的-热修复-学习指南,含泪狂刷Android基础面试118题

android 程序员 移动开发

ARouter源码详解,androidjni开发流程

android 程序员 移动开发

Python爬虫私活,代码公开!采集了20000+漫展历史数据,一言不合就开源

梦想橡皮擦

11月日更

cmake使用教程(九)-关于安卓的交叉编译,腾讯&字节&爱奇艺&网易&华为实习面试汇总

android 程序员 移动开发

CountDownLatch 源码分析示例,《Android面试题及解析》分享给大家

android 程序员 移动开发

SAP云平台运行环境Cloud Foundry和Neo的区别

汪子熙

云平台 SAP 11月日更

BottomSheetDialog 使用详解,设置圆角、固定高度,移动开发工程师

android 程序员 移动开发

cmake使用教程(三)-安装(1),kotlin入门项目

android 程序员 移动开发

cmake使用教程(三)-安装,程序员去大公司面试

android 程序员 移动开发

Code Review&编程习惯(1),安卓网络通信开发

android 程序员 移动开发

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

缘分呐

架构设计

kubernetes系列随笔02:docker技术原理

Geek_cd6rkj

Docker Kubernetes 容器

BindService的生命周期分析【我读源码你不读,我吃螃蟹你吃土(1)

android 程序员 移动开发

测试用例又双叒叕失败了,NLP帮你来分析

华为云开发者联盟

软件 测试 nlp 测试用例

Canvas加动画,实现火柴人跳绳效果,2021Android开发面试解答

android 程序员 移动开发

Coroutine 基本原理,吃透这份阿里P8纯手打Android面经

android 程序员 移动开发

ARouter系列2:源码分析,移动端跨平台开发

android 程序员 移动开发

BATJ面霸:程序员可是要改变世界呀!阿里巴巴3面,移动客户端开发岗面试题

android 程序员 移动开发

BAT常见Android面试20题详解,小白看完都会了

android 程序员 移动开发

Context都没弄明白,还怎么做Android开发?,靠着这份面试题跟答案

android 程序员 移动开发

AOP与OOP有什么区别,谈谈AOP的原理是什么,腾讯T2大牛亲自讲解

android 程序员 移动开发

ASM插桩--多线程运行监测,2021Android大厂面试经验分享

android 程序员 移动开发

BATJ面霸:程序员可是要改变世界呀!阿里巴巴3面(1),flutter下载文件

android 程序员 移动开发

BindService的生命周期分析【我读源码你不读,我吃螃蟹你吃土

android 程序员 移动开发

CAS机制详解,android开发基础知识点

android 程序员 移动开发

cmake使用教程(一)-起步,移动应用开发就业

android 程序员 移动开发

Dagger2入门系列一:基础使用,从基础到源码统统帮你搞定

android 程序员 移动开发

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