腾讯tRPC-Go教程-(六)服务发现

发布于:2024-10-24 编辑:匿名 来源:网络

距离上一篇文章已经两个月了。毕竟辛苦的工人们太忙了,没有时间……这篇文章我们要聊的是微服务架构方面,最重要的一点就是服务发现及其对应的名称服务功能。

系列文章 腾讯 tRPC-Go 教学 - (1) 构建服务 腾讯 tRPC-Go 教学 - (2) trpc HTTP 能力 腾讯 tRPC-Go 教学 - (3) 微服务??间调用 腾讯 tRPC-Go 教学 - (4) tRPC 组件生态并使用腾讯tRPC-Go教程-(5)过滤器、上下文和日志组件腾讯tRPC-Go教程-(6)服务发现腾讯tRPC-Go教程-(7)服务配置和指标报告……会有更多,敬请期待... 概述 在上一篇文章中,我们提到微服务之间调用时,需要在客户端配置微服务的下游服务,以便 tRPC 知道如何寻址。在那篇文章的示例中,我们将目标字段的值配置为:这是一个IP,一个非常有方向性的IP地址。

但直接指定下游服务的IP地址存在几个问题: 在微服务集群中,一个服务可能有多个节点。仅配置一个IP无法满足主备业务需求,也无法实现一致性哈希等复杂查找。

随着地址能力随着业务节点的不断扩展,业务的IP列表频繁变化,固定的IP配置已经不能满足需求。 tRPC的名称服务是一个成熟的微服务框架,一般通过名称服务来解决这个问题。

换句话说,当一个微服务调用其他微服务时,它指定的不是IP地址,而是服务的名称。通过一系列中间件,将名称替换为真实且可达的IP地址。

tRPC 提供了定制名称服务的能力。如果要开发自己的名称服务,至少需要在tRPC框架中实现相应的选择器和注册中心能力(文档)。

作者尝试基于MySQL实现一个极其简单的名称服务。有兴趣的读者可以通过这个包了解更多信息。

本文不关注原理,而是关注应用。在腾讯内部,大多数 tRPC 微服务都使用 Polaris 名称服务。

在本文中,我们以 Polaris 名称服务为例来说明如何在 tRPC 上应用实用的名称服务。北极星简介 腾讯内部的北极星系统是一个以名称服务为主要业务的系统。

虽然外网开源版本看似功能更多,但作为服务管理的主要业务,内网和外网版本并没有太大区别。关于Polaris系统的搭建和安装,请参考Polaris文档。

出于教学目的,本文以作者使用Docker在本地安装的Polaris系统为例。当我们访问Polaris页面并登录后,可以看到初始页面:Polaris首页看到两个Polaris自带的服务,可以忽略。

接下来,按照正常流程,我们可以点击New按钮创建一个新的服务,名称为:New Service,不过Docker版本的Polaris也可以跳过这一步。因此,我们直接进入下一阶段:tRPC服务配置和tRPC服务启动配置。

我们仍然会遵循之前文章中描述的http-auth和用户服务。一个是主叫方,另一个是被叫方。

我们先来看看用户服务。代码中引用了 tRPC Polaris 支持。

要在服务中启用 Polaris 支持,tRPC 的标准用法是在主包中匿名导入 Polaris 包: 代码语言: go copy import (//......_ "trpc.group/ trpc-go/从逻辑上讲,该包会在init()阶段调用tRPC的相关RegisterXXXX函数,将Polaris的名称服务、负载均衡等功能注册到tRPC中。 trpc_go.yaml 文件配置前面的导入是为了支持二进制中的 Polaris。

为了启动Polaris,我们还需要配置tRPC服务。对于作为被调用方的用户服务,我们需要在其 trpc_go.yaml 文件中添加如下配置: 代码语言:yaml 复制plugins: ##plugins项下的其他值被忽略registry: Polarismesh: register_self: true heartbeat_interval: protocol: grpc address_list: host.docker.internal: service: - name: demo.account.User namespace: dev Weight: token: not_needed 其中address_list: host.docker.internal: 指的是Polaris服务的地址,因为我是使用Docker部署,Polaris的注册服务默认监听该端口。

使用此配置启动用户服务。然后我们回到Polaris首页,刷新一下:user服务自动注册了,可以看到多了一个demo.account.User服务。

进入该服务的详情页面,我们可以看到服务监听的配置:用户服务详情遵循上面的默认配置,Polaris会根据服务器配置来判断当前服务监听的是哪个地址和端口。名称和命名空间字段是必需的。

当前用户服务的配置为: Code language: yaml Copy server: filter: -tracelog service: - name: demo.account.User nic: eth0 port: network: tcp protocol: trpc timeout: 可以看到根据配置中,监控的是网卡eth0、端口。 Polaris 获取此信息并将其注册到名称服务。

解决好,现在我们作为调用者回到 http-auth 服务。调用者还需要在代码中导入相同的Polaris包。

但作为调用方,需要在 trpc_go.yaml 中添加以下配置: 代码语言:yaml 复制插件:## 忽略plugins项下的其他值 选择器:polarismesh:协议:grpc join_point:默认address_list:host。码头工人。

Internal: persistDir: ./polarismesh/backup log_dir: ./polarismesh/log 配置项选择器将 Polaris 功能指定为名称选择器。其中address_list项与之前的注册表配置含义相同。

然后,在调用用户服务时,我们放弃了之前 的写法,改为如下格式: 代码语言:yaml 复制客户端:filter: -tracelog service: -name:demo.account.User target :同样,我们通过这个trpc_go.yaml启动http-auth服务,然后参考上一篇文章请求http-auth方法:代码语言:shell copy curl '.17.0.7:/demo/auth/Login?username=amc' 得到错误响应: 代码语言:json copy {"err_code":1,"err_msg":"密码错误"} 根据这两个服务的逻辑,这时候我们可以清楚的知道,这个错误码表示http-auth -> user -> MySQL这个链接已经连接上了。从这两个服务的日志中我们也可以看到这一点。

其他说明 至此,使用Polaris 注册和发现名称服务的功能就已经介绍完毕。至此,读者就可以完全搭建一个微服务集群了。

集群中的每个微服务可以自行灵活扩展,无需相互耦合(包括配置);每个微服务还可以通过多点互备份的方式进行部署。实现灾难恢复。

但除此之外,还有一点需要注意。如果单纯使用 go build 命令进行编译,启动服务时可能会出现如下错误: 代码语言:shell copy panpanic: proto: file "auth.proto" is已经注册 看到gRPC中存在一些同名的proto文件通过重复注册。

如果这个问题不好解决,可以在编译时添加 -ldflags "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" 参数来解决。具体的读者可以参考我的demo工程的Makefile规则。

这个系列文章的下一步其实是第六篇……对于tRPC的基本功能来说,还剩下一个配置和监控的地方要讲。在腾讯内部,口碑最好的配置系统叫做“七彩石”。

该系统对外提供商业私有化部署方案,不开源。口碑最好的监控系统成为了“伽利略”,而这个系统还没有向外界开源。

所以,接下来的两个话题就比较麻烦了。由于这两个流行的系统都不是开源的,所以基本上不可能在外网有和内网一样的体验。

在下一篇文章中,我打算简单介绍一下接入方法,并描述如何建立最粗暴、最简单的配置和监控(显示)解决方案。让我们快速跳过这一部分。

本文根据 Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License 获得许可。原作者:amc,原文发表于腾讯云开发者社区,也是我的博客。

欢迎转载,但请注明出处。原作者:amc,欢迎转载,但请注明出处。

腾讯tRPC-Go教程-(六)服务发现

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • “家家泉”完成近亿元B轮融资,沣途资本领投

    “家家泉”完成近亿元B轮融资,沣途资本领投

    投资界(ID:pedaily)9月5日消息,水家电品牌“家家泉”(原“熊小夕”)已获完成近亿元人民币B轮融资,本轮融资由沣途资本领投,老股东纪源资本、天图资本跟投,木棉资本独家投资。 这是嘉泉成立两年来完成的第四轮融资。 据悉,本轮募集资金将主要用于嘉泉品牌建设以及新品

    06-17

  • 代码参与- “镭昱”成功点亮单芯片全彩芯片,助力AR眼镜革命性突破

    代码参与- “镭昱”成功点亮单芯片全彩芯片,助力AR眼镜革命性突破

    近日,镭昱宣布成功点亮了0.39英寸单芯片全彩Micro-LED micro-显示芯片,实现了产品标准化进程的突破性进展。 该芯片的成功点亮是Micro-LED单芯片全彩技术从概念到产品的重要里程碑,将为下一代消费类AR眼镜带来革命性的突破。 众所周知,单芯片全彩的实现是目前制约Micro-LE

    06-18

  • 金晟新能源完成数亿元B轮融资,复星锐领投

    金晟新能源完成数亿元B轮融资,复星锐领投

    投资圈(ID:pedaily)据8月15日消息,复星锐近日完成对广东金晟新能源有限公司的投资金晟新能源股份有限公司(以下简称“金晟新能源”)战略投资。 本轮投资由郑复星锐领投,国飞展信基金、广汽资本等机构跟投。 老股东中金资本、国民创投持续投资,投资金额数亿元。 作为一

    06-17

  • 小米成为第四季度俄罗斯线上销量最高的冠军品牌

    小米成为第四季度俄罗斯线上销量最高的冠军品牌

    Counterpoint Research发布的最新研究报告显示,小米已经超越三星和苹果,成为俄罗斯线上销量最高的手机品牌今年第四季度。

    06-18

  • 微博上市全景:如何打造另一个新浪?

    微博上市全景:如何打造另一个新浪?

    新浪微博(正式名称已更改为“微博”)北京时间昨晚,美国当地时间4月17日在纳斯达克正式挂牌上市。 微博董事长、曹国伟携手姚晨、王力宏等微博用户代表敲响纳斯达克开盘钟。   当天中午美股微博开盘后,股价立即快速上涨。 盘中一度上涨40%以上,市场买盘交投活跃。 微博首

    06-18

  • “分时悦动”获得CEiC

    “分时悦动”获得CEiC

    投资圈(ID:pedaily)数千万元Pre-A轮投资 据5月17日消息,金融数字化运营SaaS服务商北京分时悦动科技有限公司时光分享股份有限公司(以下简称“时光分享”)宣布完成数千万元Pre-A轮融资。 本轮融资由光大创新资本(以下简称“CEiC”)投资。 分时度假过往股东包括:红杉中

    06-17

  • 亲爱的创业者,你今天吃的是金拱门、陕北菜还是开封菜?

    亲爱的创业者,你今天吃的是金拱门、陕北菜还是开封菜?

    又到周五了,美丽大方、俏皮可爱、拥有1.5米大长腿的本雅又登场了!周末正是敞开肚皮大吃大喝的时候。 想在这个美丽的周末少年吃一顿中国最传统的“金拱门”吗?是的,你我都知道麦当劳正在流行。 麦当劳(中国)有限公司于10月12日更名为金拱门(中国)有限公司。 麦当劳首席

    06-18

  • 远洋集团今年前两个月合约销售额突破100亿,同比增长53.68%

    远洋集团今年前两个月合约销售额突破100亿,同比增长53.68%

    远洋集团(7.HK)昨日公布,1-2月累计合约销售额2月份已达到约2000万元人民币。 元,累计合同销售面积约55.6万平方米,今年2月合同销售额约45.2亿元。 听,中小企业反馈平台。 倾听用户需求,倾听创业者声音,解决中小企业痛点。 点击立即参与调查并获得礼物。

    06-17

  • 去深圳吧!创马10位评委导师阵容抢先看!

    去深圳吧!创马10位评委导师阵容抢先看!

    距离全球创客马拉松两周年大赛还有不到十天,赛事主办方哈德创邦的合作伙伴也在积极做最后的准备。 今天小编赶紧去获取信息。 据悉,今天,公司已经确定了本次大赛的评委和导师阵容。 听说还有重量级人物担任评委。 来看看具体权重吧~ 大赛评委封昌红,澳门科技大学MBA,中共

    06-17

  • 智能家居伴侣!乐橙小乐经验回顾

    智能家居伴侣!乐橙小乐经验回顾

    由于国内二胎政策的放开,很多家庭的宝宝数量也开始增加。 国家卫生计生委表示,二胎政策放开后,短期内我国出生人口将大幅增加。 到了这一年,大约有 10,000 人出生。 目前,一些厂商聚焦婴幼儿市场,推出了一些针对婴幼儿的智能产品。 主要是儿童手表和儿童机器人。 今天我

    06-18

  • 超过110亿元!北汽新能源汽车创下行业最大单笔融资,为何全部退出……

    超过110亿元!北汽新能源汽车创下行业最大单笔融资,为何全部退出……

    过亿的融资金额对于新能源来说算大吗?    据投资界8月14日消息,北汽新能源今日正式宣布,公司已完成总额1800万元B轮融资,中国信达、中基投资、兴旺产业园、国轩投资共14家投资者参与了本轮融资。   创下新能源汽车行业单笔最大融资纪录,并已在筹备IPO。    据了解

    06-18

  • 59岁的物美创始人即将拥有两家上市公司

    59岁的物美创始人即将拥有两家上市公司

    难得一见的张文中悄然变身IPO收割机。 投资界天天IPO(ID:pedailyIPO)获悉,物美科技已正式向港交所提交上市申请。 此次,物美超市与麦德龙中国计划将产品一起打包上市。 招股书显示,物美科技营业收入达1亿元。 而物美科技背后站着的是曾经称霸商界的张文中。 他的人生经历

    06-18