当前位置: 首页 > news >正文

网站架构探索(1)---序言 王泽宾

    跟朋友聊天的时候,发现很多人对大型网站系统架构非常感兴趣,我也很感兴趣,经常会在家里2台笔记本和1台服务器组成的局域网环境里作些实验。我进入IT行业的时间,大约是97,98年吧,那时候PC客户端软件最为盛行,做软件开发是一份很体面也很喜欢的工作。我从Win3.1上的VC1.5开始一直到VC6.0,然后转为.Net开发,基本上都是从事客户端软件开发。本人的性格是危机意识向来严重,所以深感互联网必将盛行,传统软件必将走向没落,于是转向了WEB开发。记得以前去某Portal网站应聘的时候,主考官就问我:你认为客户端开发和互联网开发有什么不同。我当时的回答是:互联网开发比客户端软件开发简单多了,我再也不用考虑那么多的用户环境因素了,一点部署,何时何地都可用。

很多年过去了,我再想起当初我的回答,依然觉得那个回答是正确的。就产品开发层面来讲,互联网开发确实简单多了。这里首先澄清一个概念,我所说的互联网开发并不是指所有的B/S应用,例如B/S方式的银行内部业务系统。我所说的互联网应用是指在互联网上服务于公众的应用。企业级的业务系统,它的特点是业务逻辑是比较复杂的,但用户一般不太大;互联网应用则相反,业务逻辑一般很简单,但面对的是海量用户。

既然互联网应用开发的业务逻辑不复杂,但为什么大型网站都投入了那么多的技术人员呢?主要是因为运营的环境太复杂,这种复杂性形成的原因以下:

1、公开性

网站的服务是公开的,任何人都可以来访问,所以就会直接面对大量的不良用户,系统数据的安全面临很大的风险,一旦系统被攻入,结果将是灾难性的。

2、访问量大

访问量大,就意味着网站必须能够承受高并发大流量的考验,如果网站的服务能力和健壮性等达不到要求,你的系统就会被冲垮。

3、用户体验

用户体验要好,除了产品设计的因素之外,就要求访问网站的速度要快,具有高可用性,别用一会就挂。

 

网站各子系统如何进行部署,如何提高系统的健壮性和高可用性,如何实现网站的安全,如何提高访问速度,如何进行负载均衡,甚至于采用什么的硬件设备,另外,网站发展的不同时期会可能会采用不同的架构,如何实现架构的平滑过渡,如何使目前的架构具有弹性,具备可扩展的能力,这都是大型网站必须解决的问题,也是小网站成长过程中迟早会遇到的问题。我后面的文章将会逐步就这个话题展开。

网站机构包括网站的软件架构和系统架构两部分,软件架构主要是指子系统和逻辑层的划分结构;系统架构,一般是系统部署结构。

系统架构师的知识体系比较庞杂,所谓的见多识广,多数是由运维工程师成长起来的,他们开发能力不强,编码不多,但动手能力很强,脚本编写非常熟练,经常会做各种类型的实验,密切跟踪最新技术最新产品的相关信息。当然,一个大型的网站,需要一个架构师团队,他们各自承担擅长领域的架构设计,比如安全架构、存储架构等等。

我觉得一般的开发人员还是很难走上这条路的,这份工作需要经验,需要不断实践,但如果开发人员一旦走上了这条路,会有很大的发展,主要源于开发人员的思考习惯和技术的深度。我的这系列文章,开发人员可以作为参考,比如如何开发可分布式部署的系统,另外很多朋友都是身兼数职,从开发到实施,到部署全部包办。我个人深感精力有限,所以又特意找了几个朋友从Unix/Linux系统和Windows系统不同角度进行探索,以造福正在摸索中的朋友,有兴趣的朋友也可以参与。

其实,这部分内容我一直在写,比如php深度探索系列,写了大量的关于apache的内容,我已经大体把apache代码阅读了一遍,很费时间,进度缓慢,但我想这有助于我们理解apache的配置和调优。

转载于:https://www.cnblogs.com/wanghao72214/archive/2009/03/08/1406386.html

相关文章:

  • asp.net 给button 控件 换个背景图片
  • VSTDB
  • 数组、字节数组、转换等
  • C#基础概念
  • Rational Rose2003安装方法
  • 服务器安装
  • 验证码代码
  • 非常全面和深入的PHP介绍
  • 网站建设-如何选择
  • 如何在WebService中获取客户端的IP地址
  • 聚集索引和非聚集索引的根本区别(转)----收集下
  • Asterisk的sip呼叫测试(转帖)
  • 网站收集
  • sql语句说明
  • [转]数据库操作,内外联查询,分组查询,嵌套查询,交叉查询,多表查询,语句小结。...
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • angular2 简述
  • Docker容器管理
  • Javascript编码规范
  • Java比较器对数组,集合排序
  • Java的Interrupt与线程中断
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • Mybatis初体验
  • Mysql数据库的条件查询语句
  • Spring核心 Bean的高级装配
  • vagrant 添加本地 box 安装 laravel homestead
  • 关于extract.autodesk.io的一些说明
  • 机器学习中为什么要做归一化normalization
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 浅谈Golang中select的用法
  • 用element的upload组件实现多图片上传和压缩
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 白色的风信子
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (八)c52学习之旅-中断实验
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)jdk与jre的区别
  • .NET使用存储过程实现对数据库的增删改查
  • .Net中的设计模式——Factory Method模式
  • @Resource和@Autowired的区别
  • @WebService和@WebMethod注解的用法
  • [C++]四种方式求解最大子序列求和问题
  • [corCTF 2022] CoRJail: From Null Byte Overflow To Docker Escape
  • [CQOI 2010]扑克牌
  • [Eclipse] 详细设置护眼背景色和字体颜色并导出
  • [excel与dict] python 读取excel内容并放入字典、将字典内容写入 excel文件
  • [flink总结]什么是flink背压 ,有什么危害? 如何解决flink背压?flink如何保证端到端一致性?
  • [GXYCTF2019]禁止套娃