高性能web系统的架构和系统优化

简介: 原文:高性能web系统的架构和系统优化     07年毕业一直都在软件公司,14年来到一个互联网公司,给我的感受,区别主要在于:      软件公司需求相对稳定,能够按照计划按部就班的去实施,互联网公司需求相对来说不稳定,上线比较着急,大部分都是小迭代更新,且更新频繁,感觉有点乱。
原文: 高性能web系统的架构和系统优化

     07年毕业一直都在软件公司,14年来到一个互联网公司,给我的感受,区别主要在于:

     软件公司需求相对稳定,能够按照计划按部就班的去实施,互联网公司需求相对来说不稳定,上线比较着急,大部分都是小迭代更新,且更新频繁,感觉有点乱。所以项目管理在软件公司比较好执行,一开始可能有点混乱,但是只要是走上一两个迭代,就可以稳定的往前走,在互联网公司应用比较困难。美其名曰敏捷开发,就是为了给自己找一个不稳定的借口。

     目前的公司是一家电商公司,在互联网如火如荼的双11也能体验一把,在增加订单量的同时,也给软件带来了更大的挑战,软件架构就像一个人的心脏,汽车的发动机,如果系统的架构出了问题,这笔债迟早是要还的,08年奥运会抢票系统,聚美优品等在高并发的情况下都出现过宕机的情况,后来都对架构进行了改进。

说到软件架构,可能每个人都有不同的理解,但大致上分为两类:

  • 组成派

软件系统的架构将系统描述为计算组件及组件之间的交互。

计算组件是泛指的,可以进一步细分为处理组件,数据组件,连接组件可以是子系统,框架,模块,类等不同粒度的软件单元

  • 协作派

软件架构包含了关于一下问题的重要决策,对关键问题进行决策。

软件架构并不仅仅注重软件本身的结构和行为,还组中其他特性,使用,功能性,性能,弹性,重用,可理解性,经济和技术的限制的权衡。

下面我将从以下几个方面来谈一下如何建立高性能的web系统:

一、web系统架构

web系统架构图:

二、web系统优化

1、 网站前端的优化

  • 建立web 集群

      反向代理服务器工作在HTTP层,类似代理服务器,与普通的代理服务器不同的是,服务器在代理的后端,而不是客户端在代理的后端,可以考虑使用 eginx做反向代理服务器实现 web 服务器的负载均衡。

 

  • Css放到head 之间,js放到页面的最下面。

      因为页面的加载是从上往下的顺序执行的,js文件在加载的时候会阻塞页面的执行,所以放到页面最下面可以先看到页面的内容,再去加载相应的js文件。

  • Css和js文件要合并和压缩。

     因为浏览器的连接数是有限的,如果css 和 js 文件过多会导致浏览器的延迟等待。

  • 使用独立的图片服务器和网站域名。

     可以提高网站的并发能力。

  • 网站的频道用独立的二级域名。
  • 多个小图标可以考虑放到一个大图片上,然后用css 定位取到相应的内容
  • CDN 内容分发

     对于像js,css,image, html  等静态内容可以做内容分发,可以把用户定位到最近的服务器上面。

  • 减小cookie 的大小

     因为页面每一个的回传都会把cookie文件提交过去,如果cookie 过大会浪费过多的网络资源。

  • 网站动静文件分离

     把静态文件放到一个独立的服务器上,可以考虑用eginx web服务器,eginx 静态文件的处理速度非常快,不是iis 所能比的。

  • 页面内容进行压缩

     页面内容要进行压缩,较少网络传输的压力,可以考虑用Gzip压缩。

  • 对页面进行缓存

     因内容而异,如果是不经常改变的内容,设置缓存的时间要长一些,从而减少服务器的压力。

  • 不要使用iframe 控件

     iframe 会阻碍页面的执行,最好不要使用,况且也不利于搜索引擎的收录。

  • 页面的html标签不要放到一个大标签里面

     因为一个标签在结束之前是不会呈现内容的,如果都把页面的内容都到一个表格中,只有到</table> 表格中的内容才会显示出来。

2、 后台的优化

  • 使用缓存

     建立多级别的缓存策略,可以考虑先单机缓存,然后再考虑分布式缓存。分布式缓存可以考虑使用 memcached 或者 redis,redis 提供了更多的存储类型,并支持数据写入磁盘的功能。

  • 网站考虑使用消息队列

     消息队列可以对系统进行解耦,并可提高系统的处理能力,减少数据库的压力。如果是微软路线可以考虑用MSMQ。

  • 业务处理层不要使用单例模式

     因为单例模式的话,会阻碍多线程和多核系统的处理,降低系统的吞吐量和处理能力。

  • Stringbulder 代替 string

     如果字符串内容多的话,考虑使用Stringbulder 增加字符串的处理能力。

3、 数据库的优化

  • 数据库读写分离

      这种方式是指利用数据库的复制或镜像功能,同时在多台数据库上保存相同的数据,并且将读操作和写操作分开,写操作集中在一台主数据库上,读操作集中在多台 从数据库上,对于读取比写更多的站点适合使用这种方式。

  • 使用分区表

     表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。提高数据库的查询性能。

  • 分库分表

     划分不同的业务模块放到不同的数据库上,如 订单库、会员库、商品库等。

  • 建立合适的索引

     在经常查询或分组的列上,建立相应的索引来提高查询性能。

 

目录
相关文章
|
4月前
|
SQL 前端开发 关系型数据库
如何开发一套研发项目管理系统?(附架构图+流程图+代码参考)
研发项目管理系统助力企业实现需求、缺陷与变更的全流程管理,支持看板可视化、数据化决策与成本优化。系统以MVP模式快速上线,核心功能包括需求看板、缺陷闭环、自动日报及关键指标分析,助力中小企业提升交付效率与协作质量。
|
3月前
|
数据采集 机器学习/深度学习 运维
量化合约系统开发架构入门
量化合约系统核心在于数据、策略、风控与执行四大模块的协同,构建从数据到决策再到执行的闭环工作流。强调可追溯、可复现与可观测性,避免常见误区如重回测轻验证、忽视数据质量或滞后风控。初学者应以MVP为起点,结合回测框架与实时风控实践,逐步迭代。详见相关入门与实战资料。
|
3月前
|
存储 缓存 安全
某鱼电商接口架构深度剖析:从稳定性到高性能的技术密码
某鱼电商接口架构揭秘:分层解耦、安全加固、性能优化三维设计,实现200ms内响应、故障率低于0.1%。详解三层架构、多引擎存储、异步发布、WebSocket通信与全链路防护,助力开发者突破电商接口“三难”困境。
|
3月前
|
前端开发 JavaScript BI
如何开发车辆管理系统中的车务管理板块(附架构图+流程图+代码参考)
本文介绍了中小企业如何通过车务管理模块提升车辆管理效率。许多企业在管理车辆时仍依赖人工流程,导致违章处理延误、年检过期、维修费用虚高等问题频发。将这些流程数字化,可显著降低合规风险、提升维修追溯性、优化调度与资产利用率。文章详细介绍了车务管理模块的功能清单、数据模型、系统架构、API与前端设计、开发技巧与落地建议,以及实现效果与验收标准。同时提供了数据库建表SQL、后端Node.js/TypeScript代码示例与前端React表单设计参考,帮助企业快速搭建并上线系统,实现合规与成本控制的双重优化。
|
4月前
|
人工智能 监控 测试技术
告别只会写提示词:构建生产级LLM系统的完整架构图​
本文系统梳理了从提示词到生产级LLM产品的八大核心能力:提示词工程、上下文工程、微调、RAG、智能体开发、部署、优化与可观测性,助你构建可落地、可迭代的AI产品体系。
664 51
|
3月前
|
机器学习/深度学习 人工智能 缓存
面向边缘通用智能的多大语言模型系统:架构、信任与编排——论文阅读
本文提出面向边缘通用智能的多大语言模型(Multi-LLM)系统,通过协同架构、信任机制与动态编排,突破传统边缘AI的局限。融合合作、竞争与集成三种范式,结合模型压缩、分布式推理与上下文优化技术,实现高效、可靠、低延迟的边缘智能,推动复杂场景下的泛化与自主决策能力。
339 3
面向边缘通用智能的多大语言模型系统:架构、信任与编排——论文阅读
|
3月前
|
人工智能 自然语言处理 安全
AI助教系统:基于大模型与智能体架构的新一代教育技术引擎
AI助教系统融合大语言模型、教育知识图谱、多模态交互与智能体架构,实现精准学情诊断、个性化辅导与主动教学。支持图文语音输入,本地化部署保障隐私,重构“教、学、评、辅”全链路,推动因材施教落地,助力教育数字化转型。(238字)
|
4月前
|
消息中间件 数据采集 NoSQL
秒级行情推送系统实战:从触发、采集到入库的端到端架构
本文设计了一套秒级实时行情推送系统,涵盖触发、采集、缓冲、入库与推送五层架构,结合动态代理IP、Kafka/Redis缓冲及WebSocket推送,实现金融数据低延迟、高并发处理,适用于股票、数字货币等实时行情场景。
504 3
秒级行情推送系统实战:从触发、采集到入库的端到端架构
|
3月前
|
缓存 运维 监控
Redis 7.0 高性能缓存架构设计与优化
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Redis 7.0高性能缓存架构,探索函数化编程、多层缓存、集群优化与分片消息系统,用代码在二进制星河中谱写极客诗篇。
|
3月前
|
存储 人工智能 搜索推荐
拔俗AI助教系统:基于大模型与智能体架构的新一代教育技术引擎
AI助教融合大语言模型、教育知识图谱、多模态感知与智能体技术,重构“教、学、评、辅”全链路。通过微调LLM、精准诊断错因、多模态交互与自主任务规划,实现个性化教学。轻量化部署与隐私保护设计保障落地安全,未来将向情感感知与教育深度协同演进。(238字)