世界两万英尺范围内,均分布有运维体系架构

2023-11-19

​       几年前,Microsoft 与技术领先的社区专家合作发布了一本受欢迎的指导书,标题为《适用于容器化 .NET 应用程序的 .NET 微服务》,深入探讨了构建分散式应用程序的原则、模式和最佳做法。 其中包括一个功能齐全的微服务参考应用程序,展示了体系结构概念。 名为 [eShopOnContainers] 的应用程序托管了一个电子商务店面,该店面销售各种商品,包括服装和咖啡杯。 该应用程序在 .NET 中构建,是跨平台的,可以在 Linux 或 Windows 容器中运行。 原始 eShop 体系结构如下:

eShop开发环境架构图

       多年以来,微软的官方示例代码由『宠物商店』发展到『花店』再蜕变为如今的『易商城』,这是从传统三层架构基于wcf的分布式领域模型再到基于容器的微服务的开发方式上的质的跃迁。但相比于依托在Windows系统和WCF桌面技术下成熟的花店系统,易商城在分布式下作为一个开发环境架构的弊端也非常明显:

1、缺少分布式框架和操作系统支持,造成分布式面临的状态管理、服务调用、企业总线、可观察性等难点均需要开发人员去解决。问题是他们有能力去解决吗?能解决的足够完美吗?当开发人员被迫的将主要精力集中在一大堆的非业务的问题上时,那表示整个项目组面临着被拖入泥潭的风险,必将严重拖慢开发节奏。

2、开发环境架构图过于复杂,几乎是网上的微服务架构图的翻版,在实际开发过程中,图中的每个节点都需要至少数名开发人员参与其中。在没有谈论具体业务的情况下,需要集中起来的开发人员就冲着100多位去了,这不现实。

3、后期运维工作艰难。前面两点造成的后遗症就是给项目上线后的运维工作带来了巨大的挑战。复杂开发环境架构转换到生产需要巨大的工作量,同时开发过程中各种不完美的解决方案的弊端将会纷纷暴露出来。当线上诸多业务与非业务的问题串联发生时,你会发现每天的下班时间都是考验运维人员的经典时刻。

      值得称道的是,微软还随附了 eShop 的一个更新版本。 它就是 eShopOnDapr。 此更新通过集成 Dapr 构建基块来改进早期 eShopOnContainers 应用程序。 新的解决方案体系结构如下:

eShop运维体系架构图 

       设计微服务应用时,需要考虑诸多因素。 Dapr提供了一些常用功能的最佳实践,上图中的1~6指的分别是Dapr的执行组件、绑定、发布订阅、机密管理、服务调用和状态管理构建基块。   

       在 eShopOnDapr 中,Dapr 构建基块取代了大量复杂且容易出错的管道代码,剥离出原来的业务逻辑代码然后再新加一个挎斗,包括状态管理、服务调用、发布订阅、机密管理等在内的工作都是由挎斗来负责的,这起到了应用逻辑层面和架构层面的隔离作用,从而形成开发人员负责开发业务逻辑,运维人员负责挎斗维护的最佳状态。

       Dapr简化了微服务的开发和部署,使开发人员专注于业务,全程处于业务员的高度,大大提升了开发效率,而运维人员负责挎斗维护,也使项目组不再担心项目的平稳落地。想象一下开发人员每一天都是乘坐飞机在 20,000 英尺的高空中工作的, 当他看向窗外,从广阔的角度看到下面的风景,会发现——世界两万英尺范围内,均分布有运维体系架构。

参考资料:

[1].NET 应用程序体系结构指南 

[2]Dapr官方文档

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

世界两万英尺范围内,均分布有运维体系架构 的相关文章

  • Go 语言输出文本函数详解

    Go语言拥有三个用于输出文本的函数 Print Println Printf Print 函数以其默认格式打印其参数 示例 打印 i 和 j 的值 package main import fmt func main var i j stri
  • 测试人员如何管理项目与风险预警

    在平时工作过程中 你有没有因项目延时 需求频繁变更 开发提测质量不高 以及漏测的情况下 背了不少锅的情况呢 作为测试人员 我们应该如何发挥积极主动性 进行项目管理 有效的控制项目流程 在项目流程推过过程中 如果出现有风险 如何进行高效及时的
  • Linux学习教程 Linux入门教程(超全面 超详细)收藏这一篇就够了

    Linux是什么 linux是一个开源 免费的操作系统 其稳定性 安全性 处理多并发能力已经得到业界的认可 目前大多数企业级应用甚至是集群项目都部署运行在 linux操作系统 之上 很多软件公司考虑到开发成本都首选linux 在中国软件公司
  • 卖过房,进过厂,毕业两年后这个99年的小哥哥毅然转行车载测试,收入翻番!

    21年大学毕业的时候 我就知道可能接下来找工作是个难题 这年头 大学生早就不值钱了 毕业生人数一年比一年高 但企业的招聘岗位却只有那么几个 再加上疫情影响 各行各业都在缩减开支 减少招聘 985 211等重点大学的人才人家还挤破头 哪里还有
  • 深入微服务架构 | 微服务与k8s架构解读

    微服务项目架构解读 什么是微服务 微服务是指开发一个单个小型的但有业务功能的服务 每个服务都有自己的处理和轻量通讯机制 可以部署在单个或多个服务器上 微服务也指一种种松耦合的 有一定的有界上下文的面向服务架构 也就是说 如果每个服务都要同时
  • 浅谈Django之单元测试

    一 什么是 单元测试 单元测试 是用来对一个模块 一个函数或者一个类来进行正确性检验的测试工作 如果测试通过则说明我们这个函数或功能能够正常工作 如果失败要么 测试用例 不正确 要么函数有bug需要修复 二 如何使用单元测试 from dj
  • 【HttpRunner】接口自动化测试框架

    简介 2018年python开发者大会上 了解到HttpRuuner开源自动化测试框架 采用YAML JSON格式管理用例 能录制和转换生成用例功能 充分做到用例与测试代码分离 相比excel维护测试场景数据更加简洁 在此 利用业余时间研究
  • GoLong的学习之路,进阶,微服务之序列化协议,Protocol Buffers V3

    这章是接上一章 使用 RPC包 序列化中没有详细去讲 因为这一块需要看的和学习的地方很多 并且这一块是RPC中可以说是最重要的一块 也是性能的重要影响因子 今天这篇主要会讲其使用方式 文章目录 Protocol Buffers V3 背景以
  • MySQL安装

    MySQL安装 MySQL在MAC下安装 下载 brew install mysql mysql server 在support files下 启动服务 mysql server start windows启动命令 net start my
  • 达芬奇18.6DaVinci ResolveStudio(Win/Mac)激活版

    DaVinci Resolve Studio 18是一款业界领先的视频后期制作软件 它集成了剪辑 调色 视觉特效 动态图形和音频后期制作等功能 为用户提供了完整的创作解决方案 该软件不仅适用于电影 电视和网页内容的制作 还广泛应用于广告 纪
  • 外包干了2个月,技术退步明显了...

    先说一下自己的情况 大专生 19年通过校招进入湖南某软件公司 干了接近4年的功能测试 今年8月份 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了2年的女朋
  • Python 微服务架构指南

    概要 微服务架构作为一种设计风格 它将应用程序构建为一套小服务的集合 每个服务实现特定的业务功能 这些服务可以独立部署 扩展并围绕特定业务能力构建 Python 凭借其简洁易读的语法和强大的库生态系统成为实现微服务的受欢迎选择 本文将详细介
  • C 语言文件读取全指南:打开、读取、逐行输出

    C 语言中的文件读取 要从文件读取 可以使用 r 模式 FILE fptr 以读取模式打开文件 fptr fopen filename txt r 这将使 filename txt 打开以进行读取 在 C 中读取文件需要一点工作 坚持住 我
  • 软件测试|Pydantic详细介绍与基础入门

    简介 Pydantic 是一个强大的 Python 库 用于数据验证和解析 特别是用于处理 JSON 数据 它的主要目标是使数据验证和解析变得简单 直观和可维护 本文将介绍 Pydantic 的基础知识 包括如何定义模型 验证数据以及处理错
  • Docker 安全必知:最佳实践、漏洞管理与监控策略

    容器安全是实施和管理像 Docker 这样的容器技术的关键方面 它包括一组实践 工具和技术 旨在保护容器化应用程序及其运行的基础架构 在本节中 我们将讨论一些关键的容器安全考虑因素 最佳实践和建议 容器隔离 隔离对于确保容器化环境的强大性和
  • C# 介绍、应用领域、入门、语法、输出和注释详解

    什么是 C C 发音为 C Sharp 是一种由 Microsoft 创建的面向对象的编程语言 运行在 NET Framework 上 源于 C 家族 与流行的语言如 C 和 Java 相近 首个版本发布于 2002 年 而最新版本 C 1
  • Go 语言运算符详解:加法、算术、赋值、比较、逻辑和位运算符全面解析

    运算符用于对变量和值执行操作 加号运算符 将两个值相加 如下面的示例所示 示例代码 package main import fmt func main var a 15 25 fmt Println a 尽管加号运算符通常用于将两个值相加
  • 软件测试|Pydantic处理时间类型数据

    简介 我们之前介绍过使用 pydantic 验证数据 比如校验数据的格式等 但是在我们的日常工作中 还有一种数据是需要我们验证的 比如时间数据 时间数据不同于字符串 列表等数据 与他们的验证不一样 本文就来为大家介绍一下 pydantic
  • DockerCompose - 微服务项目部署全过程(最佳实践)

    目录 一 微服务项目部署 1 1 项目介绍 1 2 准备 MySQL 初始化文件 1 3 pom xml 插件 1 4 测试工作 1 5 编写 Dockerflie 文件 1 6 编写 DockerCompose yml 文件 1 7 修改
  • 如何打赢稳定性之战?

    文章目录 前言 为什么总会出现问题呢 如何证明你的稳定性做的有效果 既是持久战 也是防御战 1 提前建筑好防御工事 2 以攻为守 3 找外部支援和配合 前言 随着23年年末期间 各大厂争先恐后的出现的各种线上

随机推荐

  • vant + moment插件自定义count-down倒计时

    根据vant官网https vant ui github io vant v2 zh CN按需引入找到倒计时 自定义时间格式参考下图
  • matlab2016b版本安装

    安装包下载地址 链接 https pan baidu com s 1RrUp8TBIa7g7mhfSUtqAsg 提取码 foc1 1 解压文件包 2 在 matlab R2016b 64bit 文件下 找到 setup 文件 右击选择 以
  • 【C++】_5.模板

    目录 1 泛型编程 2 函数模板 2 1 概念 2 2 函数模板格式 2 3 函数模板原理 2 4 函数模板的实例化 2 5 函数模板的匹配原则 3 类模板 4 非类型模板参数 5 模板的特化 5 1 概念 5 2 函数模板特化 5 3 类
  • 解析request.getParameter() 和request.getAttribute() 区别

    一 request getParameter 和request getAttribute 区别 1 request getParameter 取得是通过容器的实现来取得通过类似post get等方式传入的数据 request setAttr
  • django高并发部署

    django高并发部署
  • React解密:React Hooks函数之useCallback和useMemo

    之所以将useCallback和useMemo放到一起 从某种意义上说 他们都是性能优化的始作俑者 他们也有很多的共性 我们先来回顾一下class组件性能优化的点 调用 setState 就会触发组件的重新渲染 无论前后 state 是否相
  • 64位系统树莓派部署yolo-fatestv2---超多坑

    最近在研究yolo fastest 开始面对作者大大的一堆部署的指令在pycharm的终端里面一顿操作 然后一路报错 后来才发现原来都是linux的指令 后来在虚拟机上也尝试部署过 成功之后本来想直接挪到树莓派上 但是尝试许久都以失败告终
  • mysql修改权限

    mysql权限 显示用户权限 mysql gt show grants for jeffrey localhost 一般 数据库管理员首先建立用户 定义其非特权特征 例如其密码 是否使用安全链接以及对服务器资源的访问限制 而后使用grant
  • java枚举类的定义和使用

    开始时间 2018年8月11日11 04 35 结束时间 2018年8月11日12 30 37 累计 1小时 枚举类的对象是有限个 对象个数 一个可以看做单例模式的实现 多个 为枚举类 1 如何定义 cccccccc 1 私有化类的构造器
  • 服务器虚拟化解决方案

    根据以往经验推断 一台主流双路 PC 服务器可以承担 3 6 个应用系统在其 上运行 本期项目总共有 N 个业务系统 考虑到硬件资源需具备一定的冗余能 力和实现高可用 HA 在线迁移 动态调度 后期扩展等诸多因素 推荐 2 台双 路 PC
  • 智能指针 -- unique_ptr

    源码分析 源码链接 gcc unique ptr h at master gcc mirror gcc GitHub 上面链接中的源码是unique ptr的完整定义 我们来简化其类结构看看 template
  • Android基础面试常常死在这几个问题上,小白也能看明白

    前言 疫情一过 我相信将会是面试求职的高峰时期 如果此时手里有份高质量的面试宝典 那么你将得心应手面对考官各种问题 虽然不敢保证你能应聘上心仪的职位 但是能保证看完这些内容你的收获将超乎你的想象 此份面试宝典搜集各大网络平台 如果侵权 请您
  • 【黑叔说】之《进阶必备知识》(一)

    前言 每天一分钟 通勤跟我学 进阶知识点 系列的知识 来自互联网 由黑叔总结或改编 仅供参考 一 前端模块化 二 webpack简易版实现 function modules function require fileName const f
  • 单片机流水灯C语言实验报告,单片机LED灯实验报告.doc

    桂林电子科技大学 实验报告 2016 2017 学年第一学期 开 课 单 位 海洋信息工程学院 适用年级 专业 14级机械 课 程 序 号 BS1615000 03 课 程 代 码 BS1615000 实 验 名 称 流水灯 流水灯实验报告
  • 6种方法计算神经网络参数量Params、计算量FLOPs、Macs简单代码

    方法1 统计模型参数量 total sum param nelement for param in model parameters print Number of parameter 2fM total 1e6 方法2 统计flops和参
  • Python——报数出圈

    编写程序 模拟报数游戏 有n个人围成一圈 顺序编号 从第一个人开始从1到k 假设k 3 报数 报到k的人退出圈子 然后圈子缩小 从下一个人继续游戏 问最后留下的是原来的第几号 n int input 请输入总人数 n k int input
  • 解决JavaScript中new Date(string)在IE不兼容的问题

    1 问题描述 let date 2018 09 17 let dateStr new Date date let year dateStr getFullYear let month dateStr getMonth 1 let day d
  • 【Unity2d】带你制作一款类似于金山打字的小游戏

    博主大概08年开始接触电脑游戏 当时玩的是我哥的电脑 那时候家里没网 只可以玩电脑上自带的单机游戏 比如扫雷 蜘蛛纸牌等等 当然还有红色警戒 冰封王座 星际争霸 帝国崛起等等 这些大概是我哥当时在大学下载的 也是那个时候对游戏充满了兴趣 记
  • 第十一届蓝桥杯c/c++省赛大学B组(第一次)

    目录 A题 跑步训练 5 模拟 B题 纪念日 5 年月日 C题 合并检测 10 找规律 D题 REPEAT程序 10 模拟 E题 矩阵 15 DP F题 整数序列 15 G题 解码 20 模拟 H题 走方格 20 dfs I题 整数拼接 2
  • 世界两万英尺范围内,均分布有运维体系架构

    几年前 Microsoft 与技术领先的社区专家合作发布了一本受欢迎的指导书 标题为 适用于容器化 NET 应用程序的 NET 微服务 深入探讨了构建分散式应用程序的原则 模式和最佳做法 其中包括一个功能齐全的微服务参考应用程序 展示了体系