分布式技术(一)分布式的架构的演进

  • 💌 所属专栏:【微服务】
  • 😀 作 者:长安不及十里
  • 💻 工作:目前从事电力行业开发
  • 🌈 目标:全栈开发
  • 🚀 个人简介:一个正在努力学技术的Java工程师,专注基础和实战分享 ,欢迎咨询!
  • 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘

一 单体,SOA,微服务架构

1.1 单体架构

  • 是指一个应用程序中所有的功能都集成在一个单一的代码库中。
  • 这种设计模式简单易用,开发人员可以快速地开发和维护应用程序,但是也存在一些问题。

优点

  1. 简单易懂:单体服务架构相对简单,易于理解和上手,开发人员可以更快地构建和部署整个应用程序。
  2. 快速开发:由于所有功能模块都在同一个应用程序中,开发人员可以更方便地进行代码编写、测试和集成,加快开发速度。
  3. 低成本:相对于其他架构模式,单体服务架构的开发和维护成本相对较低,因为它不需要处理分布式系统和服务间通信的复杂性

缺点

  1. 难以扩展:随着应用程序规模和流量的增长,单体服务架构变得难以扩展。增加处理能力可能需要垂直扩展整个应用,增加硬件成本。
  2. 单一故障点:在单体服务架构中,整个应用程序是一个单一的实体,当一个模块出现问题时,可能会导致整个系统崩溃,降低了系统的健壮性和可靠性。
  3. 难以维护:由于所有功能模块都集中在一个应用程序中,当需要修改或升级某个模块时,可能会涉及整个应用程序的重新部署和测试,增加了维护的复杂性。
  4. 团队协作限制:在单体服务架构中,不同功能模块之间的代码和资源是共享的,这可能导致团队之间的协作和独立开发受到限制

1.2 SOA架构

  • SOA 是 Service-Oriented Architecture 的英文缩写,就是面向服务的架构。这里的服务可以理解为 service 层业务服务。将系统拆分为不同的服务单元,通过网络协议服务单元之间进行通信。服务单元完成一个特定功能(如:验证、支付、登录等等),通过服务单元之间的集成组成完整的应用程序。
  • SOA 架构中由两个重要的角色: 服务提供者(Provider)和服务使用者(Consumer)

优点

  1. 可重用性:SOA鼓励将功能划分为独立的服务,这些服务可以在不同的应用程序中被重复使用,这种重用性可以减少开发时间和工作量,并促进系统的灵活性和可维护性。
  2. 松散耦合:SOA通过标准化接口和协议来实现服务间的通信,服务之间解耦合度高,这样,当一个服务发生变化时,其他服务不会受到影响,从而提高了系统的可靠性和稳定性。
  3. 系统集成:SOA支持异构系统之间的集成,通过定义和实现标准化的接口,不同的应用程序和服务可以相互通信和协作,实现系统间的无缝集成。

缺点

  1. 额外的开发和管理工作:实施SOA需要额外的开发和管理工作,这包括定义服务接口、制定规范、版本管理等,这些工作增加了开发团队的负担,可能导致项目开发时间延长。
  2. 性能影响:由于SOA服务间需要通过网络进行通信,因此性能和响应时间可能受到一定的影响,网络延迟和通信开销可能会增加系统的负载和响应时间,特别是在高并发和大规模的情况下。
  3. 接口设计和管理挑战:SOA的成功与否取决于良好的接口设计和管理,定义清晰、灵活和易于使用的接口是一个挑战,需要深入的系统设计和架构能力,管理多个服务的版本和兼容性也可能带来一定的复杂性。

1.3 微服务架构

  • 微服务架构是一种将应用程序拆分成小型、独立的服务的架构模式,每个服务都有自己的数据库和业务逻辑,并通过轻量级的通信机制实现服务间的交互。
  • 微服务架构具有高度的可扩展性,每个服务都可以独立地扩展和部署。它还可以促进团队的自治和快速迭代开发。
  • 然而,微服务架构也存在一些挑战,首先,微服务架构需要良好的服务拆分和界定边界,这需要深入的系统设计和架构能力,此外,微服务架构的复杂性要求具备强大的监控和管理机制。

优点

  1. 高度可扩展性:微服务架构允许每个服务独立地扩展,使得系统能够更好地应对变化的负载需求。只需要对特定的服务进行扩展,而不需要整体扩展应用程序。
  2. 独立部署:每个微服务都可以独立地进行开发、测试和部署。这使得团队能够在不影响其他服务的情况下进行快速迭代和发布,提高开发效率。
  3. 高度灵活性:微服务架构允许团队使用不同的编程语言、技术栈和工具来构建每个服务。这种灵活性使得团队能够选择最适合他们需求的技术,并独立地进行技术栈升级和演进。
  4. 独立自治:每个微服务都有自己的团队负责开发和维护。这种自治性使得团队能够独立做出决策,更好地满足特定服务的需求,并快速响应变化。

缺点

  1. 分布式系统的复杂性:微服务架构引入了分布式系统的复杂性。服务之间的通信需要通过网络进行,可能会面临网络延迟、通信故障等问题,增加了系统的复杂性和运维成本。
  2. 服务拆分的挑战:将应用程序拆分成适当的微服务需要良好的系统设计和架构能力。错误的服务拆分可能导致服务间的紧密耦合,或者服务间的边界不清晰,影响系统的可维护性和扩展性。
  3. 一致性和事务管理:由于微服务架构中的数据和业务逻辑分布在不同的服务中,确保一致性和事务管理变得更加复杂。需要采用一些技术手段来解决分布式事务和数据一致性的问题。

二 微服务架构技术方案

业界比较成熟的服务框架有很多,比如:Hessian、CXF、Dubbo、Dubbox、Spring Cloud、gRPC、thrift等技术实现,都可以进行远程调用,具体技术实现优劣参考以下分析,这也是具体在技术方案选择过程中的重要依据。

  • 区域内容分发:CDN

【白话科普】用动画告诉你 CDN是如何工作的 | CDN是什么 | 如何让你的网站网站快速打开 | CDN原理 | 服务器自由_哔哩哔哩_bilibili

  • 网络负载均衡:lvs

抓包搞懂LVS、Nginx四层七层负载均衡_哔哩哔哩_bilibili

  • 网关负载均衡、反向代理:nginx+lua、Kong、Spring Cloud Zuul、Spring Cloud Gateway
  • 服务网关:zuul,kong,springcloud gateway
  • 熔断、降级、限流:Hystrix,Sentinel
  • 服务注册与发现:eureka,nacos,consul,zookeeper
  • 服务配置:nacos,springcloud config,consul
  • 服务负载均衡:ribbon,Load Balancer
  • 组件通信:feign,RestTemplate,Dubbo RPC,OpenFeign
  • 消息队列:RabbitMQ、Kafka、ActiveMQ、RocketMQ
  • 链路追踪:zipkin,Skywalking
  • 服务部署:docker,kubernetes,jenkins
  • 服务监控:Metrics+ELK,SpringCloud Admin
  • 分布式日志:ELK
  • 分布式存储:fastDFS、OSS
  • 分布式事务:seata
  • 分布式任务调度:SchedulerX,xxl-job
  • 短信服务:SMS
  • 邮件服务:mail

2.1 核心组件

  • 注册中心
    • 服务注册
    • 服务发现
  • 服务网关
    • 安全认证和授权
    • 路由管理
    • 协议转换
    • 负载限流
  • 服务熔断
    • 监控
    • 断路器状态管理
    • 故障恢复
    • 限流
  • 分布式配置中心
    • 集中化配置管理
    • 配置信息动态刷新
    • 配置信息版本控制
    • 配置信息安全管理
    • 配置信息监控
  • 负载均衡
  • 服务调用

1.2 常见微服务架构

dubbo:zookeeper + dubbo + SpringMvc / SpringBoot

  • 配套通信方式:rpc
  • 注册中心:zookeeper / redis
  • 配置中心:diamond

SpringCloud:全家桶 + 嵌入第三方组件(Netflix)

  • 配套通信方式:http restful
  • 注册中心:eruka / consul
  • 配置中心:config
  • 熔断器:hystrix
  • 网关:zuul
  • 分布式链路系统:sleuth + zipkin

SpringCloud Alibaba(全家桶)

  • Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
  • Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
  • RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。
  • Dubbo:Apache Dubbo™ 是一款高性能 Java RPC 框架。
  • Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
  • Alibaba Cloud OSS:阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
  • Alibaba Cloud SchedulerX:阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。
  • Alibaba Cloud SMS:覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。

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

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

相关文章

实现校园网开机自启动部署

❤️博客主页: iknow181🔥系列专栏: Python、JavaSE、JavaWeb、CCNP🎉欢迎大家点赞👍收藏⭐评论✍ 目录 一.准备工作 1、IDE安装 2、安装Selenium 1.介绍 2.下载 3、安装pywifi 1.介绍 2.下载 4、下载浏览器驱…

毫无基础的人如何入门 Python ?--找对学习入口是关键!

1.行百里者半三十 不少学生或职场人士总面临这样一种窘境:数字化转型大背景、大趋势下,感觉非常有必要学习Python等分析工具,但在真正学习Python的各种语言规则时,往往体验不到知识的乐趣,翻看个别章节后即束之高阁。…

VUE2+THREE.JS辉光设定和解决辉光导致背景变暗的问题

THREE.JS辉光设定和解决辉光导致背景变暗的问题 THREE.JS 辉光设定THREE.JS 辉光导致背景变暗的问题1.设定背景图片2.初始化辉光3. animate 一直渲染辉光 THREE.JS 辉光设定 给我的设计好的fbx模型,已经设定好了模型发光材质,所以直接添加辉光效果,就可以自动发光 blender模型生…

前馈全连接层

B站教学视频链接:2.3.4前馈全连接层-part2_哔哩哔哩_bilibili

微信小程序input type=nickname不能触发隐私政策?小程序隐私协议开发指南之nickname权限篇

小程序隐私协议开发指南之nickname权限篇 涉及处理用户个人信息的小程序开发者,需通过弹窗等明显方式提示用户阅读隐私政策等收集使用规则。 为规范开发者的用户个人信息处理行为,保障用户合法权益,微信要求开发者主动同步微信当前用户已阅读并同意小程序的隐私政策等收集使…

AI 编程如何助力开发者高效完成架构设计工作?

▼最近直播超级多,预约保你有收获 今晚直播:《AI 编程技术架构剖析和案例开发实战》 —1— AI 编程能帮我们完成哪些工作? 从目前企业级种种现实场景应用来看,AI 编程已经成为一种帮助开发者解决架构设计复杂问题、提高编程效率以…

使用OpenCompass评测rwkv模型教程

0x0. 前言 继续MLC-LLM 支持RWKV-5推理以及对RWKV-5的一些思考文章里面提到的想法,探索一下使用OpenCompass来评测RWKV模型,对模型的实际表现有一个更客观的了解。我在尝试的过程中也碰到了一些问题,所以这里记录一下使用OpenCompass评测的流…

【doccano】文本标注工具——属性级情感分析标注自己的业务数据

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 【doccano】文本标注工具——属性级情感分析标注自己的业务数据 1.说明2.前提条件3.doccano创建项目4.添加数据集5.添加标签6.标注数据7.导出数据转换格式 1.说明 2.前提条件 确保doccano已经安装完成 可以参考文…

广州华锐视点提供AI虚拟主播定制,为品牌注入新活力!

随着科技的飞速发展,人工智能已经逐渐渗透到我们生活的方方面面。在这个信息爆炸的时代,如何让您的品牌在众多竞争对手中脱颖而出,成为行业的佼佼者?答案就是——AI虚拟主播! 广州华锐视点提供AI数字人定制服务&#x…

一些后端测试的东西

后端测试都测试些什么 接口测试最小单元测试联调测试 接口测试 接口测试要素 可重复性 异常覆盖 环境一致 如何进行方便的接口测试 测试工具: idea-httpRequest , apifox , postman, jmeter 如何使用idea进行高效的接口测试 编写接口 启动项目直接…

二十五、DSL查询文档(全文检索查询、精确查询、地理查询、复合查询)

目录 一、全文检索查询 1、match查询 语法: 2、multi_match查询 语法: 3、match和mult_match的区别 二、精确查询 1、term查询: 语法: 2、range查询:(范围查询) 语法: 三、地理查询 1、geo_bou…

发生这种情况 经常导致投资者的痛苦

在这个市场中,什么事会让人痛苦呢?有的投资者马上回答,因为亏损。说实话,如果经过刻意的练习,我们在一定程度上能克服亏损给人带来的痛感。但是有另一种情况也容易为投资者带来痛苦,下面我们就来讨论一下。…

游戏缺少d3dx9_43.dll修复方法分享,快速解决dll缺失问题

在计算机使用过程中,我们常常会遇到一些错误提示,其中之一就是“找不到d3dx9_43.dll文件”。这个错误通常出现在运行某些游戏或应用程序时,d3dx9_43.dll是一个动态链接库文件,它是DirectX 9的一部分,用于支持游戏中的3…

Egg.js的方法扩展

Extend-application 方法扩展 eggjs的方法的扩展和编写 Egg.js可以对内部的五种对象进行扩展,以下是可扩展的对象、说明、this指向和使用方式。 application对象方法拓展 按照Egg的约定,扩展的文件夹和文件的名字必须是固定的。比如要对application扩…

亚马逊云科技re:Invent Peter DeSantis演讲,数据规模拓展无极限引领Serverless构建之路

re:lnvent 2023 Peter DeSantis主题演讲,数据规模拓展无极限引领Serverless构建之路(Road to Serverless)。 Logical Qubit全新发布:量子计算硬件,6倍的量子纠错效率提升。 Amazon全新发布Redshift Serverless&#xf…

Java多线程其他细节知识

并发、并行 进程 并发的含义 并行的理解 线程的生命周期

Hive:从HDFS回收站恢复被删的表

场景 一张手工维护的内部表,本来排查没有使用,然后删掉了,发现又需要使用,只能恢复这张表了。 1.确认HDFS是否开启回收站功能 2.查看回收站中的数据 被删除的数据会放在删除数据时使用的用户目录下,如:使…

详解前后端交互时PO,DTO,VO模型类的应用场景

前后端交互时的数据传输模型 前后端交互流程 前后端交互的流程: 前端与后端开发人员之间主要依据接口进行开发 前端通过Http协议请求后端服务提供的接口后端服务的控制层Controller接收前端的请求Contorller层调用Service层进行业务处理Service层调用Dao持久层对数据持久化 …

赤霞珠葡萄酒的风味特征是怎样的?

赤霞珠最值得注意的特点之一是它在发酵或桶陈酿期间对橡木的亲和力,除了对葡萄的天然高单宁产生软化效果外,香草和香料的独特木材风味还补充了黑醋栗和烟草的天然葡萄风味。 来自云仓酒庄品牌雷盛红酒分享基于赤霞珠的波尔多混合物在225升(59…

二级分类菜单及三级分类菜单的层级结构返回

前言 在开发投诉分类功能模块时,遇到过这样一个业务场景:后端需要按层级结构返回二级分类菜单所需数据,换言之,将具有父子关系的List结果集数据转为树状结构数据来返回 二级分类菜单 前期准备 这里简单复刻下真实场景中 出现的…