云原生应用里的服务发现

服务定义:

服务定义是声明给定服务如何被消费者/客户端使用的方式。在建立服务之间的同步通信通道之前,它会与消费者共享。

同步通信中的服务定义:

微服务可以将其服务定义发布到服务注册表(或由微服务所有者手动发布)。然后这些微服务的消费者可以连接到服务注册表并获取服务定义(通过程序或由开发人员手动进行)。这个步骤被称为服务发现。

您的每个微服务发布都符合带有不同版本的广告服务定义。

0c7f256092c600b0b8fc417fed354f3e.png
Image.png

消费者获得的服务定义可用于构建客户端应用程序或生成与服务器通信所需的客户端库。服务定义包含给定服务提供的接口,以及客户端和微服务之间交换的消息格式和数据类型的模式。

服务注册表通常是实现为元数据仓库,具有用于管理服务定义和其他元数据的 API。一些可以做到这一点的工具有Consul、etcd 和 Apache ZooKeeper。在大多数部署中,我们可以将服务注册表作为集中式组件运行。

异步通信中的服务定义

生产者和消费者之间交换的消息包含使用模式进行序列化或反序列化的结构化数据,该模式定义并验证各方之间交换的数据。由于通过消息代理或事件总线异步进行通信,执行生成和消费消息的微服务应使用公共模式。与同步消息传递场景中的服务定义类似,生产者和消费者微服务必须使用中央元数据注册表来存储模式。

当两个微服务使用异步消息驱动通信时,生产者可以在将消息发布到消息代理的队列或主题时,对消息进行模式(存储在模式注册表中)验证。

6d092596589c21940d1271cea844b07c.png
Image.png

模式定义技术:Apache Avro、Protocol Buffers 或 JSON schemas等。

根据您使用的代理类型,模式定义技术可能会有所不同。例如,Kafka注册表支持Avro、JSON 和 Protocol Buffers,Azure在其Event Hubs消息服务中使用Azure模式注册表

新兴的异步服务定义技术,如AsyncAPI,可以用于指定整个服务合同,而不仅仅是消息的模式。

复杂性的注意事项:

大多数异步消息传递是在不使用基于模式的序列化和反序列化的情况下实现的。这通常导致生产者和消费者之间的不一致和数据类型不匹配。此外,需要发送随消息一起传输的元数据会增加消息大小,从而降低异步通信的性能。因此,在异步通信中采用模式对于确保云原生应用程序的可靠性和安全性至关重要。

我们讨论了生产者和消费者端的模式验证。这本质上引入了性能开销,因为每个消息都需要经过验证过程。同时,从注册表中获取模式可能需要缓存机制,以避免性能瓶颈。

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

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

相关文章

flask--->CBV/模板/请求响应/session

CBV 1 cbv写法-1 写个类,继承MethodView-2 在类中写跟请求方式同名的方法-3 注册路由:app.add_url_rule(/home, view_funcHome.as_view(home)) #home是endpoint,就是路由别名2 cbv加装饰器-方式一:class Home(MethodView):decor…

视频添加字幕

1、依靠ffmpeg 命令 package zimu;import java.io.IOException;public class TestSrt {public static void main(String[] args) {String videoFile "/test/test1.mp4";String subtitleFile "/test/test1.SRT";String outputFile "/test/testout13…

Redis入门

0目录 1.Redis入门 2.Redis定义;特点及数据类型 3.Value为List类型 4.Value值类型为Set 5.Value值类型为Hash 6.Value值类型为Zset 1.Redis入门 Redis入门 解压包,运行redis-server.exe 安装可视化软件测试链接 命名测试链接 点击确定 2.Redis…

Python模块—Requests模块

文章目录 Requests库1.介绍2.requests 发送请求3.Response查看响应 Requests库 1.介绍 Requests库:python中的“浏览器”,基于urllib的HTTP库。 安装:pip install requests 操作步骤: 导包 发送接口请求 查看响应数据 2.r…

基于ArcGIS污染物浓度及风险的时空分布

在GIS发展的早期,专业人士主要关注于数据编辑或者集中于应用工程,以及主要把精力花费在创建GIS数据库并构造地理信息和知识。慢慢的,GIS的专业人士开始在大量的GIS应用中使用这些知识信息库。用户应用功能全面的GIS工作站来编辑地理数据集&am…

ResNet50卷积神经网络输出数据形参分析-笔记

ResNet50卷积神经网络输出数据形参分析-笔记 ResNet50包含多个模块,其中第2到第5个模块分别包含3、4、6、3个残差块 5049个卷积(3463)*31和一个全连接层 分析结果为: 输入数据形状:[10, 3, 224, 224] 最后输出结果:linear_0 [10,…

git 版本回退

git 没有push之前,可以用git reset --mixed回退,就是把add 的内容和commit的内容都撤销 在push之后,你只有2种操作 1.git reset 退回到你想要的那个版本 有配置选项 如果是soft就是当前版本删掉,之前改的代码保留,ha…

TikTok海外抖音云控抢金币宝箱

TikTok海外抖音云控抢金币宝箱 中芯密科云控系统是一个稳定、操作简单的自动化管理工具,专为大型机房设计,可以监控、控制和管理机房内的设备。该系统具有负载均衡、操作简单、高容错等特点,能够提高机房设备的稳定性和可用性。 该系统具有以…

java使用openOffice将excel转换pdf时,将所有列显示在一页

1.接上文,格式转换的基础问题已解决,但还有些细节问题需要单独处理,如excel转换至pdf时,如何将所有列显示在一页的问题,此问题大家都有遇到,解决方案也比较多,我也尝试过重写某类,来…

Java基础面试题1

Java基础面试题 一、面向对象和集合专题 1. 面向对象和面向过程的区别 面向过程:是分析解决问题的步骤,然后用函数把这些步骤一步一步地实现,然后在使用的时候一一调用则可。性能较高,所以单片机、嵌入式开发等一般采用面向过程…

OPENCV C++(三)二值化灰度函数+调用摄像头+鼠标响应+肤色检测

RGB转灰度函数 cvtColor(image, gray, COLOR_BGR2GRAY); 图像 目标图像 rgb转灰度 大津法二值化函数 threshold(gray, result1, 84, 255, THRESH_OTSU); 灰度图,目标图,阈值,大于阈值的转换的像素值,方法为大津法 自适应二值…

Stable diffusion 三大基础脚本 提示词矩阵,载入提示词,XYZ图表讲解

目录 0.本章讲解 1.提示词矩阵(prompt matrix) 1.2.提示词矩阵功能选项 1.2.1.把可变部分放在提示词文本的开头 1.2.2.为每张图片使用不同随机种子 1.2.3.选择提示词 1.2.4.选择分割符 1.2.5.宫格图边框(像素) 2.从文本框或文件载入提示词(Pro…

【Android ndk内存泄露检测】

1、 google支持方式 (88条消息) Android native memory leak detect (Android native内存泄露检测)_良秋的专栏-CSDN博客_android native 内存泄露 封装 shell 脚本 | Android NDK | Android Developers (google.cn) GitHub - wangwangchen/malloc-debug: study of mall…

获取k8s scale资源对象的命令

kubectl get --raw /apis/<apiGroup>/<apiVersion>/namespaces/<namespaceName>/<resourceKind>/<resourceName>/scale 说明&#xff1a;scale资源对象用来水平扩展k8s资源对象的副本数&#xff0c;它是作为一种k8s资源对象的子资源存在&#xf…

STM32F103——基础篇

目录 1、寄存器基础知识 2、STM32F103系统架构 2.1 Cortex M3 内核&芯片 2.2 STM32F103系统架构 3、存储器映射 4、寄存器映射 4.1 寄存器描述解读 4.2 寄存器映射举例 4.3 寄存器地址计算 4.4 stm32f103xe.h 寄存器映射 1、寄存器基础知识 概念&#xff1a;寄存…

018-从零搭建微服务-系统服务(五)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff08;后端&#xff09;&#xff1a;https://gitee.com/csps/mingyue 源码地址&#xff08;前端&#xff09;&#xff1a;https://gitee.com/csps…

谈谈对Android音视频开发的探究

在日常生活中&#xff0c;视频类应用占据了我们越来越多的时间&#xff0c;各大公司也纷纷杀入这个战场&#xff0c;不管是抖音、快手等短视频类型&#xff0c;虎牙、斗鱼等直播类型&#xff0c;腾讯视频、爱奇艺、优酷等长视频类型&#xff0c;还是Vue、美拍等视频编辑美颜类型…

局域网部署,用WorkPlus视频会议保密又安全

用户采用私有化部署视频会议软件的情况主要有以下几种因素&#xff1a; 1. 针对机密性高的会议&#xff1a;如果有涉及高度机密的商业谈判或敏感信息交流等重要会议&#xff0c;政府、军工、企业等用户会选择局域网内部署视频会议软件&#xff0c;以保证信息安全。 2. 频繁进…

Tailwind CSS:简洁高效的工具,提升前端开发体验

112. Tailwind CSS&#xff1a;简洁高效的工具&#xff0c;提升前端开发体验 1. 什么是Tailwind CSS&#xff1f; Tailwind CSS是由Adam Wathan、Jonathan Reinink、David Hemphill和Steve Schoger等人共同创建的一种现代CSS框架。与传统的CSS框架不同&#xff0c;Tailwind CS…

尝试一下Guava带返回值的多线程处理类ListenableFuture

文章目录 ListenableFuture&#xff0c;带返回值的Guava多线程处理工具类举个例子扩展阅读 最近在学习&#xff0c;Java实现异步编程的8种方式这篇博客的时候&#xff0c;没有找到比较好的一个学习demo&#xff0c;故在此整理一下。 ListenableFuture&#xff0c;带返回值的Gua…