一日,与一高手在茶馆聊天。他问道:在鞋厂剑派这两年,可习的什么高深的剑法?我不由一愣,细细想来,这两年每日练习的都是简单的劈砍动作和一些简练的套路。并没有去练什么高深的剑法。不过鞋厂剑派在江湖上也算小有名气战力不俗,也攻下了不小的山头,就连天下三大门派之一BB派也对我们的山头虎视眈眈。门派的头领们为何没让我们去练习高深的剑法?想来,我们打的是群架,而不是单挑。把每个练习简单招式的人放在一起,简单的招式组成的就是威力极大的剑阵。
剑阵才是一门神功。
剑阵也并非一开始就威力极大,也是由几个人简单的组合,经历生死攸关的战斗,才逐步发展而来。
这剑阵就是我们互联网公司大型的IT系统。
 
 
那怎样才算一个大型的IT系统呢?一个系统既要有大并发的用户访问,又有海量的数据才能算大型IT系统。
 
我们现在常用的大型IT系统都是从小系统开始,随着用户量和数据量的大幅增加一步一步发展而来。
 
最开始是最简单的系统架构,应用和数据库部署在同一台服务器上,比如:网站应用+数据库服务器或者面向App的Service+数据库服务器。
这种系统架构可以支撑每天几百到上万人的访问。
一、随着用户量和数据量的上升,单服务器的负载逐渐升高,这时候可以把数据库拆分到一台单独的服务器上。这样就能缓解系统的压力。
二、接下来应用服务器的负载又过高,这时候就要将应用服务器扩展为集群。通过2个手段:1,引入负载均衡设备,将请求均匀的转发到集群中的服务器上。2,引入Session Server 让用户感觉到是跟同一台服务器通讯。
三、后来数据库压力又变大。这个时候,可以将数据库进行垂直切分,就是按照业务单元,将数据库解耦。每个独立的业务数据,可以单独存放在一个数据库中。还有水平分表、读写分离等措施。这个时候公司可以搭建公司内统一的分布式数据访问层框架。
 
四、随着业务的飞速发展,系统无节制的变的臃肿庞大,大量的web service 的调用将我们的系统变成了一个蜘蛛网。质量越来越难以保证。故障频发,效率低下,团队人困马乏。
    这个时候就可以引入服务化框架,将系统拆小,重视系统分层,控制系统间的调用关系。
    采用消息系统来解决业务系统之间的强耦合问题。
五、使用软负载中心与集中配置管理来支撑服务化框架、消息系统、分布式数据访问层、所有应用的配置管理等。
六、另外构建大型互联网IT系统的其他要素:CDN、大型网站的存储系统(分布式文件系统、NoSQL、缓存系统)、搜索系统、数据计算支撑、发布系统、应用监控系统、依赖管理系统等等。
 
如图:
 

互联网公司IT系统架构进化之路的更多相关文章

  1. 从游击队到正规军:马蜂窝旅游网的IM系统架构演进之路

    本文引用自马蜂窝公众号,由马蜂窝技术团队原创分享. 一.引言 今天,越来越多的用户被马蜂窝持续积累的笔记.攻略.嗡嗡等优质的分享内容所吸引,在这里激发了去旅行的热情,同时也拉动了马蜂窝交易的增长.在帮 ...

  2. 大型网站系统架构演化之路【mark】

    前言 一 个成熟的大型网站(如淘宝.天猫.腾讯等)的系统架构并不是一开始设计时就具备完整的高性能.高可用.高伸缩等特性的,它是随着用户量的增加,业务功能的 扩展逐渐演变完善的,在这个过程中,开发模式. ...

  3. springcloud (一)系统架构演变之路

    演变过程 从传统架构(单点应用)→分布式架构(以项目进行拆分)→SOA架构(面向服务架构)→微服务架构 1 传统架构 其实就是ssh架构或者ssm架构,属于单点应用,把整个开发业务模块都会在一个项目中 ...

  4. QQ音乐PB级ClickHouse实时数据平台架构演进之路

    导语 | OLAP(On-Line Analytical Processing),是数据仓库系统的主要应用形式,帮助分析人员多角度分析数据,挖掘数据价值.本文基于QQ音乐海量大数据实时分析场景,通过Q ...

  5. Android之路-------浅淡Android历史、系统架构与开发特色

    前言 离上一篇发表的博客差不多有两个星期了吧,相信有些博友差点就对LP失望了,因为上一篇博文中说了,这次不管怎样,LP都会坚持写博客的. 由于工作关系LP才隔了这么久才再次发表博文,这篇博文主要是总结 ...

  6. HBase 学习之路(二)—— HBase系统架构及数据结构

    一.基本概念 一个典型的Hbase Table 表如下: 1.1 Row Key (行键) Row Key是用来检索记录的主键.想要访问HBase Table中的数据,只有以下三种方式: 通过指定的R ...

  7. 转:微信Android客户端架构演进之路

    转自: http://www.infoq.com/cn/articles/wechat-android-app-architecture 微信Android客户端架构演进之路 作者 赵原 发布于 20 ...

  8. 架构师之路-在Dubbo中开发REST风格的远程调用

    架构师之路:从无到有搭建中小型互联网公司后台服务架构与运维架构 http://www.roncoo.com/course/view/ae1dbb70496349d3a8899b6c68f7d10b 概 ...

  9. Java生鲜电商平台-商家支付系统与对账系统架构实战

    Java生鲜电商平台-商家支付系统与对账系统架构实战 说明:关于生鲜电商平台,支付系统是连接消费者.商家(或平台)和金融机构的桥梁,管理支付数据,调用第三方支付平台接口,记录支付信息(对应订单号,支付 ...

  10. 5G系统架构

    原文标题:迈向5G之路,颠覆性的5G系统架构?   本文部分图片,资料摘自<迈向5G C-RAN:需求.架构与挑战> 突如一夜春风来,随着Polar码与LDPC码作为5G编码候选方案,通信 ...

随机推荐

  1. Spring、SpringMVC的区别

    Spring是IOC和AOP的容器框架,SpringMVC是基于Spring功能之上添加的Web框架,想用SpringMVC必须先依赖Spring.简单点的话可以将SpringMVC类比于Struts ...

  2. K8s集群安全机制

    安全机制说明 k8s作为一个分布式集群管理的工具,保证集群的安全性是其一个重要的任务.API Server是集群内部各个组件通信的中介,也是外部控制的入口,,所以K8s的安全机制就是围绕保护API S ...

  3. Mybatis的几种传参方式

    前言 单个参数 多个参数 使用索引[不推荐] 使用@Param 使用Map POJO[推荐] List传参 数组传参 总结 单个参数 单个参数的传参比较简单,可以是任意形式的,比如#{a}.#{b}或 ...

  4. 数值分析之解线性方程组的直接方法 5.X

    矩阵 谱分解 设 \(\boldsymbol{A}=a_{i j} \in \mathbb{R}^{n \times n}\) , 若存在数 \(\lambda\) (实数或复数) 和非零向量 \(\ ...

  5. pytest框架插件源码_关于钩子方法调用部分的简单理解(pytest_runtest_makereport)

    前言: 因为想不明白写的pytest_runtest_makereport里的yield是怎么把结果传出来的?pytest是怎么调用的我们自己写的pytest_runtest_makereport方法 ...

  6. [学习计划]mysql常用语句-随学随整理

    <>   不等于 三元表达式 select *, if (num=1, "第一", "其他") as 别名 from 表 COUNT 统计总数并按某 ...

  7. 2022-06-01内部群每日三题-清辉PMP

    1.采购部门要求项目经理提供一个项目的招标文件.这些文件中应该包含哪些内容? A.变更请求 B.选择的卖方 C.质量测量指标 D.建议邀请书 2.作为一个大型组织中关键项目的组成部分,阀门制造业务被外 ...

  8. Lua中创建新的文件夹

    如下: os.execute('mkdir 文件夹名称')

  9. CentOS Linux release 7.6 zabbix5.0 安装

    # zabbix 安装关方文档 https://www.zabbix.com/cn/download?zabbix=5.0&os_distribution=centos&os_vers ...

  10. 优化多if和else语句

    可以利用对象来进行映射 比如 let type = this.radio_value if (type === 'whole') { this.time_value = [] } else if (t ...