热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

互联网演变过程

互联网演变过程文章目录互联网演变过程1简介2第一时期3第一时期的后期阶段集群**读写分离****搜索引擎**缓存引入数据库拆分问题4第二时期(垂直架构)项目拆分解决的问题问题5第三
互联网演变过程

文章目录

  • 互联网演变过程
    • 1 简介
    • 2 第一时期
    • 3第一时期的后期阶段
      • 集群
      • **读写分离**
      • **搜索引擎**
      • 缓存引入
      • 数据库拆分
      • 问题
    • 4 第二时期(垂直架构)
      • 项目拆分
      • 解决的问题
      • 问题
    • 5 第三时期(分布式架构)
      • 分布式方案
      • 问题
    • 6 第四时期(流动式计算架构)
      • 调度中心
    • 7 第五时期 (微服务架构)
      • 问题
    • 8 总结
      • 优点
      • 缺点

1 简介

  • web1.0 时代

  • web2.0时代

  • 互联网时代

  • 云计算+大数据时代

    阿里Dubbo的演变也充分体现了互联网架构的演变

《互联网演变过程》

2 第一时期

单一应用架构(All in one) 所有模块在一起,技术也不分层

《互联网演变过程》

网站的初期,也认为是换联网发展的最早期,会在单机部署上所有的应用和程序。

所有的代码都是写在JSP里面,所有的代码都写在一起,这种方式成为 all in one。

特点:

  1. 不具备代码的可维护性
  2. 容错性差

容错性,是指软件检测应用程序所运行的原件或硬件中发生的错误并从错误中恢复能力,通常可以从系统的可靠性、可用性、可测性等几个方面衡量。
单体地狱:只需要一个应用,将所有功能部署在一起,以减少部署节点和成本。

3第一时期的后期阶段

解决方案

  1. 分层开发(提高维护性)【解决容错性】
  2. MVC架构(Web应用程序的设计模式)
  3. 服务器的分离部署

《互联网演变过程》

特点:

  1. MVC分层开发
  2. 数据库分离部署

问题:

随着用户的访问量持续增加, 单台应用服务器无法满足需求。

集群

集群:同一个业务,部署在不同服务器上。

《互联网演变过程》

特点:

  1. 项目采用多台服务器(集群)部署。

优点:

  1. 支持高并发。
  2. 支持高可用。

问题:

  1. Session如何共享。

    Redis Cluster集群方案

  2. 这些集群的服务器、用户的请求该往哪里转发。

    用nginx服务器来完成分发请求、实现负载均衡策略机制。

《互联网演变过程》

问题:

  1. 我们通过集群方案nginx+taomcat将应用层的性能进行有效的提升。但是数据库的负载能力慢慢增加。

    怎么来提高数据库层面的访问压力(负载)。

读写分离

《互联网演变过程》

读写分离:主从数据库之间的数据同步, Master负载增删改查、slave负责读写操作。

mysql本身提供master-slave的方式完成主从复制的功能。

搜索引擎

数据库做读库的情况下、数据库本身对模糊查询的功能支持并不是特别优秀,像电商类的网站,搜索是非常核心的功能模块。即使做了读写分离这个问题也不能解决电商网页查询(分词技术)等,针对于该问题,引入搜索引擎。

目前流行的搜索引擎: solr elasticsearch whoosh

《互联网演变过程》

缓存引入

随着访问量的持续增加,数据库的访问压力变的越来越大(虽然做了主从复制)。 对于这些热点数据(用户访问频繁的信息),如果每次都到数据库中进行查询。(很多通用查询的功能)放在内存中又不特别合适。(手机登录验证码操作、为了Ip限制频繁访问服务器)尝试使用Redis。

数据库拆分

垂直扩展能力有限, 单个表:10002万到1亿(单个表的数据能力终归有限)。

  • 垂直拆分 冷热数据。

  • 水平拆分 按照:时间、地区(按照业务逻辑拆分)

  • 分库分表:采用第三方数据库中间件:mycat sharding-jdbc

《互联网演变过程》

当前状态:

通过设计保证高可用、高并发

问题

  • 问题1:服务器价格。

  • 问题2:可维护性差。

  • 问题3:可扩展性差。

  • 问题4:协同发展不方便。

  • 问题5:单体架构。导致服务部署时,文件变的越来越大。

4 第二时期(垂直架构)

垂直应用架构

当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。

项目拆分

拆分项目拆分完成后对项目进行聚合,提出概念父工程(ssm_parent)

exam-parent
pom.xml 项目需要在依赖信息、在父工程中定义、子模块继承。
exam-commos
exam-pojo
exam-service
exam-web

利用Maven做的模块的拆分和聚合。

解决问题:

  1. 模块复用

  2. 解决服务器部署内容变小

垂直拆分:

将一个大的应用拆分成互不相干的几个小应用, 每个应用都是独立的Web项目部署。

《互联网演变过程》

解决的问题

  1. 维护性(如果想做需求变更,只需要调整该应用模块即可)。
  2. 功能扩展(随着业务的不断增加,只需要创建新的应用即可)。
  3. 协同开发方便。
  4. 性能扩展。(只需要对访问量大的服务器多部署几台)。

问题

  1. 随着业务的不断增加,各个模块交互频繁

5 第三时期(分布式架构)

分布式:将一个业务拆成多个子模块。

当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。

《互联网演变过程》

《互联网演变过程》

以前如果在同一台服务器(模块之间的调用)

通过上图发现,不同的应用在不同的服务器上,服务之间的调用(RPC)

分布式方案

  • RPC (Remote procedure call)Dubbo
  • HTTP – spring cloud

架构的改变一定会带来新的技术和问题。

问题

  1. 分布式事务
  2. 分布式锁
  3. 分布式session
  4. 分布式日志管理
  5. 当服务越来越多,服务之间的调用会变得非常混乱
  6. 当服务越来越多,容量的苹果,小服务资源浪费的问题也组件显现。

6 第四时期(流动式计算架构)

流动计算架构(SOA)

当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。

SOA(面向服务架构)

调度中心

服务中间件(Dubbo/Spring Cloud)

《互联网演变过程》

7 第五时期 (微服务架构)

微服务:单体应用拆分成互不相干的小应用,每一个小应用都被称为微服务。

问题

  1. 构建单体应用时(SSM xml 需要相应的jar)

    当拆分多个微服务时(需要进行大量的代码和配置)

    答:Springboot 简化代码的初始化架构和开发配置

8 总结

优点

  1. 服务拆分粒度变得更细。服务复用性强、提高开发效率。
  2. 根据需求自定义优化方案。
  3. 适合互联网项目(产品迭代快、开发效率快)。

缺点

  1. 微服务过多,服务治理成本高。
  2. 不利于服务部署 部署不方便 (Docker/k8s)。
  3. 技术难点增加(分布式事务、分布式锁、分布式日志)。
  4. 对团队要求过高(dubbo/spring cloud)。

推荐阅读
  • 构建LNMP架构平台
    LNMP架构的组成:Linux、Nginx、MySQL、PHP关于NginxNginx与apache的作用一样,都是为了搭建网站服务器,由俄罗斯人lgorsysoev开发,其特点是 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 本文介绍了Paxos的世界中关于复制日志与状态机的概念和重要性。通过存储日志来实现数据的持久化,并通过日志流来记录数据的变化,而不是直接持久化数据本身。这样做的好处是简化了持久化存储的操作,并且方便多机之间的数据同步。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • 本文总结了淘淘商城项目的功能和架构,并介绍了传统架构中遇到的session共享问题及解决方法。淘淘商城是一个综合性的B2C平台,类似京东商城、天猫商城,会员可以在商城浏览商品、下订单,管理员、运营可以在平台后台管理系统中管理商品、订单、会员等。商城的架构包括后台管理系统、前台系统、会员系统、订单系统、搜索系统和单点登录系统。在传统架构中,可以采用tomcat集群解决并发量高的问题,但由于session共享的限制,集群数量有限。本文探讨了如何解决session共享的问题。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 代理模式的详细介绍及应用场景
    代理模式是一种在软件开发中常用的设计模式,通过在客户端和目标对象之间增加一层中间层,让代理对象代替目标对象进行访问,从而简化系统的复杂性。代理模式可以根据不同的使用目的分为远程代理、虚拟代理、Copy-on-Write代理、保护代理、防火墙代理、智能引用代理和Cache代理等几种。本文将详细介绍代理模式的原理和应用场景。 ... [详细]
  • nginx 反向代理proxy参数讲解
    ![](http:i2.51cto.comimagesblog20180805c32a728954d93ee2a4e4fb59c150a15b.png?x-oss-processi ... [详细]
author-avatar
小菠萝
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有