云原生架构之SpringCloudKubernetes 服务注册发现方案(东西流量)

本文介绍了在Kubernetes环境下,使用SpringBoot结合K8s service进行服务注册和发现的方案,通过Spring Cloud Kubernetes实现客户端负载均衡。详细阐述了服务提供者和消费者如何配置,以及实战中的测试步骤,展示了服务直接对Pod发起请求的高性能特点。

一 方案概述

通常将spring cloud应用上K8s集群,使用spring cloud kubernetes,服务注册依旧为使用k8s服务注册,服务发现利用其discover可以通过K8s api发现一个服务后的一组实例,负载均衡使用spring cloud kubernetes ribbon实现(改方案负责均衡为客户端负载均衡)。

二 SpringBoot + K8s service服务注册发现方案

2.1 方案简介

在k8s中部署spring cloud 项目,可采用spring cloud kubernetes完成服务发现、动态配置,使用spring cloud openFeign完成服务间的通信,spring cloud ribbon实现负载均衡.采用如上几个模块,可以在k8s的环境下,实现重试,超时,限流,负载均衡等常用功能。

简单来讲,该模块主要封装了跟api Servier的http交互,方便项目中对api Server的请求和读取k8s中的 服务注册发现 Services / Endpoints 和配置中心的 ConfigMapsSecrets

例如获取服务列表或服务的实例信息

2.2 服务注册发现实现

2.2.1 服务注册过程:

spring cloud 服务配置有serivce的服务,启动后k8s集群针对调用该service,后端会返回具体的pod列表。

2.2.2 服务发现过程:

通过 spring cloud kubernetes的服务发现,调用k8s api获取pod实例的ip和端口,从而发现轮训调用。

2.3 方案特点

  • 优点:
    • 服务直接通过k8s服务发现,获取service后的实例POD IP和端口,流量直接对POD发起,不经过service转发,性能好。
  • 不足:
    • 负责均衡算法在服务调用端(客户端)实现,例如ribbon实现,如果后期使用服务治理框架例如istio/linkerd不适用。

三 实战

3.1 服务提供者

3.1.1 提供者逻辑

springboot-init 为服务提供者,对外提供 /services 用于获取 K8s 名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值