上周没写东西,这周写点互联网系统开发中需要了解的技术点,每个点都可以发散出去,连接更多的知识点,打算做个逐步细化的记录。

一个应用的整个生命周期中(生,老,病,死)都需要有一个整体规划.

前期

评估需求,根据需求提炼出其中隐含的非功能性要求,做为容量评估的参考。一般就是大致估算一下,技术发展到现在,如果是聊天或游戏应用,随便一个服务器单机能能维持100W-160W左右的tcp长连接并进行通讯。所以普通的创业起步阶段的应用一般不必太担心设计问题,可以等业务量慢慢上来慢慢调整系统架构。

互联网上许多数不清的小系统上线就是在碰运气,在精益创业的指导下,为了测试业务模式,先弄个原型系统上了再说。有时没用户,用户多了又顶不住,要找一群外援专家来救火,也算是幸福的烦恼。有些移动应用作者自己也不知道为什么突然就火了,然后又快速消失在市场中。

前端系统设计模式

以http请求到达服务器的整个处理过程来说明。从服务器接收到http请求,在整个反应链路上直到打到最终数据库上,每个可能的瓶颈点上都有相应地技术来支撑性能上的优化。

负载均衡

如一个业务系统用户有五百万,需要根据活跃用户在业务的高峰时期估算最大http请求数量,根据请求量设计前端反向代理,负载均衡策略;这块要考虑常见(软/硬负载方式)反向代理设施的差异性(nginx,lvs,f5,haproxy)

Nginx

Nginx:HTTP层负载均衡,反向代理,跑遍全球的选择。由于工作在七层上,所以可以支持对http url级别的转发。随便在网上偶遇个bug可能都是曝出一个enginx bad gateway的错。

LVS

lvs:tcp/udp层负载均衡,由于工作在四层,面对的都是连接,处理的都是dst ip,port;src ip,port的东西。

常用的转发模式有DR(修改目标地址MAC),流量经过lvs,但ip包的返回不经过lvs,性能较好,lvs不会成为瓶颈。

NAT:网络包的进出都要经过lvs,对lvs的负载会比DR模式高。

为了除单点,lvs的高可用需要用keepalived做双机主备。

F5

硬件产品,价格昂贵,价格很容易上百万,有问题找厂家,其实这样有时找线上找问题反而受到制约。

http缓存

均衡器之后就是这里,这层级的缓存是为了减少应用服务器上大量静态小文件(css,js,jpg)的读取压力。可选的有varnish,squid等。

Squid:老牌产品,支持正向/反向代理缓存,作为可持久化缓存,可以支持较大的容量,有自有的内存页/磁盘页管理,有些cdn产品也是基于此产品改造。

Varnish:设计为内存缓存,内存管理由操作系统控制,对于无持久化需求的静态文件性能不错,如图片。

ngnix:扩展功能不错,也有个缓存模块,不过通常都是缓存自身的一些page。

Apache Traffic Server: Apache出品,也可作为一个不错的选择。

应用服务器

反向代理之后的应用服务器数量(tomcat,jetty)要考量应用服务器本身的处理能力,如常规tomcat基准数据是1000qps,这个只是tomcat在开nio情况下平均的水平。

其处理性能还受到应用程序内处理逻辑,如缓存的应用,服务化应用在应用间rpc的消耗的时间。

最后打在数据库上数据库上之前还有大把的活需要做,减少数据库的负担。
又十点多了,下次再继续吧。


文章来自微信平台「麦芽面包」。转载请注明。

web系统架构设计中需要知道的点(前端篇)相关推荐

  1. 插件式架构设计实践:插件式系统架构设计简介

    本系列博文将使用微软RIA技术解决方案Silverlight以及扩展性管理框架Managed Extensibility Framework(MEF),以插件式架构设计为导线,分享本人在从事基于微软S ...

  2. 大型系统架构设计-阿里淘宝天猫双十一数据库核心技术介绍

    目录 零.双十一是什么? 一.2013 双十一数据库指导思想 1.知己知彼,百战不殆 (1)如何做到知己 (2)如何做到知彼 2.平时多流汗,战时少流血 (1)真实环境压测之缓存穿透 (2)MetaQ ...

  3. 系统架构设计的工程与艺术(0)

    对于系统架构设计,我现在是功力不够,境界还凑合,俗称眼高手低是也.功力不够只能一点一点地练,一点一点的涨了,还不知道什么时候能有所小成.不过有境界也算是一件好事情,所以这个系列会先聊一聊境界方面. 之 ...

  4. ASPICE SYS.3 系统架构设计指导

    ASPICE SYS.3 系统架构设计指导 1. 系统需求分析与架构设计流程 2. 系统架构文档 2.1 系统概述 2.2 系统架构设计 3. 系统架构方案选型评估 3.1 目的 3.2 对系统整体的 ...

  5. 设计高性能大并发WEB系统架构注意点

    设计高性能大并发WEB系统架构注意点 第01:大型架构的演进之路 第02(上):分布式缓存 第02(下):分布式缓存 第03:分布式消息队列 第04:分布式数据存储 第05:分布式服务框架 第06:高 ...

  6. petshop4.0 具体解释之中的一个(系统架构设计)

    前言:PetShop是一个范例,微软用它来展示.Net企业系统开发的能力.业界有很多.Net与J2EE之争,很多数据是从微软的PetShop和Sun的PetStore而来.这样的争论不可避免带有浓厚的 ...

  7. 亿万级图数据库 Nebula Graph 的数据模型和系统架构设计

    Nebula Graph:一个开源的分布式图数据库.作为唯一能够存储万亿个带属性的节点和边的在线图数据库,Nebula Graph 不仅能够在高并发场景下满足毫秒级的低时延查询要求,还能够实现服务高可 ...

  8. petshop4.0 详解之一(系统架构设计)

    前言:PetShop是一个范例,微软用它来展示.Net企业系统开发的能力.业界有许多.Net与J2EE之争,许多数据是从微软的PetShop和Sun的PetStore而来.这种争论不可避免带有浓厚的商 ...

  9. PetShop的系统架构设计[转]

    <解剖PetShop>系列之一 前言:PetShop是一个范例,微软用它来展示.Net企业系统开发的能力.业界有许多.Net与J2EE之争,许多数据是从微软的PetShop和Sun的Pet ...

最新文章

  1. java查看对象锁级别_对象级别锁 vs 类级别锁(Java)
  2. Visual Studio的语言服务器协议
  3. HTML5 拖放、交换位置
  4. Leetcode--695. 岛屿的最大面积
  5. MySQL 事务(Transaction)篇
  6. 分享最新40款免费的 WordPress 主题(上篇)
  7. 面向机器学习的特征工程 七、非线性特征提取和模型堆叠
  8. eclipse中设置编码格式
  9. 斯坦福DAWNBench最新训练排名!华为云ModelArts用时10分28秒获全球最快
  10. 新式类与经典类的比较
  11. python双人格斗游戏代码_百行 HTML5 代码实现四种双人对弈游戏
  12. MariaDB安装报1067错误解决方式
  13. 高级UI-滤镜和颜色通道
  14. [CGAL]建立一个正四面体
  15. 2018年已经过了一半,你还记得年初时候定的小目标么——致已经逝去的2018上半年
  16. JavaWeb登陆成功后跳转到上一个页面
  17. 安装BT5 backtrack5 linux 无线网卡驱动
  18. 企业微信公众号内容写什么好?微信公众号如何选题?
  19. BAT的“江湖地位”毋庸置疑,但互联网公司这些奇葩绰号,你知道吗?
  20. python连接打印机打印文档、图片、pdf文件等

热门文章

  1. IDEA 中tomcat上面有个x 而且找不到配置tomcat的选项
  2. 怎么用js实现jq的removeClass方法
  3. java,关键字static
  4. 【CSS 】动画animation
  5. 【python cookbook】【字符串与文本】5.查找和替换文本
  6. python decode unicode encode
  7. asp.net 导出Excel 设置格式
  8. C#中发送消息给指定的窗口到消息循环
  9. Android 动态绘制曲线等各种图形
  10. nm命令中符号类型详解