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

news2024/12/26 22:24:33

文章目录

  • 一、背景
  • 二、技术架构演进史
  • 三、架构演进一: 早期雏形
  • 四、架构演进二: 数据库开发(LAMP特长)
  • 五、架构演进三: javaweb的雏形
  • 六、架构演进四: javaweb的集群发展​
  • 七、架构演进五: javaweb的分布式发展
  • 八、架构演进六: javaweb的微服务发展​
    • 8.1、微服务概念
    • 8.2、微服务架构带来的挑战(没有银弹)
    • 8.3 、微服务架构
    • 8.4、微服务框架
  • 九、Service Mash
    • 9.1、service mesh概念
    • 9.2、service mesh实现
  • 十、总结
  • 附录

一、背景

首先我们了解下计算机软件的发展历史,大概总结概括,分为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 年开始进入大众视野。

在这里插入图片描述

十、总结

本章主要讲了一下技术演进史。那么有一些问题留给大家。单机系统拆分成分布式和微服务,可能会遇到哪些问题,又该如何解决?欢迎评论区讨论。

附录

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开源 AI 辅助编程工具 AutoDev 现已上架 Jetbrains 插件市场

我们非常高兴地宣布 AutoDev v0.2.0 的发布!AutoDev 是一款强大的 AI 辅助编程工具,可以与 Jetbrains 系列 IDE 无缝集成(VS Code 支持正在开发中)。通过与需求管理系统(如 Github Issue 等)直接对接&#…

WPF教程(八)--数据绑定(1)--基础概述

使用WPF可以很方便的设计出强大的用户界面,同时 WPF提供了数据绑定功能。WPF的数据绑定跟Winform与ASP.NET中的数据绑定功能类似,但也有所不同,在 WPF中以通过后台代码绑定、前台XAML中进行绑定,或者两者组合的方式进行数据绑定。…

用python制作剪刀石头布的小游戏

1 问题 在python中我们学习了条件语句,那么我们是否可以通过python中条件判断的功能来写出可以判断胜负的剪刀石头布小游戏呢? 2 方法 导入随机函数,保证胜负的随机性 设置对应数值,写好判断输赢的条件语句 运行并查看结果 代码清单 1 impor…

斯坦福| ChatGPT用于生成式搜索引擎的可行性

文|智商掉了一地 随着 ChatGPT 在文本生成领域迈出了重要一步,Bing 浏览器也接入了聊天机器人功能,因此如何保证 Bing Chat 等搜索引擎结果的精确率和真实性也成为了搜索领域的热门话题之一。 当我们使用搜索引擎时,往往希望搜索结…

教你如何进行DNS域名解析

目录 一:DNS系统介绍 1.DNS服务概述 2.DNS域名空间介绍 3.DNS 域名结构 4.DNS解析方式 5.DNS查询方式 (1)递归查询 (2)迭代查询 6.DNS服务器类型: (1)主域名服务器 (2)从域名服务器 (3)缓存域名服务器 (4)…

Android进阶宝典 -- 解读Handler机制核心源码,让ANR无处可藏

其实ANR核心本质就是让UI线程(主线程)等了太久,导致系统判定在主线程做了耗时操作导致ANR。当我们执行任何一个任务的时候,在Framework底层是通过消息机制来维护任务的分发,从下面这个日志可以看到, "…

thrift、go与php

学习一下thrift。 环境 mac m1,go 1.20,php 7.4,thrift 0.18.1 要学习thrift,第一步得先安装 $ brew install thrift学习的计划是用go作为server,php作为client,通过thrift的方式完成一次请求demo。 建…

Java语言的特点和八大基本类型

“byte和short两兄弟去找int问long去哪了” “int摇摇头说不知道” “此时float和double两兄弟也来凑热闹” “共同商议后决定去找char询问” “char面对五人的询问只好说boolean知道” “六人来到boolean的住处发现long竟然在玩猜真假游戏” Java语言的特点 1.简单易学…

个性化学习路径推荐综述

源自:软件学报 作者:云岳 代欢 张育培 尚学群 李战怀 摘 要 近年来, 伴随着现代信息技术的迅猛发展, 以人工智能为代表的新兴技术在教育领域得到了广泛应用, 引发了学习理念和方式的深刻变革. 在这种大背景下, 在线学习超越了时空的限制,…

2023年电信推出新套餐:月租19元=135G流量+长期套餐+无合约期!

在三大运营商推出的流量卡当中,电信可以说是性价比最高的一个,相对于其他两家运营商,完全符合我们低月租,大流量的要求,所以,今天小编介绍的还是电信流量卡。 在这里说一下,小编推荐的卡都是免…

教你怎样用PXE高效的批量网络装机

目录 一:PXE介绍 1.XPE概述 2.PXE批量部署的优点 3.搭建PXE各部作用 (1)PXE(Preboot eXcution Environment) (2)服务端 (3)客户端 二:部署PXE服务 1.安装并启用TFTP服务 2.安…

Tiktok/抖音旋转验证码

声明 本文以教学为基准、本文提供的可操作性不得用于任何商业用途和违法违规场景。 本人对任何原因在使用本人中提供的代码和策略时可能对用户自己或他人造成的任何形式的损失和伤害不承担责任。 如有侵权,请联系我进行删除。 抖音系的旋转验证码,跟得物一样,都是内外圈一起…

blast的-max_target_seqs?

Shah, N., Nute, M.G., Warnow, T., and Pop, M. (2018). Misunderstood parameter of NCBI BLAST impacts the correctness of bioinformatics workflows. Bioinformatics. 杂志Bioinformatics以letter to the editor的形式刊发了来自美国马里兰大学计算机系的Nidhi Shah等人…

基于html+css的图展示42

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

安卓设备远程管理软件

现在,安卓设备广泛应用于各类智能硬件,有时候我们需要远程管理这些安卓设备。远程管理软件使 IT 管理员能够从任何地方控制和管理安卓设备,确保它们安全、最新并以最佳水平运行。在本文中,我们将介绍一些当前主流的安卓设备远程管…

Automa函数学习(三)

从变量中获取数据 当我们想要用automa获取文本标签获取到网页的文本内容后,想要将获取到的文本内容当做参数往后面的标签里进行传递时就需要用到automa提供的传参格式 {{ variables.自定义参数名}} 举例: 先建立打开百度首页工作流 前面自定义的变量名为text,所以这里参数拼接…

云计算的未来发展趋势与优势,你是否了解?

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一、企业痛点 1.企业信息技术应用痛点 二、云计算的基础概念 1.什么是云计…

纯享三代HiFi reads,至美细菌完成图,加送质粒基因组!

三代测序时代,PacBio High-Fidelity reads在基因组组装中大放异彩。HiFi测序模式可产生既兼顾长读长,又具有高精度的测序结果。凌恩生物HiFi细菌基因组完成图测序,即利用PacBio HiFi测序模式对某细菌物种进行基因组de novo组装,从…

安科瑞充电方案解决电瓶车充电难、管理难、收费难问题

安科瑞 徐浩竣 江苏安科瑞电器制造有限公司 zx acrelxhj 0引言 电动自行车已经成为重要的出行工具,数量肯定还会继续增长,各级政府部门和物业管理者已经对其带来的消防隐患引起高度重视。安科瑞电动自行车运营管理云平台通过充电桩、云平台、APP小程…

Spring框架及源码(二)---Spring IoC高级应用与源码剖析

Spring IOC 应用 第1节 Spring IoC基础 Spring框架下IOC实现,解析bean的几种方式 1.1 BeanFactory与ApplicationContext区别 BeanFactory是Spring框架中IoC容器的顶层接⼝,它只是⽤来定义⼀些基础功能,定义⼀些基础规范,⽽ ApplicationContext是它的⼀个⼦接⼝&a…