微服务学习:基础理论

news2025/1/21 7:43:59

一、微服务和应用现代化

1、时代的浪潮,企业的机遇和挑战

在互联网化+数字化+智能化+全球化的当今社会,IT行业也面临新的挑战:

  • 【快】业务需求如“滔滔江水连绵不绝”,企业需要更快的交付
  • 【变】林子大了,百色用户,企业需要提供更个性化、更精细、随时变化的服务体验
  • 【巨】万川汇聚,一叶扁舟,企业需要处理浩如烟海般的请求与数据,同事确保平稳与准确

企业想要在竞争中取得优势,必须比对手更快地把产品推出市场;拥抱市场变化,随时快速地相应用户新需求;不断扩大用户规模,持续增加处理吞吐。如果不能在瞬息万变的市场情况下做出快速反应,那只能被远远地甩在身后。

2、新技术的出现,为微服务奠定了发展的基础

  • 移动化、云计算、物联化,促进了新型业务模式创新,需要依赖技术和新平台
  • 容器技术的出现,为服务多了以后如何自动化部署、如何运维提供了完美的解决方案,解决了微服务“最后一公里”落地的问题,从而完成了微服务生态最后一块拼图。
  • Devops理念已逐渐被业界广泛接受,越来越多的企业开始践行Devops实施。Devops为微服务的开发、测试及运维的自动化提供了坚实的基座。

3、新时代IT行业面临的四个变化

  • 用户行为的变化:业务应用的用户访问不可预估,突发性访问增多,微博事件和小红书海外流量突然激增就是最好的案例
  • 业务模式的变化:所有业务访问都是通过互联网渠道,包括Web、手机APP、微信小程序等
  • 业务系统开发的变化:应用再也不像以前半年/一年进行规划,随时会有需求变化,两周一个迭代成为常态。业务应用交付周期短,质量要求高
  • 运维模式的变化:要求全天候值守,在线升级和快速响应。不同团队特别是外包团队使用不同的技术栈,无法统一管控

因此,我们评估是否需要采用微服务架构,往往考察这五大关键条件:

  • 数据量和业务复杂度
  • 团队规模
  • 应对业务流量变化
  • 是否需要足够的容错容灾
  • 功能重复度和差错成本

二、服务理论基础与设计原则

什么是微服务?
一起合作独立小服务单元

1、微服务理论基础——康威定律

组织形式等同系统设计——设计系统的组织,其产生的设计等同于组织之内、组织之间的沟通结构

  • 第⼀定律:Communication dictates design(组织沟通⽅式会通过系统设计表达出来)
  • 第⼆定律:There is never enough time to do something right, but there is always enough
    time to do it over(时间再多⼀件事情也不可能做的完美,但总有时间做完⼀件事情)
  • 第三定律:There is a homomorphism from the linear graph of a system to the linear graph
    of its design organization(线型系统和线型组织架构间有潜在的异质同态特性)
  • 第四定律: The structures of large systems tend to disintegrate during development,
    qualitatively more so than with small systems(⼤的系统组织总是⽐⼩系统更倾向于分解)
    在这里插入图片描述

第⼀定律:组织沟通⽅式会通过系统设计表达出来

5个⼈的项⽬组,需要沟通的渠道是 5*(5–1)/2 = 10
15个⼈的项⽬组,需要沟通的渠道是15*(15–1)/2 = 105
50个⼈的项⽬组,需要沟通的渠道是50*(50–1)/2 = 1,225
150个⼈的项⽬组,需要沟通的渠道是150*(150–1)/2 = 11,175

⼈与⼈的沟通是⾮常复杂的,⼀个⼈的沟通精⼒是有限的,所以当问题太复杂需要很多⼈解决的时候,我们需要做拆分组织来达成对沟通效率的管理

在团队内部进⾏频繁的、细粒度的沟通。对于团队外部,定义好接⼝,契约,只进⾏粗粒度的沟通。这样可以降低沟通成本,同时也符合⾼内聚,低耦合原则
在这里插入图片描述

第二定律:时间再多⼀件事情也不可能做的完美,但总有时间做完⼀件事情

复杂的系统需要通过容错弹性的⽅式持续优化,不要指望⼀个⼤⽽全的设计或架构,好的架构和设计都是慢慢迭代出来的

复杂系统包括但不限于以下模块:

  • 持续集成
  • 敏捷开发
  • 弹性伸缩
  • 监控告警
  • 灰度发布
  • 熔断隔离

拥抱变化,解决当下,先完成一个一个小目标

第三定律:线型系统和线型组织架构间有潜在的异质同态特性

你想要什么样的系统,就搭建什么样的团队,反之亦然。
在这里插入图片描述

第四定律:合久必分,分而治之

⼀个⼤的组织因为沟通成本/管理问题,总为被拆分成⼀个个⼩团队(2 pizza team)
在这里插入图片描述

2、微服务的标准

通过康威定律可以得出行为标准:

  • ⽤⼀切⼿段提升沟通效率。能2个⼈讲清楚的事情,就不要拉更多⼈,每个⼈每个系统都有明确的分⼯,出了问题知道⻢上找谁,避免踢⽪球。
  • 通过MVP(最⼩化可实⾏产品,Minimum Viable Product)的⽅式来设计系统,通过不断的迭代来验证优化,系统应该是弹性设计的。
  • 你想要什么样的系统设计,就架构什么样的团队。最好按业务来划分团队,让团队⾃然⾃治内聚,明确的业务边界会减少和外部的沟通成本。
  • 做⼩⽽美的团队,⼈多会带来沟通的成本,让效率下降。

从而得出微服务的核心标准:

  • 分布式服务组成的系统
  • 按照业务而不是技术来划分组织
  • 做有生命的产品而不是项目
  • 去中心化
  • 自动化运维(Devops)
  • 容错
  • 快速演化

3、微服务设计战略

在这里插入图片描述

三、微服务改造

1、微服务架构VS单体架构

在这里插入图片描述

2、微服务架构面临的挑战

  • 运维要求较高:需要保证几十甚至几百的微服务的正常运行与协作,给运维带来很大的挑战
  • 分布式固有的复杂性:系统容错、网络延迟、分布式事务等问题需要解决
  • 接口调整成本高:修改一个微服务的API,可能需要所有使用该接口的微服务做出调整
  • 可能得重复劳动:多个微服务可能使用相同的功能,但功能本身并没有达到可以分解成微服务的程度,从而导致代码重复

3、如何改造

改造路径:

在这里插入图片描述

微服务与微服务平台

在这里插入图片描述

单体架构的微服务化

在这里插入图片描述

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

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

相关文章

实战演示:利用ChatGPT高效撰写论文

在当今学术界,撰写论文是一项必不可少的技能。然而,许多研究人员和学生在写作过程中常常感到困惑和压力。幸运的是,人工智能的快速发展为我们提供了新的工具,其中ChatGPT便是一个优秀的选择。本文将通过易创AI创作平台&#xff0c…

【PCIe 总线及设备入门学习专栏 6 -- PCIe Inbound and Outbound】

文章目录 PCIe Outbound 和 Inbound 概念详解Outbound 与 Inbound 的基础定义基于角色的详细分析关于“上游”和“下游”方向应用举例小结PCIe Outbound 和 Inbound 概念详解 PCIe(Peripheral Component Interconnect Express)是一种高速串行通信协议,用于连接主机与外部设…

24年总结 -- 共赴心中所向往的未来

一、前言 我又回来了,前阵子忙着期末考试的东西,也是快半个月没更新了,刚好前几天报名了博客之星的评选,也很幸运的入围了,也借此机会来回顾一下关于2024年的个人成长、创作经历等。 二、个人 本人是一个双非学校的软…

嵌入式产品级-超小尺寸热成像相机(从0到1 硬件-软件-外壳)

Thermal_Imaging_Camera This is a small thermal imaging camera that includes everything from hardware and software. 小尺寸热成像相机-Pico-LVGL-RTOS 基于RP2040 Pico主控与RTOS,榨干双核性能实现LVGL和成图任务并行。ST7789驱动240280屏,CST8…

网络协议入门:OSI模型与TCP/IP栈

在网络通信的世界中,数据从一台设备传输到另一台设备,需要遵循一系列规则,这些规则统称为网络协议。OSI模型和TCP/IP协议栈作为网络通信的基石,帮助我们理解数据传输的全流程。这篇文章将深入解析它们的结构、功能和实际应用&…

HackMyVM-Klim靶机的测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、信息搜集 2、Getshell 3、提权 CVE-2008-0166 四、结论 一、测试环境 1、系统环境 渗透机:kali2021.1(192.168.159.127) 靶 机:debian(192.168.159.27) 注意事…

Mysql InnoDB B+Tree是什么?

“mysql中常用的数据库搜索引擎InnoDB,其索引通过BTree的方式进行构建。” 实在想不起来BTree是怎么一回事了。以点带线,将涉及到的数据结构一起复习一下。 文章目录 数据结构定义红黑树定义使命 BTree定义使命 BTree定义 InnoDB BTree 旋转与调整二叉排序树插入删…

docker 使用远程镜像启动一个容器

使用前提: 首先你得安装docker,其次你得拥有一个远程镜像 docker run --name io_11281009 --rm -it -p 2233:22 -v .:/root/py -e ed25519_rootAAAAC3NzaC1lZDI1********Oy7zR7l7aUniR2rul ghcr.lizzie.fun/fj0r/io srv对上述命令解释: 1.docker run:…

吴恩达深度学习——神经网络介绍

文章内容来自BV11H4y1F7uH,仅为个人学习所用。 文章目录 什么是神经网络引入神经网络神经元激活函数ReLU隐藏单元 用神经网络进行监督学习监督学习与无监督学习举例 什么是神经网络 引入 已经有六个房子的数据集,横轴为房子大小,纵轴为房子…

基于GRU实现股价多变量时间序列预测(PyTorch版)

前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对抗网络、门控循环单元、长短期记…

Linux -- HTTP 请求 与 响应 报文

目录 请求报文: 请求方法 响应报文: 状态码 与 状态码描述 共性 常见的报头 请求报文: 请求方法 方法说明GET获取资源POST传输实体主体PUT传输文件HEAD获得报文首部DELETE删除文件OPTIONS询问支持的方法TRACE追踪路径CONNECT要求用…

小米平板pad6工程固件界面预览 修复tee损坏 修复底层分区 开diag端口

💝💝💝小米平板pad6 机型代码pipa。采用一块分辨率为 2880*1800p,支持 120/144Hz 高刷新率的国产屏,并且屏幕支持 HDR10 + 以及杜比视界。分别搭载 SM8250AC(骁龙 870)、SM8475(骁龙 8+)处理器。也适用于以下型号的小米机型:23043RP34G, 23043RP34I, 23043RP34C等…

day03_开发前准备和匹配类标签

文章目录 day03_开发前准备和匹配类标签一、标签体系(了解)二、数据导入(操作)1、背景介绍(重要)2、创建Hive表2.1 dwm_sold_goods_sold_dtl_i2.2 dwm_sell_o2o_order_i**2.3 dwd_mem_member_union_i**2.4 dwm_mem_member_behavior_day_i**2.5 dwm_mem_first_buy_i**3、数…

STM32之FreeRTOS开发介绍(十九)

STM32F407 系列文章 - freertos(十九) 目录 前言 一、简述 二、开源网址 三、原理及功能特性 1.原理 2.功能 3.特点 4.优缺点 四、参考书籍 五、实现方式 总结 前言 FreeRTOS是一个免费的、开源的实时操作系统,专为微控制器和嵌入…

第十三章:数据库技术

文章目录: 一:基础 1.概念 2.特点 3.常见数据库品牌 4.数据库应⽤系统 4.1 C/S 4.2 B/S 5.数据模型的分类 6.名词解析 7.关系运算 二:Access 1.基础 2.操作 2.1 建立表 2.2 维护表 2.3 创建查询 2.4 创建窗体 2.5 创建报表…

stm32 no connect target

解决 STM32 报错 “no target connected” 的方法 前言 stm32最小系统在下载程序是一直报错:no target connected,试了很多办法成功不了,最后将芯片擦除了才成功。 一、问题描述 当时是写flash的时候写到ST Link 存储的地方了。 之后就不…

综述:大语言模型在机器人导航中的最新进展!

简介 机器人导航是指机器人能够在环境中自主移动和定位的能力。本文系统地回顾了基于大语言模型(LLMs)的机器人导航研究,将其分为感知、规划、控制、交互和协调等方面。具体来说,机器人导航通常被视为一个几何映射和规划问题&…

OpenHarmony-7.IDL工具

IDL 工具 1.openharmony IDL工具 在OpenHarmony中,当应用/系统服务的客户端和服务端进行IPC(Inter-Process Communication)跨线程通信时,需要定义双方都认可的接口,以保障双方可以成功通信,OpenHarmony ID…

Docker私有仓库管理工具Registry

Docker私有仓库管理工具Registry 1 介绍 Registry是私有Docker仓库管理工具,Registry没有可视化管理页面和完备的管理策略。可借助Harbor、docker-registry-browser完成可视化和管理。Harbor是由VMware开发的企业级Docker registry服务。docker-registry-browser是…

人工智能之数学基础:线性代数中的线性相关和线性无关

本文重点 在线性代数的广阔领域中,线性相关与线性无关是两个核心概念,它们对于理解向量空间、矩阵运算、线性方程组以及人工智能等问题具有至关重要的作用。 定义与直观理解 当存在一组不全为0的数x1,x2,...,xn使得上式成立的时候,那么此时我们可以说向量组a1,a2...,an…