【架构】互联网应用开发架构演进历程

这篇具有很好参考价值的文章主要介绍了【架构】互联网应用开发架构演进历程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景

首先我们了解下计算机软件的发展历史,大概总结概括,分为c/s时代,web1.0时代和web2.0时代。

  • c/s时代:富客户端方案。卖软件可赚钱。​例如 qq、影音、游戏。

  • 1.0时代:主要是单向信息的发布,即信息门户—广大浏览器客户端​ ,互联网内容是由少数编辑人员(或站长)定制的。

    表是三大门户,新浪/网易/搜狐。新浪以新闻+广告为主,网易拓展游戏为主,搜狐延伸门户矩阵​​

  • 2.0时代:注重用户的交互。每个人都是内容的供稿者。 RSS订阅扮演一个很重要的作用。​​

例如:博客、播客、维基、P2P下载、社区、分享服务

【架构】互联网应用开发架构演进历程

时至今日,互联网的形式演变已经变成全员参与,老少皆宜的活动。因此,互联网相关的技术也是要求越来越高,参与人数的增加也让系统的负担越来越大。

二、技术架构演进史

以下为2017年天猫双11的交易指标。那么大的数据量,那么快的处理请求,显然单台机器,单个服务绝对是无法支撑的。

【架构】互联网应用开发架构演进历程
那么怎么办呢,我们将原本单台部署,单台处理的服务,需要进行拆分以及部署到不同的服务器中去,使其用多台机器去处理,分担压力。但是我们又要保证系统的完整性。这就是分布式的设计。接下来我们看下服务架构的演进史。

三、架构演进一: 早期雏形

特征:应用程序主要做静态文件读取,返回内容给浏览器。
【架构】互联网应用开发架构演进历程

四、架构演进二: 数据库开发(LAMP特长)

特征:应用程序主要主要读取数据表值,填充html模块。业务逻辑简单,写sql

【架构】互联网应用开发架构演进历程

五、架构演进三: javaweb的雏形

特征:tomcat + servlet + jsp + mysql。一个war包打天下​

项目结构:ssh/ssm三层结构。

【架构】互联网应用开发架构演进历程

六、架构演进四: javaweb的集群发展​

特征:硬件机器的横向复制,对整个项目结构无影响。

【架构】互联网应用开发架构演进历程

七、架构演进五: javaweb的分布式发展

特征:将Service层单独分离出去,成为一个单独的项目jar。单独运行。​Web服务器通过rpc框架,对分离出去的service进行调用。
【架构】互联网应用开发架构演进历程

八、架构演进六: javaweb的微服务发展​

特征:从业务角度,细分业务为微服务,每一个微服务是一个完整的服务(从http请求到返回)。​在微服务内部,将需要对外提供的接口,包装成rpc接口,对外部开放。

【架构】互联网应用开发架构演进历程

8.1、微服务概念

微服务架构之前还有一个概念:SOA(Service-Oriented Architecture,面向服务的架构)。人们逐渐认识到SOA可以用来应对臃肿的单块应用程序,从而提高软件的可重用性。它的目标是在不影响其他任何人的情况下透明地替换一个服务,只要替换之后的服务的外部接口没有太大的变化即可。

微服务应该算是SOA的一种演进。从 2014 年开始,得益于以 Docker 为代表的容器化技术的成熟以及 DevOps 文化的兴起,SOA的思想进一步演化,演变为今天我们所熟知的微服务。

微服务架构通过业务拆分实现服务组件化,通过组件组合快速开发系统,业务单一的服务组件又可以独立部署,使得整个系统变得清晰灵活。
【架构】互联网应用开发架构演进历程

8.2、微服务架构带来的挑战(没有银弹)

微服务架构虽然解决了旧问题,也引入了新的问题:

  • 以往单体应用,排查问题通常是看一下日志,研究错误信息和调用堆栈,而微服务架构整个应用分散成多个服务,定位故障点非常困难
  • 在微服务架构中,一个服务故障可能会产生雪崩效用,导致整个系统故障
  • 服务数量非常多,部署、管理的工作量很大。

8.3 、微服务架构

微服务架构,核心是为了解决应用微服务化之后的服务治理问题。

应用微服务化之后,首先遇到的第一个问题就是服务发现问题,一个微服务如何发现其他微服务呢?最简单的方式就是每个微服务里面配置其他微服务的地址,但是当微服务数量众多的时候,这样做明显不现实。所以需要使用到微服务架构中的一个最重要的组件:服务注册中心,所有服务都注册到服务注册中心,同时也可以从服务注册中心获取当前可用的服务清单:
【架构】互联网应用开发架构演进历程

解决服务发现问题后,接着需要解决微服务分布式部署带来的第二个问题:服务配置管理的问题。当服务数量超过一定程度之后,如果需要在每个服务里面分别维护每一个服务的配置文件,运维人员估计要哭了。那么,就需要用到微服务架构里面第二个重要的组件:配置中心,微服务架构就变成下面这样了:
【架构】互联网应用开发架构演进历程

以上应用内部的服务治理,当客户端或外部应用调用服务的时候怎么处理呢?服务A可能有多个节点,服务A、服务B和服务C的服务地址都不同,服务授权验证在哪里做?这时,就需要使用到服务网关提供统一的服务入口,最终形成典型微服务架构:
【架构】互联网应用开发架构演进历程

当然微服务的服务治理还涉及很多内容,比如:

  • 通过熔断、限流等机制保证高可用;
  • 微服务之间调用的负载均衡;
  • 服务调用链跟踪等等。

8.4、微服务框架

目前国内企业使用的微服务框架主要是Spring Cloud和Dubbo,Spring Cloud全家桶提供了各种各样的组件,基本可以覆盖微服务的服务治理的方方面面,以下列出了Spring Cloud一些常用组件:

【架构】互联网应用开发架构演进历程

九、Service Mash

9.1、service mesh概念

使用统一的微服务框架有一个比较严重的问题:框架更新成本很高。每次框架升级,都需要所有应用服务配合升级。当然,一般会使用兼容方案,留出一段并行时间等待所有应用服务升级。但是如果应用服务非常多时,升级时间可能会非常漫长。并且有一些很稳定几乎不更新的应用服务,其负责人可能会拒绝升级……因此,使用统一微服务框架需要完善的版本管理方法和开发管理规范。

Service Mesh 通过 SideCar 代理转发请求,把微服务框架的相关实现全部集中到 SideCar 中,并通过 Control Plane 控制 SideCar 来实现服务治理的各种功能,这种业务与框架功能解耦的思能够解决框架更新成本高的问题。
【架构】互联网应用开发架构演进历程

Sevice Mesh相比于微服务框架的优点在于它不侵入代码,升级和维护更方便。它经常被诟病的则是性能问题。即使回环网络不会产生实际的网络请求,但仍然有内存拷贝的额外成本。另外有一些集中式的流量处理也会影响性能。

9.2、service mesh实现

Istio 是由 Google、IBM、Lyft 等共同开源的 Service Mesh(服务网格)框架,作为云原生时代下承 Kubernetes、上接 Serverless 架构的重要基础设施层,于 2017 年开始进入大众视野。

【架构】互联网应用开发架构演进历程

十、总结

本章主要讲了一下技术演进史。那么有一些问题留给大家。单机系统拆分成分布式和微服务,可能会遇到哪些问题,又该如何解决?欢迎评论区讨论。文章来源地址https://www.toymoban.com/news/detail-425643.html

附录

  • 微服务入门这一篇就够了

到了这里,关于【架构】互联网应用开发架构演进历程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从互联网到云时代,Apache RocketMQ 是如何演进的?

    作者:隆基 2022 年,RocketMQ 5.0 的正式版发布。相对于 4.0 版本而言,架构走向云原生化,并且覆盖了更多业务场景。 操作系统、数据库、中间件是基础软件的三驾马车,而消息队列属于最经典的中间件之一,已经有 30 多年的历史。消息队列的发展主要经历了以下几个阶段:

    2024年02月14日
    浏览(40)
  • 从互联网到云计算再到 AI 原生,百度智能云数据库的演进

    如果说今年科技圈什么最火,我估计大家会毫不犹豫选择 ChatGPT。ChatGPT 是 2022 年 11 月 30 日由 OpenAI 发布的聊天应用。它创造了有史以来用户增长最快的纪录:自 11 月 30 日发布起,5 天就拥有了 100 万活跃用户,两个月就达到了一亿用户。对比其他热门应用,同样达到一亿用

    2024年02月04日
    浏览(45)
  • Spring Cloud智慧工地源码,利用计算机技术、互联网、物联网、云计算、大数据等新一代信息技术开发,微服务架构

    智慧工地系统 充分利用计算机技术、互联网、物联网、云计算、大数据等新一代信息技术,以PC端,移动端,设备端三位一体的管控方式为企业现场工程管理提供了先进的技术手段。让劳务、设备、物料、安全、环境、能源、资料、计划、质量、视频监控等十大管理环节变得

    2024年02月05日
    浏览(47)
  • 互联网系统架构演变

    目录 1. 程序三高 1)高并发 2)高性能 3)高可用 2. 传统架构 2.1 提高服务器性能(单机) 2.2 增加服务器数量(DNS 负载均衡) 2.3 负载均衡 负载均衡的功能总结 负载均衡种类 负载均衡——主流的软件解决方案 Apache + JK Nginx 优点 Nginx 配置 配置反向代理 动静分离 轮询机制

    2024年01月23日
    浏览(46)
  • 互联网高可用架构探讨

    高可用,英文单词High Availability,缩写HA,它是分布式系统架构设计中一个重要的度量。业界通常用多个9来衡量系统的可用性,如下表: 既然有可用率,有一定会存在不可用的情况。系统宕机一般分为有计划的和无计划的,有计划的如日常维护、系统升级等,无计划的如设备

    2024年02月11日
    浏览(44)
  • 一文读懂互联网的架构本质

    【引子】谈到互联网,很多人脑海中会出现各种各样的术语和服务,但是互联网是如何设计并构建的呢?作为一个网络,互联网的架构本质是什么? 石头兄弟和我曾经一起译过一本《计算机网络问题与解决方案》的巨著,但真正仔细阅读并从中有所收获的朋友并不多。最近

    2024年02月11日
    浏览(36)
  • 互联网高可用架构探讨 | 京东云技术团队

    高可用,英文单词High Availability,缩写HA,它是分布式系统架构设计中一个重要的度量。业界通常用多个9来衡量系统的可用性,如下表: 既然有可用率,有一定会存在不可用的情况。系统宕机一般分为有计划的和无计划的,有计划的如日常维护、系统升级等,无计划的如设备

    2024年02月12日
    浏览(35)
  • 【第一期】《互联网广告系统:架构、算法与智能化》

    🌹欢迎来到 爱书不爱输的程序猿 的博客, 本博客致力于知识分享,与更多的人进行学习交流 广告平台的建设和完善是一项长期工程。 例如,谷歌早于2003年通过收购Applied Semantics开展Google AdSense项目,而直到20年后的今天,谷歌展示广告平台仍在持续创新和提升。 广告平台是

    2024年02月13日
    浏览(40)
  • 互联网编程之基于 TCP 的单线程文件收发程序(CS架构)

    目录 需求 服务端实现 客户端实现 测试 可试着根据java编程课所学到的java socket编程技术,尝试编写一个基于 TCP 的单线程文件收发程序,需满足: 服务端程序预先定义好需要发送的文件并等待客户端的连接。 客户端连接成功后,服务端将文件发送给客户端,客户端将文件保

    2024年02月12日
    浏览(59)
  • 码银送书第五期《互联网广告系统:架构、算法与智能化》

    广告平台的建设和完善是一项长期工程。例如,谷歌早于2003年通过收购Applied Semantics开展Google AdSense 项目,而直到20年后的今天,谷歌展示广告平台仍在持续创新和提升。广告平台是负有营收责任的复杂在线平台,对其进行任何改动都必须格外谨慎。同时,随着平台的成熟,

    2024年02月13日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包