您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

网站架构变迁

时间:2020-05-08 10:39:48  来源:  作者:

网站架构变迁

Intro

从最早的 html 的学习到现在从单体应用迁移到微服务架构,所经历的网站架构也一直在变化,想写一篇关于网站架构变迁的文章。

单服务器

最早的我们的网站只有一台服务器,网站应用 + 数据库 + 网站文件 都在同一台服务器上,有的时候一台服务器上也会有多个网站。

这个阶段的服务器上除了 Web Server,还会装一个数据库服务器,网站文件一般是放在网站目录下保存的

网站架构变迁

 

数据库服务器 + 网站服务器

数据库和应用分离,数据库使用独立的数据库服务器,网站服务器上只有网站,不在安装数据库服务器。

一般的网站服务器的瓶颈在于内存和CPU,而数据库服务器瓶颈大多是在IO方面,所以分离之后对于网站服务器我们在扩容的时候可以更加关注于加大服务器内存,加多核处理器,而数据库服务器在可以更加关注于提高服务器 IO。

网站架构变迁

 

数据库服务器 + 网站服务器 + 文件服务器

这个阶段在上一阶段的基础上进一步把文件分离出来了,这样网站迁移起来就不需要再迁移网站上传的文件了,而且文件服务器升级的时候往往是提高存储的容量

网站架构变迁

 

网站集群 + 负载均衡

网站发展到一定的规模,我们就可能会遇到一些系统瓶颈,除了升级服务器的配置外,我们也可以做网站集群,因为单一服务器配置升级到一定程度之后再想升级成本就会很高,相比之下做网站集群性价比会更高一些,可扩展性更好,而且做集群的话可以防止单点故障导致网站不可用,

网站架构变迁

 

既然是集群,多台服务器同时工作就会遇到一个请求交由哪个服务来处理的问题,一般的我们会在网站集群前加一个负载均衡器,由负载均衡器根据一定的负载均衡算法选择要处理的网站服务器

网站架构变迁

 

网站集群 + 负载均衡 + 分布式缓存

上面我们引入了网站集群+负载均衡,对于服务器 Session 可以指定使用 IPHash 或类似的负载均衡策略,但是如果不支持 IPHash 类的负载均衡算法,就需要支持分布式 Session 的支持,一般的分布式的 Session 我们可以借助分布式缓存来实现,而且可能会有一些内存缓存,如果使用网站服务集群的话,就要考虑使用分布式缓存了,否则会导致数据的不一致,一台服务器的缓存数据更新了,其他的缓存数据还是旧数据,就会造成很多问题,所以分布式缓存就很有必要引入了

网站架构变迁

 

网站集群 + 负载均衡 + 分布式缓存 + 数据库读写分离

数据达到一定的规模之后,数据库容易成为系统的瓶颈,除了引入缓存来解决之外,我们可以让数据库做读写分离,读操作走从库,写操作走主库

网站架构变迁

 

服务化架构

上面的模式,对于网站应用来说,都是一个单体应用,从服务化架构开始,开始真正的从单体架构迁移到分布式架构

单体应用发展到一定程度,应用的复杂度越来越高,代码耦合度也会逐渐增加,从项目的角度来说,项目越来越大,项目维护也会变得越来越难,冲突也会越来越多,项目加载编译运行需要的时间也越来越长,从部署的角度来说,不同的 API 之间会相互影响,我只改了某一个 API 但是部署的话只能全部更新。

网站架构变迁

 

于是服务化就应运而生,服务化将原来的单体架构拆分成了分布式架构,每一个服务只负责自己相关的业务逻辑,每一个服务都是一个小单体

网站架构变迁

 

微服务架构

微服务架构 1.0

在服务化的基础上进一步演化出来了微服务架构,微服务是服务化的进一步发展,微服务是去 "ESB" 的更细致的服务化

“微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间相互协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务和服务之间采用轻量级的通信机制相互沟通(通常是基于HTTP的Restful API).每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构"---- Martin Fowler的博客

当项目进行服务化改造的时候,这个过程并不是一蹴而就,一拍脑袋就成功了。要把项目服务化,需要解决很多的问题,例如:

服务之间怎么调用?订单服务想要调用到商品服务的数据,怎么调用?怎么调用更加的稳定,更加高效?【服务调用技术】

服务之间怎么负载均衡?订单服务要调用商品服务,商品服务可能有很多个,怎么负载均衡【负载均衡技术】

服务怎么被管理?服务怎么定位?有故障了怎么处理?【服务注册与发现技术】

故障怎么监控?微服务系统中业务模块很多,组件也很多,不同组件的指标不同,那么这些组件怎么进行监控【监控技术】

故障怎么定位?微服务架构中,一个用户的请求会涉及到多个内部服务的调用,那么如何定位问题呢?【链路追踪技术】

日志怎么分析处理?业务模块多了,日志也就多了,直接查看日志文件已经变的不显示了,那么如何对日志进行分析查找呢?【日志分析技术】

权限管理?微服务拆分服务之后,会有很多服务对外暴露接口,这些接口如何进行统一的权限处理呢?【网关技术】

服务调用出现问题怎么处理?当一个服务因为各种原因停止响应时,调用方通常会等待一段时间,然后超时或者收到错误返回。如果调用链路比较长,可能会导致请求堆积,整条链路占用大量资源一直在等待下游响应。怎么解决呢?【服务熔断,降级,限流】

网站架构变迁

 


网站架构变迁

 


网站架构变迁

 

微服务架构 2.0

基于 Kubernetes + ServiceMesh 的云原生微服务架构

微服务 2.0 更多的注重服务的治理,2.0 阶段,微服务架构引入了 ServiceMesh(服务网格)的概念通过 SideCar(侧边车)的方式实现一些对应用无侵入的管理, 使得服务治理更加通用,借助 Service Mesh 可以更方便的管理服务间调用,更好的做流量控制等

追本溯源,服务网格从无到有可分为三个演化阶段(参见下图)。第一个阶段,每个服务各显神通,自行处理对外通讯。第二个阶段,所有服务使用统一的类库进行通讯。第三个阶段,服务不再关心通讯细节,统统交给边车进程,就像在TCP/IP协议中,应用层只需把要传输的内容告诉TCP层,由TCP层负责将所有内容原封不动的送达目的端,整个过程中应用层并不需要关心实际传输过程中的任何细节。

网站架构变迁

 


网站架构变迁

 


网站架构变迁

 

Kubernetes 让微服务更简单,使用 Kubernetes 就无需关注服务的注册发现了,服务部署自动服务注册发现,无需在应用代码里向服务中心注册,kubernetes 让微服务的缩放更为简单,你也可以配置根据应用的 CPU 等指数来实现应用的动态扩容,压力大的时候自动扩容,增加节点,压力小的时候自动缩放,减少服务节点。

网站架构变迁

 


网站架构变迁

 

More

一切脱离业务的架构设计,都是耍流氓。

架构不是一蹴而就的,架构是演化出来的。

笔者经验有限,文中如果有错误,还望指出,万分感谢

Reference

  • https://www.zhihu.com/question/37808426
  • https://www.zhihu.com/question/65502802
  • https://juejin.im/entry/5bd6846ee51d452f7110cfeb
  • https://zhuanlan.zhihu.com/p/35179248
  • https://www.infoq.cn/article/microservices-post-kubernetes

作者:WeihanLi



Tags:网站架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
网站架构变迁Intro从最早的 html 的学习到现在从单体应用迁移到微服务架构,所经历的网站架构也一直在变化,想写一篇关于网站架构变迁的文章。单服务器最早的我们的网站只有一...【详细内容】
2020-05-08  Tags: 网站架构  点击:(49)  评论:(0)  加入收藏
为了使网站这个虚拟的大建筑能够应对高并发访问,海量数据处理,高可靠运行等一系列问题,架构要素和分层架构是必不可少的,就犹如盖房子要用建筑材料一层一层盖一样。满山红网站...【详细内容】
2020-01-09  Tags: 网站架构  点击:(71)  评论:(0)  加入收藏
一、大型网站系统的特点高并发,大流量: 需要面对高并发用户,大流量访问,Google日均PV数为35亿,日均IP访问数为3亿,2011年腾讯QQ最大用户在线数1.4亿,淘宝2012年双11活动一天交易额...【详细内容】
2019-10-22  Tags: 网站架构  点击:(74)  评论:(0)  加入收藏
说道大型网站,就的先说大型网站的特点:高并发,大流量,高可用,海量数据等。下面就说说大型网站的架构演化过程吧。1、初始阶段的网站架构初始阶段都比较简单,通常一台服务器就可以...【详细内容】
2019-10-08  Tags: 网站架构  点击:(141)  评论:(0)  加入收藏
大型网站架构设计是一个循序渐进的过程,围绕“性能、可用性、伸缩性、扩展性、安全性”展开,下面是个人关于网站架构方面的一些总结,不到之处请大家多多批评。前端 CDN加速:CSS/...【详细内容】
2019-10-08  Tags: 网站架构  点击:(115)  评论:(0)  加入收藏
最常见的架构模式,将系统在横向维度上切分成几个部分,每个部分单一职责。网站一般分为三个层次:应用层、服务层和数据层,其具体结构如下图所示:...【详细内容】
2019-09-10  Tags: 网站架构  点击:(176)  评论:(0)  加入收藏
一、软件负载均衡概述硬件负载均衡性能优越,功能全面,但是价格昂贵,一般适合初期或者土豪级公司长期使用。因此软件负载均衡在互联网领域大量使用。常用的软件负载均衡软件有Ng...【详细内容】
2019-08-08  Tags: 网站架构  点击:(211)  评论:(0)  加入收藏
今天我们来谈谈一个网站一般是如何一步步来构建起系统架构的,虽然我们希望网站一开始就能有一个很好的架构,但马克思告诉我们事物是在发展中不断前进的,网站架构也是随着业务的...【详细内容】
2019-07-30  Tags: 网站架构  点击:(253)  评论:(0)  加入收藏
电商网站:高并发、集群、负载均衡、系统安全、海量数据、高可用、分布式。每一个特点都可能变成痛点!会给系统形成很大的压力,而SOA分布式架构刚好能解决这些问题。什么是SOA?SO...【详细内容】
2019-07-26  Tags: 网站架构  点击:(282)  评论:(0)  加入收藏
前言我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变。该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管理 交易模块:创建交易和管...【详细内容】
2019-06-17  Tags: 网站架构  点击:(351)  评论:(0)  加入收藏
▌简易百科推荐
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标...【详细内容】
2021-12-27  大数据架构师    Tags:架构   点击:(5)  评论:(0)  加入收藏
前言 单片机开发中,我们往往首先接触裸机系统,然后到RTOS,那么它们的软件架构是什么?这是我们开发人员必须认真考虑的问题。在实际项目中,首先选择软件架构是非常重要的,接下来我...【详细内容】
2021-12-23  正点原子原子哥    Tags:架构   点击:(7)  评论:(0)  加入收藏
现有数据架构难以支撑现代化应用的实现。 随着云计算产业的快速崛起,带动着各行各业开始自己的基于云的业务创新和信息架构现代化,云计算的可靠性、灵活性、按需计费的高性价...【详细内容】
2021-12-22    CSDN  Tags:数据架构   点击:(10)  评论:(0)  加入收藏
▶ 企业级项目结构封装释义 如果你刚毕业,作为Java新手程序员进入一家企业,拿到代码之后,你有什么感觉呢?如果你没有听过多模块、分布式这类的概念,那么多半会傻眼。为什么一个项...【详细内容】
2021-12-20  蜗牛学苑    Tags:微服务   点击:(9)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  青锋爱编程    Tags:后台架构   点击:(21)  评论:(0)  加入收藏
在了解连接池之前,我们需要对长、短链接建立初步认识。我们都知道,网络通信大部分都是基于TCP/IP协议,数据传输之前,双方通过“三次握手”建立连接,当数据传输完成之后,又通过“四次挥手”释放连接,以下是“三次握手”与“四...【详细内容】
2021-12-14  架构即人生    Tags:连接池   点击:(17)  评论:(0)  加入收藏
随着移动互联网技术的快速发展,在新业务、新领域、新场景的驱动下,基于传统大型机的服务部署方式,不仅难以适应快速增长的业务需求,而且持续耗费高昂的成本,从而使得各大生产厂商...【详细内容】
2021-12-08  架构驿站    Tags:分布式系统   点击:(23)  评论:(0)  加入收藏
本系列为 Netty 学习笔记,本篇介绍总结Java NIO 网络编程。Netty 作为一个异步的、事件驱动的网络应用程序框架,也是基于NIO的客户、服务器端的编程框架。其对 Java NIO 底层...【详细内容】
2021-12-07  大数据架构师    Tags:Netty   点击:(17)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  人月聊IT    Tags:架构   点击:(23)  评论:(0)  加入收藏
微服务看似是完美的解决方案。从理论上来说,微服务提高了开发速度,而且还可以单独扩展应用的某个部分。但实际上,微服务带有一定的隐形成本。我认为,没有亲自动手构建微服务的经历,就无法真正了解其复杂性。...【详细内容】
2021-11-26  GreekDataGuy  CSDN  Tags:单体应用   点击:(35)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条