rpcx路由(点对多)

rpcx作为微服务框架,支持多种服务路由策略,如随机、轮训、加权轮训、网络质量优先、一致性哈希和地理位置优先等。在大型微服务系统中,这些策略帮助客户端有效地将请求分发到多个服务节点,实现高并发访问。同时,rpcx还允许用户自定义路由策略,适应不同的业务需求。
摘要由CSDN通过智能技术生成

即一个客户端对应多个服务端

一般在大型的微服务系统中,会为同一个服务部署到多个节点, 以便服务能够支持大并发的访问。可能部署在同一个数据中心的多个节点,或者多个数据中心。
那么,在rpcx来完成service调用时,该如何将求请求交给对应的服务节点来完成,在rpcx中通过 Selector来实现路由选择, 很像一个负载均衡器,来选择出一个合适的节点。
在rpcx提供了多个路由策略算法,可以在创建XClient来指定。

注意,在Rpcx的路由是针对 ServicePath 和 ServiceMethod的路由。

rpcx提供多种路由供选择:

  • [Random]随机策略: 从指定的服务节点集合中随机选择一个节点。
  • [Roundrobin] 轮训策略
  • [WeightedRoundRobin] 平滑加权轮训策略:使用Nginx采用的[平滑加权的轮询算法]
  • [网络质量优先]
  • [一致性哈希]
  • [地理位置优先]
  • 自定义路由策略

前六种都可以直接使用,下面自定义路由策略供参考

服务端

一个服务端起两个及以上的rpc服务,或者是多个微服务

package main
import (
	"flag"
	"github.com/smallnest/rpcx/server"
	"github.com/rpcx-ecosystem/rpcx-examples3"
	"context"
	"fmt"
)
var (
	addr = flag.String("addr", "localhost:8972", "server address")
	addr = flag.String("addr", "localhost:8973", "server address")
)

func main() {
   
	flag.Parse()
	go createServer(*addr1)
	go createServer(*addr2)
	select {
   }
}
func createServer(addr string) {
   
	s := server.NewServer()
	s.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值