KiteX 基于 K8s 的服务注册与发现

点击上方蓝色字体,选择“设为星标”

回复”云原生“获取基础架构实践

8fed2b0cc04d5307ee00f4ded5c5deef.jpeg

概览

在很久之前的文章中说过,K8s 作为云原生时代的创造者,下一代云原生的中间利器,从云原生 1.0 到 2.0,作为基石,成就无数服务畅游每一台机器。前面的文章 KiteX 入门篇 介绍了如何简单的开发一个高性能 RPC 微服务,并且我们看到其性能与吞吐还是不错的。但需要中间件 Nacos 来连接服务端与客户端。今天,我们主要从 K8s 角度来看 Kitex 如何接入云原生,甚至后面的 Istio。

实践

服务端

前面文章 KiteX 入门篇,我们介绍了如何创建一个服务端,那我们这次改造下,让其接入 K8s。

这里主要现需要去掉关于 Nacos 的逻辑,然后我们再看下面的代码:

server.WithServiceAddr(&net.TCPAddr{Port: 9000}),

这段代码的含义是通过 Nacos 注册时候,我们把服务注册的端口为 9000,但如果服务是以 K8s 部署的 Pod 形式,则代表的是 Pod 的端口,同时,由于 K8s 这种开源注册中心默认使用 TCP 协议,所以这里支持的是 TCP 协议。这样简单的配置,即可让服务注册到 K8s,被 k8s-api 发现。

完整代码如下:

svr := note.NewServer(
  new(api.NoteApi),
  //基于svc进行服务注册,9000为svc的port
  server.WithServiceAddr(&net.TCPAddr{Port: 9000}),
  server.WithMuxTransport(),
  server.WithLimit(&limit.Option{MaxConnections: 10000, MaxQPS: 5000}),

  server.WithPayloadCodec(thrift.NewThriftCodecWithConfig(thrift.FastRead | thrift.FastWrite)),

  //server.WithTracer(prometheus.NewServerTracer(":9092", "/kitexNoteserver")),

  server.WithErrorHandler(func(err error) error {
   error := errno.ConvertErr(err)
   return error
  }),
  server.WithCodec(codec.NewDefaultCodecWithSizeLimit(1024 * 1024 * 10)),//10M

  server.WithMetaHandler(transmeta.ServerTTHeaderHandler),                                            // registry
 )
 err := svr.Run()
 if
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值