当前位置: 首页 > news >正文

微服务架构设计模式-(15)部署

关联概念

  • 流程
    • 将软件投入到生产环境
  • 架构
    • 软件运行的环境结构

生产环境四个关键功能

  • 服务管理接口
    • 使开发人员能够创建、更新和配置服务
  • 运行时服务管理
    • 确保始终运行一定数量的服务实例
    • 非中断更新
  • 监控
    • 让开发人员了解服务情况,包括日志文件和各种应用指标
    • 可观测性
  • 请求路由
    • 将用户的请求路由到服务

部署模式

  • 编程语言特定的发布包格式
  • 举例
    • js
      • 发布就是发布源代码+模块目录
    • go
      • 某个目录下的可执行文件

部署模式一
直接将发布包部署到机器上的问题

  • 缺乏对技术栈的封装
    • 运维需要了解服务的具体细节,比如说用什么实现的啊,如果是web应用,那么需要安装apache啊
  • 无法约束服务实例消耗的资源
    • 一个进程可能消耗掉整个机器的资源
  • 缺少隔离
    • 多个服务同时运行时,不可靠,服务之间相互影响
  • 很难定位实例的位置

部署模式二
将服务部署为虚拟机

  • 虚拟机镜像打包部署到生产环境,每个服务实例都是一个虚拟机
  • 好处
    • 封装了技术栈
    • 隔离了服务实例
    • 使用了成熟的云计算基础设施
  • 弊端
    • 资源利用效率低
      • 一个服务拥有整个虚拟机的开销,包括操纵系统
    • 部署速度慢
      • 构建虚拟机需要几分钟
    • 系统管理额外开销
      • 操纵系统有时候需要打补丁

部署模式三

  • 将服务部署为容器
  • docker
    • 构建docker镜像
      • dockerfile描述如何构建镜像
      • docker build
    • 把docker镜像推送到镜像仓库
    • 运行docker容器
      • docker run
        • 从容器中拉取镜像
        • 创建并启动
  • 好处
    • 封装技术栈
    • 服务实例隔离
    • 服务实例资源受到限制
    • 轻量级,快速
  • 弊端
    • 需要承担大量的容器镜像管理工作
    • 负责给系统和运行时打补丁

Kubernetes

  • docker编排框架,docker之上的一个软件层
  • 将一组计算机硬件资源转换程运行服务的单一资源池
    • 只需要告诉编排框架运行n个实例,其他由它帮你搞定
  • docker编排框架功能
    • 资源管理
      • 一组计算机,变成一个资源迟,一个计算机
    • 调度
      • 选择要运行容器的机器
        • 意思是把服务功能有关系的部署到同一台机器上
    • 服务管理
      • 服务的名词对应到具体服务
      • 服务版本管理
  • 架构
    • 主节点
      • 负责管理集群
      • 运行多个组件
        • API服务器
          • k8s命令
        • etcd
          • 存储集群数据键值的NoSql数据库
        • 调度器
          • 选择要运行的Pod的节点
        • 控制器管理器
          • 运行控制器,确保集群状态与预期状态匹配
    • 普通节点
      • 运行一个或多个pod
        • pod由一组容器组成
      • 运行多个组件
        • kubelet
          • 创建和管理节点上运行的pod
        • kube-proxy
          • 管理网络,包括跨pod的负载均衡
        • pods
          • 应用程序服务
  • 关键概念
    • Pod
      • 基本部署单元
    • Deployment
      • Pod的声明性规范
      • 每个服务都是k8s的一个deployment,控制pod的数量和版本
    • Service
      • 向客户端提供的一个静态/稳定的网络地址
      • 具有一个IP和DNS名称,并对一个或多个Pod的流量进行负载均衡
        • 这里的IP和DNS只能在K8s内部访问
        • 当然可以配置成外部访问
    • ConfigMap
      • 键值对的配置
        • pod的定义中可以引用

Istio

  • 一个链接、管理和保护微服务的开放平台
  • 是网络层,所有的网络流量都通过Istio进行处理
  • 功能
    • 流量管理
      • 服务发现
      • 负载均衡
      • 路由规则
      • 断路器
    • 通信安全
      • 传输层安全协议(TLS)保护服务间通信
    • 遥测
      • 捕获流量相关的指标,分布式跟踪
    • 策略执行
      • 强制实施配额和费率限制

边车

  • 与服务实例并行运行的进程或容器,负责实现服务运行需要的公共功能

相关文章:

微服务架构设计模式-(15)部署

关联概念 流程 将软件投入到生产环境 架构 软件运行的环境结构 生产环境四个关键功能 服务管理接口 使开发人员能够创建、更新和配置服务 运行时服务管理 确保始终运行一定数量的服务实例非中断更新 监控 让开发人员了解服务情况,包括日志文件和各种应用指标可观…...

Redis:数据结构

简单动态字符串SDS Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组,以下简称C字符串),而是自己构 建了一种名为简单动态字符串(simple dynamic string, SDS)的抽象类型,并将SDS用作Redis的默认字符 串表示。 SDS 的实现…...

2.18 设置language和中文输入法

文章目录一:设置language二:设置中文输入法一:设置language nvidia的开发板上默认只有English,需要点击如下管理: 接着进入如下界面: 此时图中的“汉语(中国)”应该是没有的&…...

图解LeetCode——剑指 Offer 28. 对称的二叉树

一、题目 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 二、示例 2.1> 示例 1: 【输入】root [1,2,2,3,4,4,3] 【输出】true 2.2> 示例 2: 【输入】root [1,2,2,nul…...

Qt Desginer布局方法

首先将我们需要的控件拖拽到一个合适的位置,该例子中用到了两个label,两个lineEdit和两个pushButton。 然后我们需要利用弹簧来控制控件到控件之间的距离以及控件到窗体边界的距离,因为这里只有一组控件(两个label,两个…...

C/C++、Java、Python的比较及学习(3)

函数间的值传递与地址传递 值传递方式:指主调函数把实参的值赋给形参。 在这种传递方式下,主调函数中的实参地址与被调函数中的形参地址是相互独立的。 函数被调用时,系统为形参变量分配内存单元,并将实参的值存入到对应形参的内存…...

智慧校园建设方案

第一章、 智慧教学 6.1. 校本资源库 提供校本资源管理功能,实现学校内的教学资源的共建共享,促进教师之间的交流学习,提升学校的整体教学水平。在本系统中学校可以统一采购资源接入到校本资源库中供教师下载使用,教师也可以将…...

ARM uboot 源码分析5 -启动第二阶段

一、start_armboot 解析6 1、console_init_f (1) console_init_f 是 console(控制台)的第一阶段初始化。_f 表示是第一阶段初始化,_r 表示第二阶段初始化。有时候初始化函数不能一次一起完成,中间必须要夹杂一些代码,…...

【ip neigh】管理IP邻居( 添加ARP\NDP静态记录、删除记录、查看记录)

一、邻居管理存在状态 1、NUD_NONE: 初始状态。当一个新的路由缓存条目被创建时,arp_bind_neighbour()函数被调用.如果找不到相匹配的ARP缓存条目, neigh_alloc()将创建一个新的ARP缓存条目并设置状态为NUD_NONE. 2、NUD_INCOMPLETE:未完成状…...

Java程序员线上排查问题神器-Arthas

文章目录前言一、Arthas是什么?二、快速入门1.下载2.如何运行三、常用命令1.dashboard2.trace总结前言 最近公司项目版本迭代升级,在开发新需求导致没什么时间写博客。 在开发需求的过程中,我写了一个接口,去批量调内部已经写好…...

上市公司企业持续创新能力、创新可持续性(原始数据+计算代码+计算结果)(2008-2021年)

数据来源:自主计算 时间跨度:2008-2021年 区域范围:沪深A股上市公司 指标说明: 参考何郁冰(2017)[1]的做法,将持续创新作为独立研究变量,同时采用创新投入指标(研发经费) 和创新…...

华为OD机试 - 考古学家(JS)

考古学家 题目 有一个考古学家发现一个石碑 但是很可惜 发现时其已经断成多段 原地发现N个断口整齐的石碑碎片 为了破解石碑内容 考古学家希望有程序能帮忙计算复原后的石碑文字组合数 你能帮忙吗 备注: 如果存在石碑碎片内容完全相同,则由于碎片间的顺序不影响复原后的碑…...

Leetcode.2100 适合打劫银行的日子

题目链接 Leetcode.2100 适合打劫银行的日子 Rating : 1702 题目描述 你和一群强盗准备打劫银行。给你一个下标从 0开始的整数数组 security,其中 security[i]是第 i天执勤警卫的数量。日子从 0开始编号。同时给你一个整数 time。 如果第 i天满足以下所…...

linux ubuntu查日志信息以及错误排查

目录 一、linux的日志文件 1、常用日志文件 2、其他日志文件 二、历史日志的查看 1、查看Logrotate的配置信息 2、查看日志配置 一、linux的日志文件 Linux系统中最有趣的(可能也是最重要的)目录之一是/var/log。根据文件系统层次结构标准,在系统中运行的大多数…...

DOS经典软件,落下帷幕,新型国产平台,蓬勃发展

提起DOS时代,总让人难以忘怀,陷入深深回忆中,风靡一时的许多软件,如今早已不在,这几款被称为DOS必装的软件,更是让人惋惜。 你还记得这图吗?堪称DOS系统最经典的软盘复制与映像生成软件&#xf…...

MongoDB数据存储格式

前言 之前分享了MongoDB的基本命名和视图等信息,本文分享一下MongoDB的数据存储类型,使用方式。基础的MongoDB信息就学习完啦,之后会继续分享MongoDB进阶的一些东西。 MongoDB数据存储格式前言1 文件结构1.2 字段名称2 点符号2.2 嵌入式文件…...

ARC126D Pure Straight

ARC126D Pure Straight 题目大意 给一个长度为nnn的整数序列A(a1,a2,…,an)A(a_1,a_2,\dots,a_n)A(a1​,a2​,…,an​),其中ai∈[1,k]a_i\in [1,k]ai​∈[1,k]。 你可以做如下操作任意次: 交换相邻两个元素 求最小的操作次数,使得序列AA…...

基于RK3588的嵌入式linux系统开发(四)——uboot镜像下载(基于RKDevTool工具)

官方提供的SDK中包含RKDevTool工具(RKDevTool_Release_v2.92)和相应的驱动(DriverAssitant_v5.1.1)。本节主要介绍在windows操作系统环境下利用RKDevTool下载以上生成的uboot镜像和bootloader镜像。注意:本节使用的板卡…...

设计模式之策略模式与责任链模式详解和应用

目录1.策略模式1.1 目标1.2.内容定位1.3.定义1.4.应用场景1.5.促销优惠业务场景1.6 用策略模式实现选择支付方式的业务场景1.7 策略模式在框架源码中的体现1.8 策略模式的优缺点2 责任链模式2.1 责任链楼式的应用场景2.2 利用责任链模式进行数据校验拦截2.3 责任链模式和建造者…...

广度优先搜索(BFS)-蓝桥杯

一、BFS搜索的原理BFS搜索的原理:“逐层扩散”,从起点出发,按层次从近到远,逐层先后搜索。编码:用队列实现。应用:BFS一般用于求最短路径问题,BFS的特点是逐层搜索,先搜到的层离起点…...

Veo 2提示词效能跃迁实战(工业级Prompt链构建全图谱)

更多请点击: https://codechina.net 第一章:Veo 2提示词编写的核心范式演进 Veo 2作为新一代视频生成模型,其提示词(prompt)工程已从早期的“关键词堆叠”转向结构化、语义分层与意图对齐的复合范式。这一演进并非简…...

别再死记硬背了!用Multisim仿真+图解,5分钟搞懂三极管共射放大电路工作原理

用Multisim仿真图解5分钟掌握三极管共射放大电路三极管共射放大电路是电子技术中最基础也最关键的电路之一,但传统教材中复杂的公式推导和静态图解往往让初学者望而生畏。本文将带你用Multisim仿真软件,通过可视化的方式直观理解电路工作原理&#xff0c…...

DeepSeek系统设计辅助效能断崖式下降的3个信号,第2个90%工程师至今未察觉!

更多请点击: https://kaifayun.com 第一章:DeepSeek系统设计辅助效能断崖式下降的3个信号,第2个90%工程师至今未察觉! 当 DeepSeek 的系统设计辅助能力突然变“笨”——接口建议频繁失准、上下文感知错乱、生成代码无法通过基础编…...

Agent开发面试通关攻略:吃透稳拿offer

阅读前置:2026年当下最卷也最缺人的AI岗位,一定是AI Agent开发。最近刷遍CSDN、牛客、力扣最新面经,发现一个非常明显的招聘趋势:普通大模型微调岗位饱和内卷,而AI Agent开发岗位人才严重缺口,薪资更高、竞…...

别再盲跑了!手把手教你用Arduino Zero在IDE 2.0里设置断点单步调试

告别盲跑时代:Arduino Zero与IDE 2.0的源码级调试实战指南 当你的Arduino项目逻辑越来越复杂,仅靠串口打印调试就像在迷宫里摸黑前行——直到遇见Arduino Zero与IDE 2.0的调试组合。本文将揭示如何用这套工具实现 源码级精准调试 ,即使你手…...

sudo企业级应用【20260525】001篇

文章目录 一、总体设计思路 1️⃣ 设计原则 2️⃣ 日志策略(重点) 二、10 个真实生产场景(含 sudoers 配置) 🔹 Linux 系统管理(3 个) ✅ 场景 1:基础运维(用户 / 权限) ✅ 场景 2:磁盘与文件系统 ✅ 场景 3:网络与防火墙 🔹 云管理(2 个) ✅ 场景 4:云 CLI …...

嵌入式快速原型开发:基于Sceptre平台与LPC2148的实战指南

1. 项目概述:Sceptre,一个被低估的嵌入式快速原型利器 在嵌入式开发的世界里,我们总是在寻找那个“刚刚好”的平台:它要足够强大,能跑复杂的算法;要足够小巧,能塞进各种外壳;要足够便…...

FeHelper前端助手:30+开发工具集,让你的浏览器变身效率神器

FeHelper前端助手:30开发工具集,让你的浏览器变身效率神器 【免费下载链接】FeHelper 😍FeHelper--Web前端助手(Awesome!Chrome & Firefox & MS-Edge Extension, All in one Toolbox!) 项目地址:…...

Sora 2 MOV导出画质崩坏真相:HDR10元数据丢失、BT.2020色域截断、帧率标志位误写——3大隐性缺陷紧急修复方案

更多请点击: https://intelliparadigm.com 第一章:Sora 2 MOV导出画质崩坏的系统性认知 Sora 2 在生成高保真视频后,导出为 MOV 格式时频繁出现色度抽样失真、动态范围压缩、帧间伪影加剧等现象,其本质并非单一环节失效&#xff…...

航空发动机叶片三维扫描-诺斯顿

航空发动机叶片作为发动机的核心动力部件,其精度与性能直接决定发动机的推力、燃油效率及运行安全性,三维扫描技术作为航空制造领域的核心数字化手段,已广泛应用于叶片全生命周期的多个关键环节。其应用涵盖叶片研发设计阶段的逆向工程&#…...