微服务架构中服务的编排

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 微服务架构中服务的编排

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


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


编排(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中,有兴趣可以了解一下。微服务架构中服务的编排

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
14天前
|
负载均衡 监控 Java
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
|
1天前
|
消息中间件 Java API
解密微服务架构:如何在Java中实现高效的服务通信
微服务架构作为一种现代软件开发模式,通过将应用拆分成多个独立的服务,提升了系统的灵活性和扩展性。然而,实现微服务之间的高效通信仍然是许多开发者面临的挑战。本文将探讨在Java环境中实现微服务架构时,如何使用不同的通信机制来优化服务之间的交互,包括同步和异步通信的方法,以及相关的最佳实践。
|
2天前
|
监控 负载均衡 API
从单体到微服务:架构转型之道
【8月更文挑战第17天】从单体架构到微服务架构的转型是一项复杂而系统的工程,需要综合考虑技术、团队、文化等多个方面的因素。通过合理的规划和实施策略,可以克服转型过程中的挑战,实现系统架构的升级和优化。微服务架构以其高度的模块化、可扩展性和灵活性,为业务的持续发展和创新提供了坚实的技术保障。
|
4天前
|
Kubernetes 安全 Serverless
Kubernetes 的架构问题之Serverless Container中提供对外服务如何解决
Kubernetes 的架构问题之Serverless Container中提供对外服务如何解决
23 5
|
6天前
|
编解码 Linux 数据安全/隐私保护
Linux平台x86_64|aarch64架构如何实现轻量级RTSP服务
为满足在Linux平台(x86_64与aarch64架构)上实现轻量级RTSP服务的需求,我们开发了一套解决方案。该方案通过调用`start_rtsp_server()`函数启动RTSP服务,并设置端口号及认证信息。支持AAC音频和H.264视频编码,可推送纯音频、纯视频或音视频流。此外,还支持X11屏幕采集、部分V4L2摄像头采集、帧率/GOP/码率调整、摄像头设备选择与预览等功能。对于音频采集,支持alsa-lib和libpulse接口。整体设计旨在提供150-400ms的低延迟体验,适用于多种应用场景。
|
11天前
|
Cloud Native 云计算 微服务
云原生时代:企业分布式应用架构的惊人蜕变,从SOA到微服务的大逃亡!
【8月更文挑战第8天】在云计算与容器技术推动下,企业分布式应用架构正经历从SOA到微服务再到云原生的深刻变革。SOA强调服务重用与组合,通过标准化接口实现服务解耦;微服务以细粒度划分服务,增强系统灵活性;云原生架构借助容器化与自动化技术简化部署与管理。每一步演进都为企业带来新的技术挑战与机遇。
38 6
|
9天前
|
设计模式 监控 API
探索微服务架构中的API网关模式
在微服务的宇宙里,API网关是连接星辰的桥梁。它不仅管理着服务间的通信流量,还肩负着保护、增强和监控微服务集群的重任。本文将带你走进API网关的世界,了解其如何成为微服务架构中不可或缺的一环,以及它在实际应用中扮演的角色和面临的挑战。
|
12天前
|
缓存 监控 API
【微服务战场上的神秘守门人】:揭秘API网关的超能力 —— 探索微服务架构中的终极守护者与它的神奇魔法!
【8月更文挑战第7天】随着微服务架构的流行,企业应用被拆分为围绕特定业务功能构建的小型服务。API网关作为微服务间的通信管理核心,对请求进行路由、认证、限流等处理,简化客户端集成并提升用户体验。以电商应用为例,通过Kong部署API网关,配置产品目录等服务的API及JWT认证插件,确保安全高效的数据交互。这种方式不仅增强了系统的可维护性和扩展性,还提供了额外的安全保障。
29 2
|
12天前
|
Prometheus 监控 Java
微服务架构下的服务治理策略:打破服务混乱的惊天秘籍,开启系统稳定的神奇之门!
【8月更文挑战第7天】微服务架构将应用细分为可独立部署的小服务,提升灵活性与可扩展性。但服务增多带来治理挑战。通过服务注册与发现(如Eureka)、容错机制(如Hystrix)、监控工具(如Prometheus+Grafana)、集中配置管理(如Spring Cloud Config)和服务网关(如Zuul),可有效解决这些挑战,确保系统的高可用性和性能。合理运用这些技术和策略,能充分发挥微服务优势,构建高效应用系统。
25 1
|
15天前
|
负载均衡 监控 API
探索微服务架构中的API网关模式
在微服务架构的海洋中,API网关扮演着枢纽的角色。它不仅是客户端请求的接收者,也是各个微服务间通信的协调者。本文将深入探讨API网关的设计原则、实现策略以及它在微服务生态中的重要性。我们将通过实际案例分析,了解API网关如何优化系统性能、提高安全性和简化客户端与服务的交互。
31 4

热门文章

最新文章