微服务架构中服务的编排

单体系统拆分成一堆微服务,服务治理部署运维时会遇到很多挑战和问题,服务编排就是指如何把这些服务组织到一起,解决这些问题。

可以类比积木搭城堡。积木就是你的一大堆微服务、依赖的各个组件,城堡就是指整个微服务系统。搭城堡不是简单的把一堆积木哗啦啦倒一起,要考虑每个位置放什么积木,同样,微服务的编排也要考虑非常多的事情。

编排(Orchestration)这个词有点抽象,我们用一个实例来说明微服务编排到底指哪些事情: 假如现在准备用Kubernetes来编排一套微服务系统,要考虑哪些事情呢?

  • 服务依赖的基础组件,比如数据库、缓存服务,这些组件如何部署,如何访问?
  • 服务的配置,比如数据库账号、密钥等,这些放到哪里?
  • 不同服务和组件之间的隔离策略如何配置,混合部署还是独占,混布策略是什么?
  • 不同服务之间是否有依赖关系,如何处理?
  • 服务之间通信,如何发现彼此,网络上如何隔离?
  • 每个服务需要部署多少实例,资源配额分别是多少,负载均衡策略是什么?
  • 需要自动扩缩容的服务,自动伸缩的策略如何配置?
  • 服务如何暴露到外界,访问入口如何配置?
  • 每个服务在健康时才能放行流量,服务健康检查要如何配置?
  • 可观测性四连:日志、监控、告警、链路追踪,相关的基础设施组件怎么部署,服务如何接入?
  • 每个服务在启动时和关闭时,是否需要执行额外的脚本,来做一些初始化或优雅退出的工作?
  • 金丝雀发布如何实现,流量灰度的策略是什么?

这些全部都是编排相关的问题。要解决这些问题,需要创建Kubernetes抽象出来的资源(Deployment,ConfigMap,Persistent Volume,Volume,Secret,Service,Ingress,HPA,PVC,NetworkPolicy ...),以及一些内部细节(Pod Spec, Affinity,LifeCycle Hook、Probe ...),配合一些在Kubernetes生态下的组件(Prometheus Operator,istio,Jaeger,EFK ...)共同解决。

一边想这些问题,一边写Kubernetes Yaml、Kubernetes CRD Yaml,就是在做服务编排(如果不用Kubernetes,用Docker compose、Docker Swarm做编排也可以,但Kubernetes已经是事实标准,本文不讨论非Kubernetes的情况)。

Kubernetes中的微服务的容器化编排,狭义上可以认为就是给各个服务写好Deployment、Service、Ingress这几个资源定义的Yaml,就可以按照这些编排文件部署出来了。

然而,微服务的运维挑战,更多的在于服务治理、可观测性,以及基础设施组件如何管理。在做编排时要考虑的事情非常多,这些事情反映到声明式编排文件上会非常复杂。我个人理解的服务编排,是包括这些所有相关的事情的,不仅是狭义上的写几个简单的Yaml,那样是没法满足大规模系统的产线要求的。

延伸一下,既然编排一套微服务系统如此复杂,有没有简化的办法呢?

目前广泛使用的是Helm和Kustomize,通过把一些动态参数抽离和模板渲染,比直接写原生Yaml舒服很多,减少了重复性工作。另外,阿里云和微软云一起搞了个OAM[1],来简化编排过程、分离不同角色的关注点,用OAM定义的CRD可以让编排过程更加简单,其运行时CrossPlane[2]项目也已经在CNCF中,有兴趣可以了解一下。微服务架构中服务的编排

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

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

相关文章

玩转HTML5+跨平台开发[4] HTML表格标签

表格标签 在过去表格标签用的非常非常的多, 绝大多数的网站都是使用表格标签来制作的, 也就是说表格标签是一个时代的代表 http://2004.sina.com.cn作用:以表格形式将数据显示出来, 当数据量非常大的时候, 表格这种展现形式被认为是最为清晰的一种展现形式格式: table定义表格t…

硬件知识:如何快速挑选一款好的固态硬盘?

固态硬盘作为目前旗舰电脑必备的存储设备,可以大幅度提高电脑的运行速度,拥有一块好的固态硬盘,还是十分有必要的,今天小编给大家分享如何挑选一款好的固态硬盘,希望对大家能有所帮助! 1、跑分 大家可以直…

你知道CDN是什么吗?本文带你搞明白CDN

最近在了解边缘计算,发现我们经常听说的CDN也是边缘计算里的一部分。那么说到CDN,好像只知道它中文叫做内容分发网络。那么具体CDN的原理是什么?能够为用户在浏览网站时带来什么好处呢?解决这两个问题是本文的目的。 CDN概念 CD…

Swift - 警告提示框(UIAlertController)的用法

import UIKitclass ViewController: UIViewController {override func viewDidLoad() {super.viewDidLoad()}override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {// 创建let alertController UIAlertController(title: "提示",…

运维笔记:Windows下如何实现nginx服务自启动

目录 下载Windows Service Wrapper nginx-service.exe 拷贝到nginx的根目录当中 创建配置文件 管理员身份运行安装Nginx服务命令 Nginx作为有每一个两三年工作经验的程序员来说都不陌生&#xff0c;基本上每个线上部署的项目都需要用到&#xff0c;Nginx常用的功能有负载均衡、…

你知道三地五中心吗

两地三中心这个架构&#xff0c;如下图&#xff1a; 这种架构具备容灾能力&#xff0c;比如生产数据中心停电了&#xff0c;那么可以把所有流量都切到同城灾备中心或异地灾备中心&#xff0c;那么现在的问题是假如真到了停电的那一天&#xff0c;你敢把所有的流量都切到灾备中心…

HTML5学习笔记(五):CSS基础

CSS 指层叠样式表 (Cascading Style Sheets)&#xff0c;在网页中用来定义网页的元素如何进行显示。 CSS 对大小写不敏感。不过存在一个例外&#xff1a;如果涉及到与 HTML 文档一起工作的话&#xff0c;class 和 id 名称对大小写是敏感的。 书写格式 CSS 规则由两个主要的部分…

Win10操作系统隐藏6个实用小功能

目录 功能一、分屏 功能二、录屏 功能三、截图 功能四、便签功能 功能五、视频剪辑 功能六、计算器 功能一、分屏 Win10操作系统其实是自带分屏功能的&#xff0c;这个功能对我来说真的太喜欢了&#xff0c;尤其是核对文档的时候&#xff0c;真的是太方便了&#xff01; 操作方…

面试一口气说出Spring的声明式事务@Transactional注解的6种失效场景

一、Spring事务管理的两种方式 事务管理在系统开发中是不可缺少的一部分&#xff0c;Spring提供了很好事务管理机制&#xff0c;主要分为编程式事务和声明式事务两种。 编程式事务&#xff1a;是指在代码中手动的管理事务的提交、回滚等操作&#xff0c;代码侵入性比较强&…

JAVA断点调试

1、条件断点&#xff0c;点击添加条件 2、异常断点&#xff0c;点击添加异常 转载于:https://www.cnblogs.com/binbang/p/6378897.html

操作系统:Win10如何彻底卸载自带的Flash软件

Win10操作系统中&#xff0c;Flash功能是系统自带的&#xff0c;我们无法直接通过应用管理来找到Flash&#xff0c;所以也不能从系统设置或者控制面板中卸载它。当然如果你是后期自己安装的话&#xff0c;可以通过控制面板找到Flash然后直接卸载它。 Flash的路径为“C:\Windows…

Java运行时异常和非运行时异常

1.Java异常机制 Java把异常当做对象来处理&#xff0c;并定义一个基类java.lang.Throwable作为所有异常的超类。Java中的异常分为两大类&#xff1a;错误Error和异常Exception&#xff0c;Java异常体系结构如下图所示 2.Throwable Throwable类是所有异常或错误的超类&#xf…

办公技巧:如何快速提取办公文档里面的所有图片

针对一个比较大的办公文档里面有很多图片&#xff0c;有些时候我们需要提取文档里面的所有图片信息&#xff0c;当然你打开文档一个个复制保存就可以了&#xff0c;不过这样太过于繁琐了&#xff0c;有没有更加快速的方法呢&#xff1f;今天给大家分享快速提取办公文档里面的所…

ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台(elk5.2+filebeat2.11)

ELKFilebeatKafkaZooKeeper 构建海量日志分析平台 参考&#xff1a;http://www.tuicool.com/articles/R77fieA 我在做ELK日志平台开始之初选择为ELKRedis直接构建&#xff0c;在采集nginx日志时一切正常&#xff0c;当我采集我司业务报文日志类后&#xff0c;logstash会报大量的…

Spring回滚事务类型

Spring默认抛出了未检查unchecked异常&#xff08;继承自 RuntimeException的异常&#xff09;或者 Error才回滚事务&#xff0c;其他异常不会触发回滚事务。

操作系统:Win10操作系统内置的备份功能介绍

今天给大家分享Win10操作系统内置的系统备份功能&#xff0c;感兴趣的可以了解一下&#xff01;。 Win10的备份&#xff1a;由“旧版备份与还原”、“还原点”和“文件历史记录”三个部分组成。 旧版备份与还原&#xff1a;主要用于系统备份与还原 还原点&#xff1a;还原点 文…

spring 事务控制 设置手动回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

如上&#xff1a; 当我们需要在事务控制的service层类中使用try catch 去捕获异常后&#xff0c;就会使事务控制失效&#xff0c;因为该类的异常并没有抛出&#xff0c;就不是触发事务管理机制。怎样才能即使用try catch去捕获异常&#xff0c;而又让出现异常后spring回滚呢&am…

电脑软件:推荐一款本地文档搜索神器,赶快下载试试吧!

1、前言大家在日常办公的时候&#xff0c;经常会涉及各种各样的文档&#xff0c;时间久了文件会越来越多&#xff0c;有时候需要快速找到一个半年前文档可能会耗费你的大量时间&#xff0c;毕竟每个人的大脑记忆都是有限的&#xff0c;不可能每个细节都能够靠大脑记忆&#xff…

绑定报表

//绑定报表数据源 string url HttpUtility.UrlDecode(Page.Request.Url.AbsolutePath); string filepath Server.MapPath(url); this.rpt1.LocalReport.ReportPath Path.Combine(Path.GetDirectoryName(filepath), "InventoryRecord.rdlc"); // ReportDataSource …

JVM系列(一):JVM基本概念知识笔记

今天开始给大家分享JVM系列知识&#xff0c;欢迎大家一起学习交流共同进度&#xff01; 1、什么是JVM&#xff1f; JVM即Java虚拟机&#xff0c;可以理解为一种抽象计算机&#xff0c;它拥有一个指令集&#xff0c;在运行时操作各种内存区域。JVM对Java语言一无所知&#xff0…