netty服务器运行一段时间_Netty在gRPC中的应用

本文探讨了Netty作为高性能网络应用程序框架在gRPC中的应用。Netty以其异步、事件驱动的特性,提供了高吞吐、低延迟的解决方案,被广泛应用于Alibaba、Apple等公司以及Apache Dubbo、gRPC等知名项目。gRPC是一个由Google开发的高性能RPC框架,基于HTTP/2,允许客户端像调用本地对象一样调用远程服务端的方法。文中还给出了gRPC服务定义及Netty使用的基本代码示例。
摘要由CSDN通过智能技术生成

Netty在gRPC中的应用

1. Netty

Netty,提供异步的、事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

Netty成长于用户社区,在2011年从Red Hat独立并且让广泛的开发者参与开发,当然对于开发者来说,能够被Netty采纳自己的代码也是一种认可和荣耀。Netty的github地址:

https://github.com/netty/netty

Netty的特点:

  • 统一的API去处理types-blocking and non-blocking socket的传输

  • 基于灵活且可定制的事件模型,可以将关注点明确分离

  • 高度可定制的线程模型-单线程,可以有一个或多个线程池

  • 支持connectionless datagram socket

Netty的核心在于它的事件驱动模型,统一的API以及数据传输中的零拷贝。在笔者刚接触Netty的时候,觉得它统一的API以及使用的简便性很厉害,接触的多了,发现其事件驱动(Reactor)线程模型才是Netty的灵魂。这种线程模型看起来很简单,但是应用在代码中,却有非常惊喜的效果。尤其是业务用到生产者-消费者模型的时候,使用Reactor模型的思想来写,既能提高效率,又能使代码更加简洁。

也正是因为Netty有高吞吐、低延迟、资源消耗低、能够减少不必要的内存复制的特点,Netty在Alibaba,Apple,Airbnb,IBM等公司以及比较知名的软件、框架例如Apache Dubbo、Apache Spark、gRPC等都有使用。

2. gRPC

gRPC是由Google 开发并开源的基于 HTTP/2 设计的高性能、通用 RPC 框架。当前支持 Java、C 和 Go 语言,其中 C 版本支持 C、C++、Node.js、C# 等。Java版本的github链接:

https://github.com/grpc/grpc-java

在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,能够更容易地创建分布式应用和服务。与许多 RPC 系统类似,gRPC 也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个 gRPC 服务器来处理客户端调用。在客户端拥有一个stub能够像服务端一样的方法

dbe5bec54e93c1b65c3b3ad6662d2946.png

代码示例

以下以官方demo介绍gPRC的使用以及对Netty的使用。

服务定义如下(helloworld.proto),其使用protocol buffers定义服务,具体语法参见protocol buffers语法

syntax = "proto3";
option java_package = "io.grpc.examples";
package helloworld;
service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}
message HelloRequest {
  string name = 1;
}
message HelloReply {
  string message = 1;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值