当前位置: 首页 > 网络应用技术

Kitex源代码分析 - 将服务注册到注册中心的详细信息

时间:2023-03-06 16:06:29 网络应用技术

  大家好,我是Sheyenough,这是我关于Kitex的第三篇文章。上一篇文章主要分析了Kitex工具代码生成工具的源代码。

  这次我开始进入Kitex核心部分!因为我的水平有限,所以分析可能非常粗糙,甚至允许每个人打开Kitex的源代码以完全理解,但这也是我编写本文的想法文章。不仅要看它,您还需要亲自分析和思考,以便您可以学习真正的知识!

  如果您觉得自己可以写作,希望您能赞美我,谢谢!

  Kitex [Katt’eks]是Byte Beating内部的Golang Microservice RPC框架。它具有高性能,强大可扩展性的特征,并且在字节内广泛使用。如果您对微服务有要求,并且想要将扩展定制到自己的治理系统中,那么Kitex将是一个不错的选择。

  这次,我们可以在官方示例中从Easy_note演示开始分析,因为它基本上显示了Kitex的基本用途。

  以下图在演示中正式显示。可以通过简单的分析,注意,通过注册中心(ETCD)注册的用户获得。API找到了Note,这是用户通过注册中心的两个RPC服务并执行业务处理。

  从Kitex-Examples/Hello的最简单示例分析中,可以从Cloudwego/kitex的快速之间看出。这是链接服务器和客户端的最简单的直链。这次,Easy_note使用注册中心作为服务之间的桥梁。为什么不使用先前的方法,而是使用注册中心?

  我们搜索注册中心的角色。

  我们将服务移交给注册中心管理。尽管我们可以避免处理复杂的手动管理,但我们可能需要考虑更多问题,例如:

  这次的目标之一是分析服务启动期间如何注册服务(注册)。这次我们开始从Easy_note/cmd/用户的服务开始分析,因为它是注册到ETCD Servicessence的服务之一

  我们从main.go开始。以下内容是一个简化的文件,该文件是实现配置服务并启动服务的文件。

  从评论中,我们可以看到withRegister()是配置注册信息的函数。那么,为什么要直接查看此功能呢?

  一个是因为主要配置注册的主要逻辑在其中,另一个是因为...的功能结构相似,非常相似。

  然后,我们输入kitex/server/option.go,首先查看di.push(fmt.sprintf(“ with with with registry(%t)”,r),r)

  这个 *util.slice是什么?进去看?

  输入kitex/pkg/utils/slice.go,我发现它很短。但是它很熟悉,它似乎是一个非常常见的数据结构-Stack(stack)!

  在此文件下,有其slice__teest.go文件。看到这里的朋友可以测试此切片是否与我的想法一致,每个人都想考虑这篇文章!最好移动!

  让我们输入o.registry = r,我们可以知道选项用于初始化服务器,选项用于配置选项(我认为这种命名方法很聪明,我觉得它基本上已经达到了一个众所周知的角色),内部事物,我们只查看今天的注册部分

  在这里,我们可以停止思考。到达此步骤时的过程是什么?它是通过main.go/user.newserver()的方法进入的。

  newserver()的角色是什么?它是配置初始化服务器的可选参数,

  在配置后何时生效(何时发生寄存器)?实际上,配置的实现位于main.gonewserver()的下一个句子中,run()!

  输入运行方法的实现,您可以知道寄存器在服务器成功启动之后发生,并且停止也将取消ETCD(您可以在同一文件的stop()中查看)

  此时,该服务已完成对ETCD的注册。我忽略了许多其他细节。这些细节也非常有趣。希望每个人都可以自己探索

  本文实际分析了如何配置服务并注册注册中心。

  尽管省略了许多细节,但我可以通过本文学到什么?

  我希望在阅读文章后,每个人都可以帮助有需要的人,并让阅读的朋友获得收获。谢谢您的病人阅读!

  原始:https://juejin.cn/post/710250182422089119