大型网站架构演进的五大阶段盘点

news/2024/5/20 21:20:54/文章来源:https://blog.csdn.net/X5fnncxzq4/article/details/86697919

点击上方“芋道源码”,选择“设为星标”

做积极的人,而不是积极废人!

源码精品专栏

 
  • 精尽 Dubbo 原理与源码 69 篇

  • 精尽 Netty 原理与源码 61 篇

  • 中文详细注释的开源项目

  • Java 并发源码合集

  • RocketMQ 源码合集

  • Sharding-JDBC 源码解析合集

  • Spring MVC 和 Security 源码合集

  • MyCAT 源码解析合集

来源:http://t.cn/Etv9erU

  • 阶段一 从PHP 到Java

  • 阶段二 分布式改造

  • 阶段三 无线化改造

  • 阶段四 中台改造

  • 阶段五 国际化


一个创业公司起步时很可能就两台机器,一台Web 服务器、一台数据库服务器,在一个应用系统中集成了所有功能模块,但随着业务的发展、流量的增长,单应用远远不能满足业务需求。

下面我们一同来聊聊网站架构发展所经历的几次主要演进,包括:从PHP 到Java 的改造、分布式改造、无线化改造、中台的改造、国际化改造。

阶段一 从PHP 到Java

很多网站早期都是基于Linux+Apache+MySQL+PHP 架构的网站,从当时来看,这种非常流行的个人网站架构的确也非常匹配当时的发展状态。PHP 语言的特性是快速发布,从页面渲染到数据库访问,均可以在一个页面里全部搞定。

即使放到今天,这种架构仍然还有很多人在用,它的优点就是非常简单高效,但缺点也非常明显:扩展性和分布式不好,不适合企业级的、复杂业务逻辑的大规模协同开发。

随着网站的发展,大家觉得应该将PHP 切换到Java。为什么要切换到Java 语言呢?一般来说,企业选择开发语言会有如下考虑。

(1)语言本身的特性。每种语言开发出来都有它的特性和所适合的场景,像Python、PHP 这类脚本语言非常适合快速简单的开发方式,而Java 则比较适合构建复杂业务逻辑的企业级开发,但是开发效率会比PHP 要差一点。

(2)程序员队伍。企业选择何种开发语言,还要看市场上的人才队伍是不是足够,是不是有很高层次的人才。是否有高层次的人才,取决于当前的行业老大是不是也在用这种语言,比如当前的顶级互联网公司如果在用Java,那么自然这些公司的Java人才比较多,这样,他们的经验可以被快速复制到其他公司中。

(3)语言所对应的工具生态是否完善。一个语言是否有生命力,要看这个语言对应的生态工具是否完善,它的社区是否活跃。因为我们要用到各种工具,而我们也不可能自己去写每种工具,因此,是否能方便地利用开源工具,快速提升开发效率也是非常关键的。像现在很多大公司开源了很多Java 的中间件产品,这些中间件可以直接拿来使用,就不需要再重新开发了。

综合以上因素,电商网站选择Java 语言作为主要的系统开发语言是非常合适的。

从PHP 切换到Java 后,整个网站采用WebX+EJB+iBatis+JBoss+Oracle(后面又将EJB 改成Spring)的架构,但是随着业务量的不断增大,存储层的瓶颈暴露出来。

为了解决存储问题,就逐渐用上了非常昂贵的IBM 小型机、Oracle 的数据库以及EMC的高端存储(IOE);并对数据库做了分库的拆分,分布式缓存(Tair)也随之诞生,分布式文件系统TFS 开始出现,CDN 也慢慢建立了。

阶段二 分布式改造

所谓分布式改造,就是尽量让系统无状态化,或者让有状态的信息封装在一定范围内,以免限制应用的横向扩展。简单来说,就是即便某个应用的少数服务器“宕”掉,也不会影响整体业务的稳定性。

要实现应用的分布式改造必须先解决以下几个问题。

(1)把应用微服务化:即将大量粗粒度的应用逻辑拆小,做服务化改造。

(2)必须先建立分布式服务框架。必须具备分布式RPC 框架、异步消息系统、分布式数据层、分布式文件系统、服务的发现、注册和管理。

(3)必须要解决分布式Session 问题。

为了做业务的服务化改造,我们大量拆分了当时的业务系统,形成了商品中心、交易中心、用户中心、店铺中心。这些服务作为底层服务供上层的前台系统调用,此时的系统架构变成了下面的形式。

640?wx_fmt=jpeg

现在来看,系统的分布式改造为网站接下来5 年的发展奠定了很好的基础,整个网站的扩展性非常好。几乎每个初创企业都必须经历一次分布式化的改造,才能为企业的长期发展奠定基础。笔者前面提及的几个重要的中间件产品和关键的分布式Session 等技术在《深入分析Java Web 技术内幕(修订版)》一书中有详细的介绍,感兴趣的读者可以自行去学习了解。

阶段三 无线化改造

到了2013 年,无线技术已经非常火爆了。在此之前,无线的业务总是跟着PC 走,基本上是PC 做好后无线再复制一份,而且无线和PC 还不是同一个前台系统,导致一个功能要做两遍,并且无线部门的开发人员本来就不多。这些给业务的发展带来很多问题。因此2013 年底,启动了All in 无线项目,目标就是用一套系统、一套架构快速支撑多端的个性化,并在服务端做了很多模块化和组件化的改造。

随着无线技术的发展,我们也开始尝试一些新技术,最具代表性的就是Node。

Node 在业界很火,前端同学非常推崇,而且它也大幅提升了前端的开发效率和体验。

目前大家也多方尝试使用Node 技术,并且用在一些业务线上。但是,从今天来看,Node 并没有达到我们想象中的发展前景。这其中有多种原因,本书的后续章节会专门介绍网站的无线化改造实践,也将分享Node 在实际使用中的一些思考。

经过无线化改造的应用系统架构如图。

640?wx_fmt=jpeg

阶段四 中台改造

中台这个概念早期是由美军的作战体系演化而来,技术上的“中台”主要是指学习这种高效、灵活和强大的指挥作战体系。电商经过十几年的发展,组织已经庞大而复杂,业务不断细化拆分,也导致野蛮发展的系统越来越不可维护,开发和改造效率极低,也有很多新业务不得不重复造轮子,所以中台的目标是为了解决效率问题,同时降低创新成本。

阶段五 国际化

国际化一般会有两种思路:一种是一套原始代码部署到多个地方,各地的系统基本没有什么关联、保持相互独立,每个地方再根据本地实际情况做一些个性化的定制。一般来说,会精简原始代码,减少不必要的依赖。这种思路在一些跨国公司用得比较多,但是这个对技术要求比较低。

另一种思路就是我们所说的国际化,它主要是解决如何将一套系统部署到多地的问题。一般国际化有两个发展阶段:第一个阶段是在国内实现了交易的单元化;第二个阶段是实现了中美的跨国部署。

国际化的本质仍然是要解决以下的通用问题:多语言问题、多时区问题、数据路由问题、全球数据的同步与复制问题。

本文摘自《大型网站技术架构演进与性能优化》一书前言,作者许令波 ,电子工业出版社6月出版。

罗马不是一天建成的,能够支撑亿级交易量的大型网站也不是一蹴而就的。作者以一名亲历者的身份,阐述了一个大型网站在数年时间内从雏形成长为巨人时所经历的技术选型思考、方案选择,以及遇到的众多性能瓶颈和优化方案。

本书要表达的内容并不是简单罗列所做过的事情,而主要是帮助读者了解当网站遇到类似问题时,应如何思考不同的解决思路、为什么要这样做、如何做出最终的方案选择……




欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

640?wx_fmt=jpeg

已在知识星球更新源码解析如下:

640?wx_fmt=png

640?

640?


如果你喜欢这篇文章,喜欢,转发。

生活很美好,明天见(。・ω・。)ノ♡

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_827965.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初步了解网站压力测试工具

http://www.51testing.com/html/index.html(51测试网) 一、ab网站压力测试 ab是apache自带的压力测试工具,ab是apachebench命令缩写。它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。…

用户在电商网站中购买成功了,那么 TA 在微服务中经历了什么?

点击上方“芋道源码”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏 原创 | Java 2019 超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数据库…

Python采集网站随机header

不废话直接代码: import randomclass UserAgent:def __init__(self):self.headers ["Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36","Mozilla/5.0 (Macintosh; Intel Mac OS X…

分享Html模板5合一模板---50电影模板、56个游、86个体育项目、95个音乐网站、116个时尚

模板下载链接:https://pan.baidu.com/s/1zNvc5K8tpWbxAKuIziGgjg 密码:agk4 50电影模板Html模板! 56个游戏Html模板 86个体育项目Html模板 95个音乐网站Html模板 116个时尚Html模板 我就不相信没有你需要的! 50电影模板Html模板! 儿童…

《大型网站系统与Java中间件》读书笔记(上)

前言 只有光头才能变强。 文本已收录至我的GitHub仓库,欢迎Star:github.com/ZhongFuChen… (想自学习编程的小伙伴请搜索圈T社区,更多行业相关资讯更有行业相关免费视频教程。完全免费哦!) 一、为什么分布式&#xff…

《大型网站系统与Java中间件》读书笔记 (中)

前言 只有光头才能变强。 文本已收录至我的GitHub仓库,欢迎Star:github.com/ZhongFuChen… 回顾上一篇: 《大型网站系统与Java中间件》读书笔记(一) 这周周末读了第四章,现在过来做做笔记,希望…

利用node.js写爬虫 爬取某相亲网站全部交友信息

点击查看爬取世纪佳缘相亲交友信息 利用node.js,写了一个爬虫js。1个小时左右的时间,便爬取了2000多条交友信息,包括网名,年龄,图片,学历,工资等。当然,爬取的速度和网速有很大的关…

分享21个广告排行、15个交友会员、25个网站导航和39个文件管理PHP源码,总有一款适合你

链接:https://pan.baidu.com/s/1aMHf6wDNbHm-2upU287w2A 提取码:px8q 分享21个广告排行、15个交友会员、25个网站导航和39个文件管理PHP源码,总有一款适合你 下面是文件的名字,我放了一些图片,文章里不是所有的图主要…

支付宝记---电脑网站支付(.NET)

根据商品信息和价格生成支付宝支付的二维码 2019年夏,张渔歌仄伏于家中。越明年,疫情依旧,渔歌隧研究支付宝支付。其中心酸不言表,属予作文以记之。 一、准备工作 1、支付宝开发平台https://open.alipay.com/。需要进行企业级的…

Web Monitor/Dev/Test Tool Collection 网站/网页监控/开发/测试工具集合

HttpWatch HttpWatch是强大的网页数据分析工具. 包括网页摘要.Cookies管理.缓存管理.消息头发送/接受.字符查询.POST 数据和目录管理功能.报告输出. Features: Easily monitor HTTPS, HTTP and SPDY without using proxies or changing network settingsSupports IE/Firefox on…

Java 爬虫遇到需要登录的网站,该怎么办?

这是 Java 网络爬虫系列博文的第二篇,在上一篇 Java 网络爬虫,就是这么的简单 中,我们简单的学习了一下如何利用 Java 进行网络爬虫。在这一篇中我们将简单的聊一聊在网络爬虫时,遇到需要登录的网站,我们该怎么办&…

【Python】Flask+Gunicorn搭建简单网站

1.安装Flask第三方库 pip3 install Flask 2.创建Flask应用程序 项目结构如上图所示,其中static用来放置静态文件,如js文件、css文件以及图片等,templates文件夹用来放置模板文件,即html文件。 在项目中导入Flask第三方库&#…

【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器

一、反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请…

css3和html5网站模板

过去的几年,网页设计和制作人员就已开始关注和使用 HTML5 了,如今 HTML5 得到了更加广泛的应用,国外已有很多基于 HTML5 制作的网站。所以,今天这篇文章给大家带来的是35款基于 HTML5 和 CSS3 的非常精致的网站模板,大…

分享88个ASP.NET企业网站源码,总有一款适合您

分享88个ASP.NET企业网站源码,总有一款适合您 88个ASP.NET企业网站源码下载链接:https://pan.baidu.com/s/1AXv0-dmV-bV-MQTyX9OXRg?pwdzcwa 提取码:zcwa Python采集代码下载链接:采集代码.zip - 蓝奏云 新翔绩效考核系统基…

分享69个ASP.NET企业网站源码,总有一款适合您

分享69个ASP.NET企业网站源码,总有一款适合您 69个ASP.NET企业网站源码下载链接:https://pan.baidu.com/s/1lOmnWD83XkU29_Ix-ldVYQ?pwds9q9 提取码:s9q9 Python采集代码下载链接:采集代码.zip - 蓝奏云 AutoWeb建站王.NET企…

Google网站管理员工具的新功能

近日,Google网站管理员工具(原Google Sitemap)进一步扩展了其功能,可以更有效地帮助用户分析网站中可能存在的问题以及如何更有效地进行对网站的优化。详细信息请参见Google Webmaster Central官方Blog中的说明。其中较引人注意的便是如今在Google网站管…

linux网站搭建实例

我们知道windows网站搭建一般是:IISAspSqlserver,而linux网站搭建是:ApachephpMysql。两者之间个有千秋,但是为什么我们许多的门户网站搭建都选择linux—apachephpmysql呢?当然是其的安全性了,Apache 是世界…

一个可以动态创建响应动画GIF的网站,AjaxLoad

呵呵,使用Ajax做Web开发的必备品看看样式:呵呵,还有许多样式,如果你想要,可以到这个网站自己生成喔http://www.ajaxload.info/