当前位置: 首页 > 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)保护服务间通信
    • 遥测
      • 捕获流量相关的指标,分布式跟踪
    • 策略执行
      • 强制实施配额和费率限制

边车

  • 与服务实例并行运行的进程或容器,负责实现服务运行需要的公共功能
http://www.lryc.cn/news/11942.html

相关文章:

  • Redis:数据结构
  • 2.18 设置language和中文输入法
  • 图解LeetCode——剑指 Offer 28. 对称的二叉树
  • Qt Desginer布局方法
  • C/C++、Java、Python的比较及学习(3)
  • 智慧校园建设方案
  • ARM uboot 源码分析5 -启动第二阶段
  • 【ip neigh】管理IP邻居( 添加ARP\NDP静态记录、删除记录、查看记录)
  • Java程序员线上排查问题神器-Arthas
  • 上市公司企业持续创新能力、创新可持续性(原始数据+计算代码+计算结果)(2008-2021年)
  • 华为OD机试 - 考古学家(JS)
  • Leetcode.2100 适合打劫银行的日子
  • linux ubuntu查日志信息以及错误排查
  • DOS经典软件,落下帷幕,新型国产平台,蓬勃发展
  • MongoDB数据存储格式
  • ARC126D Pure Straight
  • 基于RK3588的嵌入式linux系统开发(四)——uboot镜像下载(基于RKDevTool工具)
  • 设计模式之策略模式与责任链模式详解和应用
  • 广度优先搜索(BFS)-蓝桥杯
  • Java Type类
  • Springboot扩展点之CommandLineRunner和ApplicationRunner
  • ngixn 常用配置之文件类型与自定义 log
  • 【100个 Unity实用技能】 | Unity 通过自定义菜单将资源导出
  • 0.3调试opencv源码的两种方式
  • Redis的常见操作和Session的持久化
  • TypeScript笔记(二)
  • 【MyBatis】源码学习 03 - 类型处理器 TypeHandler
  • 建造《流浪地球2》中要毁灭人类的超级量子计算机MOSS的核心量子技术是什么?
  • 数据结构~七大排序算法(Java实现)
  • python练习