python eureka服务发现_python与consul 实现gRPC服务注册-发现

背景

我们经由对gRPC的介绍得以知晓, 在服务正常启动以后, 仅需知晓ip以及port, 便能够达成gRPC的连接, 能够想到, 此种方式并不适宜应用于线上环境, 缘由在于如此直连会致使失去扩展性, 在需要进行多机部署之际, 就无法于线上环境直接予以使用, 并且当线上项目所连接的那台服务器出现宕机情况时, 整个项目也会出现错误, 这并非是我们期望得到的结果。

那么, 我们势必是要拥有一个用于服务注册以及发现的机制的。换句话讲, 当我们的rpc服务开启运行的时候, 要将其注册至另外的一台服务器之上, 随后当客户端实施连接操作之际, 要去寻觅与之相对应的服务, 进而获取到相应的ip以及port。如此一来, 便能够顺利地展开连接行为了。这样的一种方式即为服务注册与发现之事。当前存在着若干情况, 鉴于自身对某些方面并不熟悉的缘故, 所以此地进而选用了这种方式。整个操作流程呈现示意情况如图所示。

的安装

通过

运行如下命令:

执行, 以守护进程模式运行, 将本地的8500端口映射到目标的8500端口, 启动代理, 设置数据目录为双斜杠data, 指定目录为双斜杠, 开启开发模式减号是零点点零, 如果绑定地址是零点点零。

通过其它方式

安装方式参考

安装完后运行:

agent, 把数据目录设置为当前目录, 启用用户界面, 将网络绑定地址设定为127.0.0.1。

不拘是哪一种方式, 在运行完毕之后, 于浏览器里开启 :8500/ui, 能够看见如下这般的内容。

服务注册

以之前所介绍的gRPC代码当作基础, 我们添加上服务注册部分, 注意, 本人所处环境是, 有需要的话, 自己去进行修改。

time

grpc

json

from

def test(, ):

实际调用到的函数

= .()

这句代码, 是要通过json.dumps这个函数, 将一个包含ret键且值为Hi gRPC 的 JSON 格式的数据, 进行处理, 从而构造出在 proto 文件里已定义的返回值格式。

class (.):

def (self, , ):

test(, )

def (, ip, port):

c等于一个点括号, 用于连接服务器, 其默认指向127.0.0.1, 用户能够通过host参数来对host进行指定标点。

print(f"开始注册服务{}")

执行健康检查时, 所使用的IP地址是, 端口号为, 检查持续时长规定为"10秒", 此相关情况写为check =.Check.tcp(ip, port, "10s")。

c.密探, (, "那什么玩意儿"-"网络协议地址"-"端口号")

将其改写为: 等于IP, 端口等于端口, 检查等于检查) #这是注册服务的相关部分。

print(f"注册服务{}成功")

def (, ip, port):

c = .()

print(f"开始退出服务{}")

c.报错信息的内容不完整以及逻辑不符导致难进行有效转换, 请再次确认或补充准确完整的内容, 以便能按照要求改写。

def serve():

= grpc.(.(=10))

.((), )

.(':{}'.(12006))

("", "0.0.0.0", 12006)

.start()

try:

while True:

time.sleep()

:

("", "0.0.0.0", 12006)

.stop(0)

serve()

要运行此服务需要先安装 - pip -

启动此服务, 于浏览器里会呈现我们方才注册的服务, 以及可用节点状况, 还有健康信息情形, 恰似图示那般。

在运用ctrl+c来退出服务之际, 将会取消注册, 这意味着会从列表当中消失。

留意, 处在健康检测失败这种状况下, 这不代表着服务方面出现了问题, 仅仅是表明服务器以及与之对应的rpc服务的端口没办法连接上罢了。

rpc客户端连接

客户端要向服务器发出请求, 去获取可用的rpc服务的ip, 以及端口, 之后再进行连接, 我们乃是基于之前的客户端代码开展修改, 完整代码如下所示:

grpc

from dns

from dns.

连接服务,作为dns服务器

= .()

.port = 8600

.=

"127.0.0.1"

def ():

去查询, 找出, 获得, 使得一个可用的ip被找到, 并且, 获取到其端口, 最终呈现出来。

try:

=, 进行查询操作, 查询条件为f拼接的特定字符串, 查询目标是"A"。

= .query(f"{}..", "SRV")

:

None, None

., .port

ip, port = ("")

= grpc.(f"{ip}:{port}")

stub = .()

要完成请求需要先构造出proto文件中定义的请求格式

返回值 = 存根对象执行(执行(电话号 ="12990", 价格 ="50"))。

print(ret.)

总结

讲到这里, 我们已然构建好了一套简易的服务注册以及发现系统。当然啦, 其具备的功能远远不止这一项而是还有别的, 它还能够支持分布式以及多节点布置模式。要是想要了解更多相关内容, 那么可以前往官网去做进一步的知晓。

踩过的坑

于示例里, 我们单单捕获了ctrl+c信号, 于实际状况下, 服务会因某些怪异的问题而崩溃, 而在这个时候, 该节点信息会始终在其中, 除非进行手动注销, 因而就得捕获所有的异常信号。

处于单节点的情形下, 要是服务出现挂掉的状况, 那么就会对所有与之相关的项目造成影响, 故而最好还是配备从节点。

服务注册发现、配置中心集一体的 Cloud

之前提到了, 以及Cloud, 今儿个要介绍一位全能选手「」。它是由公司推出的, 用于进行服务发现的工具, 并且是用于服务配置的工具。它是用go语言开发而成的, 具备着。

实现基于GRpc的服务注册, 实现基于GRpc的服务发现。

0.简介0.1, 什么是, 是公司推出的开源工具, 该工具用于实现分布式系统的服务发现与配置。这里所说的服务, 并非仅仅涵盖常用的Api这类服务, 还包括软件开发过程。

具有微服务性质相关内容的学习笔记的第二部分 , 是关于借助 采用 实现 括号内标识是 GRpc 的 服务注册以及发现。

这内容似乎不太完整且表述混乱, 不太能准确理解其原始意图从而进行有效改写。请补充完整清晰语句后再让我处理。

++ 实现服务注册与发现

实现服务注册, 实现发现逻辑图, 实现nginx节点自动化加入, 实现容器IP代理, 三台agent作高可用, 通过Tem。

服务注册发现之二:在 Cloud中使用实现服务的注册和发现

最先要安装环境, 依照之前文章里的, 第一节介绍来进行。Cloud所使用的服务以及发现, 其一要导入依赖pri。

关于"cloud微服务快速教程之(七)"的Cloud, 在 --nacos(一)里的服务的注册发现 , 有该项内容。

0.开头语, Cloud究竟是什么呢? Cloud是由阿里进行开源的, 其目标在于开展对于微服务开发的一站式解决途径。这个项目涵盖了开发分布式应用微服务所必备的组件, 便利了......

你提供的内容似乎存在一些乱码, 不太明确准确意思及需求。请检查并修正后重新提交准确清晰的内容, 以便我能准确改写。

...

服务注册发现之二:高可用服务注册中心

在前边而言, 于Cloud系列文章开启的时候, 我们就对服务注册与发现做了介绍, 当中, 着重演示了怎样构建并启动服务注册中心, 以及怎样把服务注册进去, 然而, 但是。

服务注册发现的第三个方面是, Cloud达成客户端负载均衡, 其中含客户端负载均衡的第三个要点为, 运用达成客户端负载的均衡。

关于使用来消费boot的服务示例, 我们曾提及, 当调用boot 时, 要将会使得服务的URL固定写死, 或者是放置于写在配置文件里, 然而这两种办法, 不管是任何一种......

随机推荐

set

set是个工厂函数, 它还是工厂函数, 它是可变集合其中的一个, 它并非是不可变集合, 它和set存在共性, 它在内部会自动进行去重操作, >>> num5=(。

1, ...

C++学习笔记 指针与引用

指针以及引用, 首先来说指针, 其一, 指针属于一个变量也就是实体, 它所存储的是一个地址, 这个地址指向内存当中的一个存储单元, 而且指针能够为空;其二, 指针有空的这种情况, 在声明的时候作为定义它能够不进行初始化;其三, 指针在初始化完了之后能够再次指向其他的。

洛谷P1889 士兵站队

以下是改写后的: 在一个被划分组成网格状的操场上, 存在着 n 个士兵, 这些士兵处于零散分布状态, 站立在网格点之上, 而这些网格点是由整数坐标 (x,y) 进行表示的, 士兵们能够沿着网格边, 朝着上、下、左、右这四个方向移动一步, 不过在同一时刻, 任何一个网格点上仅仅能够有一名士兵, 依照军官所下达的命令, 他们务必整整齐齐地排列起来。

perl小记

POJ 3903 Stock

Stock, Time Limit, 一种限制, 总量是2954, 其中一项是1082, 除此之外还有De。

面向对象初识

是变量所构成的集合, 是方法所形成的集合, 与都对匿名字段予以支持, 也就是说, 支持通过组合来达成继承。的与C++的class相同, 仅仅能够声明...... 标点符号可能需要根据实际情况微调, 你看看这样改写是否符合要求。

mysql 重置root 账户密码

进入命令行窗口, 将mysql服务予以停止: Net stop mysql。开启mysql, 通常前往mysql的安装路径, 寻觅 -nt.exe。

相关推荐
听雨入夜1 小时前
zero.zhang
开发语言·python
叶 落2 小时前
Mac 通过 Miniconda 安装 Python
python·macos·conda·miniconda
就改了9 小时前
Java8 日期处理(详细版)
java·python·算法
威联通安全存储11 小时前
TS-h1887XU-RP在汽车发动机热试与NVH在线质检网中的部署
python·汽车
qq_3164110312 小时前
腹腔镜模拟手术训练数字化管理平台构建
人工智能·python·深度学习·机器学习
卷无止境13 小时前
PageIndex:把RAG的检索逻辑从"找相似"改成了"讲道理"
后端·python
卷无止境13 小时前
什么是VoxCPM2?一场TTS架构的彻底重构
后端·python
kisloy14 小时前
【爬虫入门第5讲】Python爬虫文本解析详解
开发语言·爬虫·python
神经蛙199615 小时前
🌍 别再硬编码中文了!Python Web 项目国际化(i18n)完全指南
后端·python