gRPC客户端的负载均衡器

一、gRPC是什么?

gRPC是一个高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。gRPC提供了一种简单的方法来精确地定义服务和为iOS、Android和后台支持服务自动生成 可靠性很强的客户端功能库。客户端充分利用高级流和链接功能,从而有助于节省带宽、降低的TCP链接次数、节省CPU使用、和电池寿命。

二、为什么使用gRPC?

有了 gRPC, 我们可以一次性的在一个 .proto 文件中定义服务并使用任何支持它的语言去实现客户端和服务器,反过来,它们可以在各种环境中,从Google的服务器到你自己的平板电脑- gRPC 帮你解决了不同语言间通信的复杂性以及环境的不同.使用 protocol buffers 还能获得其他好处,包括高效的序列号,简单的 IDL 以及容易进行接口更新。

三、出现启动其中一个服务挂了、中间服务挂了、服务重新启动这三种情况,如何保证客户端的正常访问?

1、haproxy

缺点:连接一次就新创建一个channel,并发高的话资源消耗大,性能也会有问题

2、客户端负载均衡器

优点:单例,资源消耗小,性能比较好

缺点:可能还存在点问题,代码有点乱

3、zk、consul

以后改进方案

4、如果大家有更好的方案,欢迎大家拍砖,谢谢

四、相关包的引用版本是多少?

1、Grpc.Core.0.15.0

2、Grpc.HealthCheck.0.15.0-beta

3、Google.Protobuf.3.0.0-beta3

gRPC Client源代码已上传git,本人比较懒没有完整上传解决方案,该有的都有了。

时间: 2024-12-15 01:35:32

gRPC客户端的负载均衡器的相关文章

gRPC Client的负载均衡器

一.gRPC是什么? gRPC是一个高性能.通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言.gRPC提供了一种简单的方法来精确地定义服务和为iOS.Android和后台支持服务自动生成 可靠性很强的客户端功能库.客户端充分利用高级流和链接功能,从而有助于节省带宽.降低的TCP链接次数.节省CPU使用.和电池寿命. 二.为什么使用gRPC? 有了 gRPC, 我们

grpc(3):使用 golang 开发 grpc 服务端和客户端

1,关于grpc-go golang 可以可以做grpc的服务端和客户端. 官网的文档: http://www.grpc.io/docs/quickstart/go.html https://github.com/grpc/grpc-go 和之前写的java的grpc客户端调用相同.也需要使用protobuf的配置文件. 但是golang下面的类库非常的简单,而且golang的性能也很强悍呢. 有些简单的业务逻辑真的可以使用golang进行开发. 性能强悍而且,消耗的资源也很小.java感觉上已

【译】gRPC负载均衡

原文地址:https://github.com/grpc/grpc/blob/master/doc/load-balancing.md gRPC负载均衡 范围 本文档解释了gPRC的负载均衡的设计. 背景 每次调用的负载均衡 值得注意的是gRPC的负载均衡是反生在每次调用的基础上,而不是每条连接的基础上.换言之,即使所有请求都来自于同一个客户端,我们仍旧想要它们被负载到所有的服务器上. 负载均衡的方式 在gPRC的负载均衡之前,先研究一下一些常见的负载均衡方式. 代理模式 代理提供一个可靠的可以

一个支持高网络吞吐量、基于机器性能评分的TCP负载均衡器gobalan

一个支持高网络吞吐量.基于机器性能评分的TCP负载均衡器gobalan 作者最近用golang实现了一个TCP负载均衡器,灵感来自grpc.几个主要的特性就是: 支持高网络吞吐量 实现了基于机器性能评分来分配worker节点的负载均衡算法 尽量做到薄客户端,降低客户端复杂性 项目开源地址 背景 先介绍几种常用的负载均衡机制,以下几种负载均衡方案介绍来自grpc服务发现&负载均衡 根据负载均衡实现所在的位置不同,通常可分为以下四种解决方案: 集中式LB(Proxy Model) 在服务消费者和服务

Spring Cloud 入门教程(五): Ribbon实现客户端的负载均衡

接上节,假如我们的Hello world服务的访问量剧增,用一个服务已经无法承载, 我们可以把Hello World服务做成一个集群. 很简单,我们只需要复制Hello world服务,同时将原来的端口8762修改为8763.然后启动这两个Spring Boot应用, 就可以得到两个Hello World服务.这两个Hello world都注册到了eureka服务中心.这时候再访问http://localhost:8761, 可以看到两个hello world服务已经注册.(服务与注册参见Spr

gRPC GoLang Test

gRPC是Google开源的一个高性能.跨语言的RPC框架,基于HTTP2协议,基于protobuf 3.x,基于Netty 4.x +. gRPC与thrift.avro-rpc.WCF等其实在总体原理上并没有太大的区别,简而言之GRPC并没有太多突破性的创新. protobuf相对于用Json方式传输,效率有很大提高,Kubernetes也从最初的Json转换成了gRPC. gRPC 在服务端提供一个 gRPC Server,客户端的库是 gRPC Stub. 典型的场景是客户端发送请求,同

gRPC初探

概览 在gRPC的官方文档中这样描述grpc的特点: 第一点:强大的接口描述语言(Powerful IDL) Protocol Buffers是一个强大的二进制序列化工具集和语言,你可以使用Protocol Buffers定义你的接口. 第二点:支持十种语言的类库 为各种语言编写的服务自动生成相应语言的客户端和服务端存根(也就是接口) 第三点:基于HTTP2协议 基于HTTP2标准设计,带了许多诸如双向流.流程控制.头部压缩.单TCP连接上的多路复用请求等特性. 这些特性使得其在移动设备上表现更

云中间层服务 - 区域感知负载负载均衡器 Ribbon

Ribbon 简介        Ribbon 是 Netflix 发布的云中间层服务开源项目,其主要功能是提供客户侧软件负载均衡算法,将 Netflix 的中间层服务连接在一起.        Why Ribbon?        Ribbon 的区域感知负载均衡器的功能久经考验.区域感知负载均衡器内置电路跳闸逻辑,可被配置基于区域同源关系(Zone Affinity,也就是更倾向于选择发出调用的服务所在的托管区域内,这样可用降低延迟,节省成本)选择目标服务实例.它监控每个区域中运行的实例的运

浅谈负载均衡器LVS

Linux Virtual Server 项目由章文嵩博士在1998年5月发起创立,是国内最早的自由软件项目之一.Linux Virtual Server 针对高可伸缩.高可用网络服务的需求,提出了基于IP 层和基于内容请求分发的负载均衡调度解决方案.由于该项目的负载调度技术是在 Linux 内核中实现的,所以称之为"Linux 虚拟服务器"(LinuxVirtual Server),简称为LVS.在开始讨论LVS之前,先普及一下集群方面的知识,这有助于更好理解LVS的应用场合. 常见