当前位置: 首页 > 知识库问答 >
问题:

用于扩展Grpc服务器以阻止调用的配置

郜俊晤
2023-03-14
io.grpc.Server server = ServerBuilder.forPort(port)
        .addService(new MyServiceImpl())
        .build()
        .start();

共有1个答案

南门展
2023-03-14

你应该:

  1. 使用serverbuilder.executor()并设置forkjoinpool作为执行器。这个执行器是调用gRPC回调(即servercall.listener上的方法)的地方。ForkJoinPool是一个经过高度优化的、并发性更强的执行器,它允许网络线程重新处理HTTP/2和SSL之类的事情。
  2. 使用NettyServerBuilder.workerEventLoopGroup()并提供EpolleventLoopGroup。这允许您使用比缺省Nio Java网络实现更高效的优化网络线程实现。您提供给组的线程数量将取决于您的基准,但一个好的经验法则是2-4个工人。gRPC使用EventLoops与netty有些不同,因此每个核心通常不需要1个。
  3. 在SSL实现中使用netty-tcnative。它是一个包装OpenSSL和BoringSSL的更快的SSL实现。

我们努力使GRPC服务器的默认实现在没有任何额外配置的情况下快速,所以即使您不使用这些,它仍然会非常快。

 类似资料:
  • 在Go语言的gRPC中提供双向流时,规范流处理程序如下所示: 具体来说,当Bidi RPC的处理程序返回时,即考虑服务器端关闭的信号。 这是一个同步编程模型——在等待来自客户端的消息时,服务器在这个goroutine(由grpc库创建)中保持阻塞状态。 现在,我想取消阻止这个Recv()调用(最终在底层grpc上调用RecvMsg()。ServerStream),并返回/关闭流,因为服务器进程已决

  • 问题内容: 这个问题是面向jQuery的,但不一定是排他的。 简短的问题: 同步ajax调用会阻止正常按钮被单击吗? 我的测试表明这没有发生,但也许其他浏览器出了问题。 长的问题: 在我询问的另一个问题中,如何阻止ajax调用(我希望它阻止),这些家伙说浏览器在某些情况下会阻止。 实际上,甚至jQuery 的文档都说: 我正在尝试: 1.了解发生这种情况的方式/原因。 2.评估发生这种情况的可能性

  • 我有一个方法,可以启动一个简单的cpp grpc服务器。 我想做

  • 我在laravel开发了一个网站,并上传到网络服务器。我将所有文件和文件夹上传到根目录和公共文件夹的文件public_html。现在,当我键入网址到我的浏览器的主页工作正常,但我的其他路线显示 在laravel文档中,我发现“存储和引导/缓存目录中的目录应该可以由web服务器写入,否则laravel将无法运行。” 这是原因吗。如果是,那么我该怎么做?

  • 问题内容: 我是浏览器扩展开发的新手,我了解浏览器扩展更改页面并向其中注入代码的概念。 有没有办法可以扭转这个方向?我编写了一个扩展程序,提供了一组API,想要使用该扩展程序的网站可以检测到该扩展程序的存在,如果存在,该网站可以调用诸如这样的API方法。在Chrome,Firefox和Safari中可能吗? 例: Google创建了一个名为BeautifierExtension的新扩展。它具有一组

  • 我想通过客户端中MethodDescriptor的InputStream调用grpc服务器,但我没有成功。这是我的代码: grpc all dependency的版本为: 在服务器中,我的EchoServiceImpl扩展了EchoServiceGrpc。EchoServiceImplBase,重写echo rpc方法。我在构建服务器之前导出inputstream服务。 在客户机中,我创建了Inp