【1.1】认识微服务--服务架构演变

news2025/7/6 7:47:16

认识微服务--服务架构演变

  • 单体架构
  • 分布式架构
    • 服务治理
  • 微服务
    • 微服务架构特征
  • 小结

知识内容来自于黑马程序员视频教学和百度百科。博主仅作笔记整理便于回顾学习。如有侵权请私信我。


单体架构

单体架构: 将业务的所有功能集中在一个项目中开发,打成一个包部署。
在这里插入图片描述
优点:

  • 架构简单;
  • 部署成本低;

适合面向于一些企业内部使用的简单项目。

缺点:

  • 耦合度高。

开发过程中,模块之间你中有我我中有你,它们之间的边界也会变得很模糊。耦合度高,不利于大型项目开发。


分布式架构

分布式架构: 根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。
在这里插入图片描述
优点:

  • 降低服务耦合;
  • 有利于服务升级拓展;

缺点:

  • 服务调用关系错综复杂。

服务拆分的越多,将来部署也会越复杂。拆分的过程中也会面临一些问题。
做了拆分之后,不同服务部署在不同的机器上。这个时候要调用对方,从一个服务向另一个服务发请求:我来调用你。这样的调用叫做远程调用 。跨越了机器,服务的调用。


服务治理

分布式架构要考虑的问题:

  • 服务拆分粒度如何?
    哪些服务作独立模块呢?哪些业务在一起?需要把握粒度。
  • 服务集群地址如何维护?
  • 服务之间如何实现远程调用?
  • 服务健康状态如何感知?

在解决这些问题的过程中,出现了各种各样的技术:如WebService,Hession,ESB,SpringCloud,Dubbo等。
近年来最火的就是微服务方案。


微服务

微服务: 是一种经过良好架构设计的分布式架构方案。

微服务架构特征

  • 单一职责: 微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发。

  • 面向服务: 服务提供统一标准的接口,与语言和技术无关。

  • 自治: 团队独立、技术独立、数据独立,独立部署和交付。
    团队独立:按微服务划分;
    技术独立:独立团队各自开发,用擅长的技术。或者基于业务选择,互不影响。
    数据独立:每个微服务有自己独立的数据库。
    部署独立:独立部署;用户在访问微服务时,可以基于需求访问任意的业务服务。

  • 隔离性强: 服务调用做好隔离、容错、降级,避免出现级联问题。

在这里插入图片描述

微服务的上述特性其实是在给分布式架构制定一个标准,进一步降低服务之间的耦合度,提供服务的独立性和灵活性。做到高内聚,低耦合。
因此,可以认为微服务是一种经过良好架构设计的分布式架构方案

但方案该怎么落地?选用什么样的技术栈?全球的互联网公司都在积极尝试自己的微服务落地方案。

其中在Java领域最引人注目的就是SpringCloud提供的方案了。


小结

单体架构特点?

  • 简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统。

分布式架构特点?

  • 松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东,淘宝。

微服务:一种良好的分布式架构方案

  • 优点:拆分粒度更小,服务更独立,耦合度更低。
  • 缺点:架构非常复杂,运维,监控,部署难度提高。

By–Suki 2022/12/29

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

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

相关文章

线性规划求解-MATLAB Lingo Python实现

线性规划求解-MATLAB Lingo Python实现 线性规划 线性规划是辅助人们进行科学管理的一种数学方法,是研究线性约束条件下线性目标函数的极值问题的数学理论和方法。其展开形式可以表示为如下形式: Max⁡(Min⁡)zc1x1c2x2…cnxns.t. {a11x1a12x2⋯a1nxn≥…

2022年度十大科学突破榜单出炉!

科学的进步在很大程度上推动着人类社会的发展。而了解最新年度科学突破,有助于引领我们知晓世界科学进展,看清楚未来方向。故此,知识人网小编本期介绍《科学》杂志最新公布的2022年科学突破榜单。 12月16日,美国《科学》杂志网站列…

一种时间复杂度为O(2ⁿ)、空间复杂度为O(n)的子集和问题的算法

子集和问题(Subset-Sum Problem, SSP)是说给定一个自然数集合S{a1,a2,⋯,an}S\{a_1,a_2,\cdots,a_n\}S{a1​,a2​,⋯,an​},它含有nnn个元素,现在又给定一个自然数sss,问是否存在SSS的一个子集TTT使得TTT的所有元素之和…

JavaScript 隐秘者 | Console.xxx竟然如此好用

JavaScript 隐秘者 | Console.xxx竟然如此好用 文章目录JavaScript 隐秘者 | Console.xxx竟然如此好用一、控制台调试二、对象方法 🍖1)、.assert() 条件断言2)、.clear() 清空控制台3)、.count() 计算调用数 ⭕4)、.countReset() 重置计数器5)、.debug() 调试消息6…

文献翻译 (3):非支配排序遗传算法 (Non-dominated Sorting Genetic Algorithm, NSGA-II)

文章目录1 引入2 多目标优化3 更多的定义3.1 支配3.2 非支配集3.3 全局Pareto最优集4 NSGA-II1 引入 本文主要介绍多目标优化的基本概念以及NSGA-II。 2 多目标优化 多目标优化的优化目标之间存在一定的冲突,例如一个目标增长,导致另一个减少。因此这…

Vue2 新手上路无处不在的特殊符号,让人傻傻分不清 “:”、“.”、“@”、“#” 、“{{}}“ 、“$“

刚刚学vue没多久,经常分不清情况什么时候用什么符号: “:” 是指令 “v-bind”的缩写 “.”是修饰符 “”是指令“v-on”的缩写 ,它用于监听 DOM 事件 “#”是v-slot的缩写; "{{}}" 插值语法 "$" &#…

智慧工厂在线云平台,助力企业降本增效!

随着传统制造企业规模的扩大,人工管理方法不可避免的产生延时、错误和矛盾,人工管理方法已经无法对生产管理实施有效的控制, 随着设备类型、数量不断增加,人工管理的方式已经无法满足生产过程中人、机、料、法、环、测的有效管理。如何将这些…

2022年——一个老老老程序员的杭州折腾之旅

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:无尽的折腾后,终于又回到…

[Android]视图的控触操作-MotionEvent

引入 对屏幕的任何操作,系统都会创建一个触摸事件的对象MotionEvent来应对这个操作。当点击手机屏幕的某一个视图时,最先感应到的是屏幕,因为Activity系统是分层的结构,底层是一些驱动,所以驱动就会得到信息并且把信息…

分布式共识算法——Paxos、ZAB、Raft

分布式算法 01 分布式基本理论 CAP理论 1998年,加州大学的计算机科学家 Eric Brewer 提出,分布式系统有三个指标。 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值,即写操…

第008课 - linux安装docker

文章目录 linux安装docker安装docker启动docker检查dockerdocker设置开机自启动linux安装docker 每一种容器都是一个完整的运行环境,容器之间互相隔离的。 windows的ghost工具就是类似docker。 从网上获取镜像,基于镜像,docker可以启动一个容器。 所以,我们以后想要装某种…

elasticsearch在linux环境安装遇到问题

es在linux环境安装遇到问题 1、启动失败日志 ERROR: [1] bootstrap checks failed [1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be con…

对某颜色站的一次渗透实战

1. 前提 1.1 某颜色cms弱口令原理 去年的时候,在网上看到有些师傅在打击颜色站,当时自己也摸索着试试,利用一个叫做jiuse cms的站来进行批量测试。 这个cms的特点是非常的小,前台除了xss之外,基本上漏洞都在后台&…

区块链+游戏:未来真的有未来吗?

今年以来,伴随着元宇宙与P2E的火热浪潮,区块链以其强大的叙事能力势如破竹的切入到传统游戏领域,顶级风投、知名巨企纷纷入局,迸发出极大的经济潜能,引发了社会的广泛关注。 一方面,区块链技术在游戏的运用…

【漏洞复现】多语言文件包含漏洞分析

漏洞描述&#xff1a; ThinkPHP在开启多语言功能的情况下存在文件包含漏洞&#xff0c;攻击者可以通过get、header、cookie等位置传入参数&#xff0c;实现目录穿越文件包含&#xff0c;通过pearcmd文件包含这个trick即可实现RCE。 影响版本&#xff1a; 6.0.1 < ThinkPH…

【TypeScript】TS交叉类型联合类型(四)

&#x1f431;个人主页&#xff1a;不叫猫先生 &#x1f64b;‍♂️作者简介&#xff1a;前端领域新星创作者、华为云享专家、阿里云专家博主&#xff0c;专注于前端各领域技术&#xff0c;共同学习共同进步&#xff0c;一起加油呀&#xff01; &#x1f4ab;系列专栏&#xff…

Mybatis_Plus_@TableName,@TableField

思考一个问题:为啥继承BaseMapper< POJO >&#xff0c;能直接找到Mysql的表 默认情况下:mp根据BaseMapper泛型POJO类取数据库底下找与POJO类型一致的表 思考一个问题:如果把表user改成tb_user那么我们需要怎么解决 使用TableName注解 TableField 思考一个问题:我们新增…

学习.NET MAUI Blazor(五)、修改窗口标题

由于Blazor属于SPA&#xff08;single-page application&#xff09;&#xff0c;所以页面标题需要使用PageTitle组件来实现。但是在MAUI Blazor中&#xff0c;Blazor所在的位置是WebView&#xff0c;而标题是属于window。所以在MAUI Blazor中&#xff0c;使用PageTitle是无效的…

vue+bpmn-js 示例/基础入门/动态创建流程节点

先附一个完整的示例&#xff0c;下面做具体介绍 <template><div classcontainers><el-button click"saveXml"></el-button><div class"canvas" ref"canvas"></div><div class"properties" id…

YOLO系列中Anchor Based和Anchor Free的相爱相杀

前言 我们都知道按照是否出现RPN可将目标检测算法分为two-stage和one-stage&#xff0c;其中one-stage的一个主要代表便是YOLO系列&#xff0c;而根据是否存在先验锚框的定义我们也可以将其分为Anchor based和Anchor free两类&#xff0c;关于这两种也是各有优劣&#xff0c;但…