互联网公司的架构演进过程

#### 单体应用架构

从单体应用架构发展到SOA架构,再到微服务架构,应用架构经历了多年的不断演进。

####  初生

在Web应用程序发展的早期,大部分的Web工程是将所有的功能模块打包到一起部署和运行。

在单体应用中,所有这些模块都集成在一起,这样的系统架构就叫做单体应用架构。

单体应用是最早的应用形态,开发和部署都很简单。

典型的技术是LAMP,即Linux、Apache、Mysql、PHP,但是PHP的性能并不是很好,随着网站业务的发展,越来越多的用户访问,这种架构的性能越来越差,越来越多的数据导致储存空间不足。这时候该怎么办呢?将应用服务与数据服务分离。

##### 应用服务与数据服务分离

在扩展的过程中,应用服务器需要更快更强大的CPU(处理大量的业务逻辑),数据库服务器需要更快的硬盘和更大的内存(快速磁盘检索和数据缓存),文件服务器需要更大的硬盘(存储大量用户上传的文件)。

不同的服务器承担不同的服务角色,提高了并发处理能力,扩大了数据存储空间,整个系统的性能会有较大提升。

可是随着用户增多,网站再次面临挑战。数据库压力太大导致访问延迟,进而影响整个网站的性能,用户体验感极差!这时候该怎么办呢?使用缓存提高性能。


##### 使用缓存改善性能

使用本地缓存速度会极快,但是空间有限,使用远程分布式缓存速度稍慢(相对本地缓存来说稍慢,但也很快了),但是可以按需扩展。常用的缓存组件是Redis、Memcache。

随着用户逐渐增多,单一应用服务器面临新的问题。能够处理的请求连接有限,在网站访问的高峰期,应用服务器成为整个网站的瓶颈。这时候该怎么办呢?使用应用服务器集群提高性能。

##### 应用服务器集群

使用应用服务器集群,可以有效改善网站的并发处理能力。

负载均衡服务器需要满足高性能、高并发处理能力。

使用缓存之后,虽然大大减轻了数据库的读压力,但是面临新的问题。有一部分读操作(缓存访问不命中、缓存过期)和全部的写操作要访问数据库,当用户达到一定规模后,数据库因为负载压力过高而成为整个系统的瓶颈。

这时候该怎么办呢?将数据的“读”和“写”分离,以此来提高性能。

##### 数据库读写分离

这里有一个数据访问模块,数据访问模块主要由以下三种来构建:①在MyBaits中开发插件;②Mycat;③Sharding-JDBC。

随着用户规模越来越大,分布地域越来越广,地域网络环境差别很大,如何保证用户的访问体验,不至于因访问慢而流失用户呢?可以使用反向代理和CDN加速。

##### 反向代理和CDN加速

反向代理和CDN加速(比如代理商)可以把静态资源缓存起来。

能够加快用户访问响应速度,减轻后端服务器的负载压力。

但是,随着用户量的增加,数据的积累,单文件服务器、单数据库服务器难以存下日益增长的数据。这时候该怎么办呢?我们可以使用分布式文件系统和分布式数据库系统。

##### 分布式文件系统和分布式数据库系统

随着业务的发展,数据的存储需求和检索需求越来越复杂,这时候面临的问题是:存储的字段差异过大,出现骷髅表(这里空一块,那里空一块);文本检索需要越来越复杂。

这时候该怎么办呢?可以使用NOSQL和搜索殷引擎。

##### 使用NOSQL、搜索引擎

搜索引擎用什么?Lucene、Solr、ElasticSearch.

NOSQL用什么?MongoDB、ElasticSearch

网站越做越好,业务不断扩大,越来越复杂,这时候应用程序将变得无比庞大,迭代周期越来越快,牵一发而动全身,怎么应对快速的业务发展需要?需要将业务进行拆分。

##### 业务拆分

如大型电商网站会将首页、商铺、订单、买家等拆分成不同的产品线,分归不同的团队负责,分成不同的应用,独立部署。通过链接、MQ、数据存储系统建立联系。

随着业务规模不断增大,应用拆分越来越小,越来越多,这时候应用间的关系越来越复杂,应用中存在大量相同的业务操作。同时后端的数据库要被成千上万台应用服务器连接,数据库连接的资源不足了。

#### 分布式架构:SOA架构和微服务架构

这时候需要采用分布式(服务化)的架构方法。

服务化的两种架构方式:SOA和微服务。

**开发方面**。在两种体系结构中,可以使用 不同的编程语言和工具开发服务,从而将技术多样性带入开发团队。开发可以在多个团队中组织,但是在SOA中,每个团队都需要了解常见的通信机制。另一方面,使用微服务,服务可以独立于其他服务运行和部署。因此,频繁部署新版本的微服务或独立扩展服务会更容易。

**“上下文边界”**。SOA鼓励组件的共享,而微服务尝试通过“上下文边界”来最小化共享。上下文边界是指以最小的依赖关系将组件及其数据耦合为单个单元。由于SOA依靠多个服务来完成业务请求,构建在SOA上的系统可能比微服务要慢。

**通信**。在SOA中,ESB可能成为影响整个系统的单一故障点。由于每个服务都通过ESB进行通信,如果其中一个服务变慢,可能会阻塞ESB并请求该服务。另一方面,微服务在容错方面要好得多。例如,如果一个微服务存在内存错误,那么只有该微服务会受到影响。所有其他微服务将继续定期处理请求。

**互操作性**。SOA通过消息中间件组件促进了多种异构协议的使用。微服务试图通过减少集成选择的数量来简化架构模式。因此,如果您想要在异构环境中使用不同协议来集成多个系统,则需要考虑SOA。如果您的所有服务都可以通过相同的远程访问协议访问,那么微服务对您来说是一个更好的选择。

**大小Size**。SOA和微服务的主要区别在于规模和范围。微服务架构中的前缀“微”是指内部组件的粒度,意味着它们必须比SOA架构的服务往往小得多。微服务中的服务组件通常有一个单一的目的,他们做得很好,另一方面,在SOA服务中通常包含更多的业务功能,并且通常将它们实现为完整的子系统。

我们不能简单地说一种架构比另一种架构更好。这主要取决于你正在构建的应用程序的目的。SOA更适合需要与许多其他应用程序集成的大型复杂企业应用程序环境。这就是说,小型应用程序不适合SOA架构,因为它们不需要消息中间件组件。而微服务架构,在另一方面,是更适合于较小和良好的分割,基于Web的系统。另外,如果你正在开发移动或Web应用程序,那么微服务作为开发人员可以为您提供更大的控制权。最后,我们可以得出结论,因为它们服务于不同的目的,微服务和SOA确实是不同类型的体系结构。

##### 大数据技术、监控、日志分析系统

再往后,需要什么了?

数据挖掘、分析、推荐等业务需求,庞大系统的监控。问题分析等需求。

##### 资源获取 

关注公众号“fairboylil”,后台回复“001”,获取高清图片及互联网架构演进PPT讲义。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352

推荐阅读更多精彩内容