首页 > 其他分享 >第一章 微服务介绍

第一章 微服务介绍

时间:2023-08-07 23:11:23浏览次数:29  
标签:架构 应用 系统 介绍 第一章 模块 服务 1.1

1.1 系统架构演

随着互联网的发展,网站应用的规模也在不断的扩大,进而导致系统架构也在不断的进行变化。 从互联网早起到现在,系统架构大体经历了下面几个过程: 单体应用架构--->垂直应用架构--->分布 式架构--->SOA架构--->微服务架构,当然还有悄然兴起的Service Mesh(服务网格化)。 接下来我们就来了解一下每种系统架构是什么样子的, 以及各有什么优缺点。

1.1.1 单体应用架构

互联网早期,一般的网站应用流量较小,只需一个应用,将所有功能代码都部署在一起就可以,这 样可以减少开发、部署和维护的成本。 比如说一个电商系统,里面会包含很多用户管理,商品管理,订单管理,物流管理等等很多模块, 我们会把它们做成一个web项目,然后部署到一台tomcat服务器上。

 优点: 项目架构简单,小型项目的话, 开发成本低 项目部署在一个节点上, 维护方便

 缺点: 全部功能集成在一个工程中,对于大型项目来讲不易开发和维护 项目模块之间紧密耦合,

            单点容错率低 无法针对不同模块进行针对性优化和水平扩展

1.1.2 垂直应用架构

  随着访问量的逐渐增大,单一应用只能依靠增加节点来应对,但是这时候会发现并不是所有的模块 都会有比较大的访问量. 还是以上面的电商为例子, 用户访问量的增加可能影响的只是用户和订单模块, 但是对消息模块 的影响就比较小. 那么此时我们希望只多增加几个订单模块, 而不增加消息模块. 此时单体应用就做不 到了, 垂直应用就应运而生了. 所谓的垂直应用架构,就是将原来的一个应用拆成互不相干的几个应用,以提升效率。比如我们可 以将上面电商的单体应用拆分成: 电商系统(用户管理 商品管理 订单管理) 后台系统(用户管理 订单管理 客户管理) CMS系统(广告管理 营销管理) 这样拆分完毕之后,一旦用户访问量变大,只需要增加电商系统的节点就可以了,而无需增加后台 和CMS的节点

  优点: 系统拆分实现了流量分担,解决了并发问题,而且可以针对不同模块进行优化和水平扩展 一个系统的问题不会影响到其他系统,提高容错率

  缺点: 系统之间相互独立, 无法进行相互调用 系统之间相互独立, 会有重复的开发任

 1.1.3 分布式架构

当垂直应用越来越多,重复的业务代码就会越来越多。这时候,我们就思考可不可以将重复的代码 抽取出来,做成统一的业务层作为独立的服务,然后由前端控制层调用不同的业务层服务呢? 这就产生了新的分布式系统架构。它将把工程拆分成表现层和服务层两个部分,服务层中包含业务 逻辑。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现。

 

 优点: 抽取公共的功能为服务层,提高代码复用性

 缺点: 系统间耦合度变高,调用关系错综复杂,难以维护

1.1.4 SOA架构

在分布式架构下,当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加 一个调度中心对集群进行实时管理。此时,用于资源调度和治理中心(SOA Service Oriented Architecture,面向服务的架构)是关键。

 优点: 使用注册中心解决了服务间调用关系的自动调节

 缺点: 服务间会有依赖关系,一旦某个环节出错会影响较大( 服务雪崩 ) 服务关心复杂,运维、测试部署困难

1.1.5 微服务架构

微服务架构在某种程度上是面向服务的架构SOA继续发展的下一步,它更加强调服务的"彻底拆分"。

 优点: 服务原子化拆分,独立打包、部署和升级,保证每个微服务清晰的任务划分,利于扩展 微服务之间采用Restful等轻量级http协议相互调用

 缺点: 分布式系统开发的技术成本高(容错、分布式事务等)

 

标签:架构,应用,系统,介绍,第一章,模块,服务,1.1
From: https://www.cnblogs.com/eagle888/p/17613007.html

相关文章

  • .Net 构建Opc Ua服务器和客户端
    PackagenamedOpc.UaFx.Advancedisfoundinhttps://www.nuget.org/packages/Opc.UaFx.AdvancedthatusedasaOpcUaServerandClient.Firstofall.InstallpackagedotnetaddpackageOpc.UaFx.Advanced--version2.31.0usingOpc.UaFx;usingOpc.UaFx.Client;......
  • Mir 2.14 正式发布,Ubuntu 使用的 Linux 显示服务器
    Canonical公司最近发布了Mir2.14,这是该项目的最新版本。Mir2.14在Wayland方面通过ext-session-lock-v1协议增加了对屏幕锁定器(screenlockers)的支持,并最终支持Wayland拖放。此外还整合了渲染平台的实现,放弃了之前在RaspberryPi设备上使用的DispmanX平......
  • 谷歌Linux内核自动测试平台架构介绍-用自动测试测试难以测试的问题
    1摘要内核和硬件等低级系统已被证明极难进行有效测试,因此,许多内核测试都是以手动为主方式进行的。现有的大多数测试框架都是为测试与底层平台隔离的高级软件而设计的,而底层平台被假定是稳定可靠的。测试底层平台本身需要一套全新的假设,这些假设必须从根本上反映在框架的设计中。......
  • NFS 服务搭建
    环境 服务端:20.0.0.100客户端:20.0.0.101服务端安装软件 新建共享目录 修改权限,配置文件   (sync同步) 开启服务,查看详细的nfs信息-v查看本机所有nfs-r重读配置文件-a输出本机所有共享 查看本机发布的NFS共享目录 客户机mount服务器地址 冒号 ......
  • Nginx 搭建静态文件服务器
    Nginx安装yuminstall-ynginx配置文件红帽Linux配置文件位置:/etc/nginx/nginx.confdocker配置文件位置:/etc/nginx/conf.d/default.conf修改配置文件server{listen80;listen[::]:80;server_namelocalhost;root/files;......
  • CSS选择器介绍
    1、三种基本选择器优先级:id选择器>类选择器>标签选择器/*标签选择器,可以作用于HTML里面的所有这种标签*/h1{ color:red; background-color:aquamarine; border-radius:5px;}p{ font-size:38px;}/*类选择器,.class类名,可以多个标签归类*/.xuexi{ color:blue......
  • springboot中的缓存介绍
    前言Spring框架支持透明地向应用程序添加缓存对缓存进行管理,其管理缓存的核心是将缓存应用于操作数据的方法(包括增删查改等),从而减少操作数据的执行次数(主要是查询,直接从缓存中读取数据),同时不会对程序本身造成任何干扰。SpringBoot继承了Spring框架的缓存管理功能,通过使用@Enable......
  • UDS诊断服务基础篇之22
      应用场景:读取当前ECU的序列号,版本号等;标定成功后读取内部标定结果等;读取当前ECU所处在的Session,内部状态,SnapshotData等;其他需要读取内部相关参数的场合;服务请求:服务请求是Client发送给到Server的诊断服务指令。其中Client可以理解为Tester,Server可以理解......
  • JavaHTTP心跳:服务器与客户端实时连接的实现方式
    JavaHTTP心跳:服务器与客户端实时连接的实现方式在网络通信中,实时连接是一种至关重要的功能。它允许服务器与客户端之间保持持久的通信信道,实现快速、高效的数据传输。对于Java开发者来说,实现服务器与客户端之间的实时连接可以通过JavaHTTP心跳技术来实现。本文将介绍如何利用Java......
  • 扒一扒smardaten那些让人欲罢不能的服务~
    最近常有新粉问睿睿,除了产品,还提供哪些服务呀?官网上社区版、专业版、企业版、专有版的服务支持到底区别在哪?别急,睿睿这就给你一一道来!smardaten不同版本的服务内容上上周,睿睿在给新粉们的专文《smardaten社区版、专业版、企业版、专有版到底怎么选》里有提到服务区别,但还是有些小......