热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Grizzlycoreconfiguration

核心配置核心框架的主要配置点是传输实例(Transportinstances)及其关联的线程池(threadpools)。通过NIOTransportBuilder可以配置这两个

核心配置

核心框架的主要配置点是传输实例(Transport instances)及其关联的线程池(thread pools)。通过 NIOTransportBuilder 可以配置这两个实体。

传输配置

正如有针对TCP和UDP的具体 NIOTransport 实现一样,也有两种具体的 NIOTransportBuilder 实现。
每个 NIOTransportBuilder 实现都公开了每种传输所独有的可配置功能。以下内容描述了所有 NIOTransports 共有的配置属性,
然后描述了 TCP 和 UDP NIOTransport 实现的属性。

NIOTransportBuilder属性


NIOTransportBuilder属性描述
workerThreadPoolConfig此属性公开ThreadPoolConfig实例,该实例允许配置将由此构建器构造的传输使用的工作线程池(work thread pool)。注意:根据所使用的IOStrategy,此值可以为null。
selectorThreadPoolConfig此属性公开了ThreadPoolConfig实例,该实例允许配置将由此构建器构造的传输使用的选择器/内核线程池。(selector/kernel thread pool)
IOStrategy设置此传输将使用的IOStrategy。请注意,在开始传输之前更改此值可能会对workerThreadPoolConfig属性的返回值产生影响。如果未显式设置任何值,则将使用WorkerThreadIOStrategy。有关Grizzly 2.3随附的每个具体IOStrategy的详细信息,请参见IOStrategies的部分。
memoryManager设置此传输使用的MemoryManager。如果未显式设置任何值,则使用的MemoryManager将为NIOTransportBuilder.DEFAULT_MEMORY_MANAGER。有关MemoryManager系统的详细信息,请参阅“内存管理”部分。
selectorHandler设置此传输使用的SelectorHandler。如果未显式设置任何值,则使用的SelectorHandler将是NIOTransportBuilder.DEFAULT_SELECTOR_HANDLER。有关SelectorHandler的详细信息,请参见“传输和连接”部分。
selectionKeyHandler设置此传输要使用的SelectionKeyHandler。如果未显式设置任何值,则使用的SelectionKeyHandler将为NIOTransportBuilder.DEFAULT_SELECTION_KEY_HANDLER。有关SelectionKeyHandler的详细信息,请参见“传输和连接”部分。
attributeBuilder设置此传输使用的AttributeBuilder。如果未显式设置任何值,则使用的AttributeBuilder将为NIOTransportBuilder.DEFAULT_ATTRIBUTE_BUILDER。
NIOChannelDistributor设置此传输使用的NIOChannelDistributor。有关NIOChannelDistributor的详细信息,请参见“传输和连接”部分。
processor设置此传输使用的处理器。
processorSelector设置此传输使用的ProcessorSelector。
readBufferSize设置每个连接分配的缓冲区大小,以读取传入数据。
writeBuffersSize设置每次连接将应用的缓冲区大小,以写入传出数据。

TCPNIOTransportBuilder属性


TCPNIOTransportBuilder属性描述
clientSocketSoTimeout以毫秒为单位(客户端模式),SO_TIMEOUT 以指定的超时 enable/disable SO_TIMEOUT。
connectionTimeout在建立连接之前可能花费的时间,超时时间(以毫秒为单位)。
keepAliveEnable/disable SO_KEEPALIVE.
linger使用指定的延迟时间(以秒为单位)启用/禁用SO_LINGER。最大超时值(maximum timeout value)是特定于平台的。该设置仅影响套接字关闭。
reuseAddress启用/禁用SO_REUSEADDR套接字选项。当TCP连接关闭时,连接可能会在连接关闭后的一段时间内保持超时状态(通常称为TIME_WAIT状态或2MSL等待状态)。对于使用众所周知的套接字地址或端口的应用程序,如果在超时状态下存在涉及套接字地址或端口的连接,则可能无法将套接字绑定到所需的SocketAddress。
serverConnectionBacklog指定最大未建立连接队列长度。
serverSocketSoTimeout以指定的时间 Enable/disable SO_TIMEOUT,以毫秒为单位(服务器模式)
tcpNoDelay启用/禁用TCP_NODELAY(禁用/启用Nagle算法)。
temporarySelectorIO允许指定TemporarySelectorIO实例,以帮助模拟阻塞IO。
optimizedForMultiplexing控制写入连接的行为。如果启用,则无论当前线程是否可以直接写入连接,所有写入都将传递到异步写入队列。当实际发生写入时,传输将尝试从写入队列中写入尽可能多的内容。默认情况下禁用此选项。
maxAsyncWriteQueueSizeInBytes指定基于每个连接的异步写入队列的大小(以字节为单位)。如果未指定,则该值将配置为系统套接字写缓冲区大小的四倍。将此值设置为-1将使队列不受限制。

UDPNIOTransportBuilder属性


UDPNIOTransportBuilder属性描述
connectionTimeout在操作超时之前建立连接可能花费的时间(以毫秒为单位)。
reuseAddress启用/禁用SO_REUSEADDR套接字选项。当TCP连接关闭时,连接可能会在连接关闭后的一段时间内保持超时状态(通常称为TIME_WAIT状态或2MSL等待状态)。对于使用众所周知的套接字地址或端口的应用程序,如果在超时状态下存在涉及套接字地址或端口的连接,则可能无法将套接字绑定到所需的SocketAddress。
temporarySelectorIO允许指定TemporarySelectorIO实例,以帮助模拟阻塞IO。

线程池配置

Grizzly的线程池配置由ThreadPoolConfig对象管理:

ThreadPoolConfig属性描述
queue要使用的任务队列实现。
queueLimit可以排队的最大待处理任务数。
threadFactoryThreadFactory 是一个用于创建新的线程的线程池
poolName该线程池的名称。
priority分配给每个线程的优先级。这将覆盖由指定ThreadFactory分配的任何优先级。
corePoolSize初始化线程池时需要一起创建的线程的初始数量。
maxPoolSize该线程池可以维护的最大线程数
keepAliveTime线程可以保持空闲并等待新任务执行后释放的最长时间。可以使用自定义时间单位。
transactionTimeout在发送中断信号之前,可能允许线程运行单个任务的最长时间。可以使用自定义时间单位。

线程池配置相当简单。但是,应该注意,Grizzly在内部具有多个线程池实现:SyncThreadPool,FixedThreadPool和QueueLimitedThreadPool。选择哪种实现取决于配置。以下各节描述了每个线程池实现

FixedThreadPool

当queueLimit属性小于零且最大和核心池大小相同时,将选择此池。在执行任务时,FixedThreadPool没有同步,因此它提供了更好的性能。

QueueLimitedThreadPool

当queueLimit属性大于零且最大和核心池大小相同时,将选择此池。QueueLimitedThreadPool是FixedThreadPool的扩展,因此,如果不提供无限制的任务队列,它就能提供与FixedThreadPool相同的优点。

SyncThreadPool

当其他线程池的标准都不适用时,将选择此池。该线程池确实具有同步功能,可以对线程创建的决策进行精确控制。

例子

以下是一些使用TCPNIOTransportBuilder配置传输和/或线程池的示例。

final TCPNIOTransportBuilder builder = TCPNIOTransportBuilder.newInstance();
final TCPNIOTransport transport = builder.build();

使用所有默认配置值创建一个新的TCPNIOTransport。

final TCPNIOTransportBuilder builder = TCPNIOTransportBuilder.newInstance();
final TCPNIOTransport transport = builder.setIOStrategy(SameThreadIOStrategy.getInstance()).setTcpNoDelay(true).build();

使用SameThreadIOStrategy创建一个新的TCPNIOTransport实例,并将tcp-no-delay设置为true。请注意,配置调用可以链接。

final TCPNIOTransportBuilder builder = TCPNIOTransportBuilder.newInstance();
final ThreadPoolConfig config = builder.getWorkerThreadPoolConfig();
config.setCorePoolSize(5).setMaxPoolSize(5).setQueueLimit(-1);
final TCPNIOTransport transport = builder.build();

由于没有队列限制并且核心池和最大池大小相同,因此本示例将配置TCPNIOTransport以使用FixedThreadPool实现。


推荐阅读
  • Spring Data JdbcTemplate 入门指南
    本文将介绍如何使用 Spring JdbcTemplate 进行数据库操作,包括查询和插入数据。我们将通过一个学生表的示例来演示具体步骤。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 如何在Linux服务器上配置MySQL和Tomcat的开机自动启动
    在Linux服务器上部署Web项目时,通常需要确保MySQL和Tomcat服务能够随系统启动而自动运行。本文将详细介绍如何在Linux环境中配置MySQL和Tomcat的开机自启动,以确保服务的稳定性和可靠性。通过合理的配置,可以有效避免因服务未启动而导致的项目故障。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • 深入解析Android 4.4中的Fence机制及其应用
    在Android 4.4中,Fence机制是处理缓冲区交换和同步问题的关键技术。该机制广泛应用于生产者-消费者模式中,确保了不同组件之间高效、安全的数据传输。通过深入解析Fence机制的工作原理和应用场景,本文探讨了其在系统性能优化和资源管理中的重要作用。 ... [详细]
  • 本文详细介绍了 com.apollographql.apollo.api.internal.Optional 类中的 orNull() 方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • 零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ... [详细]
author-avatar
qianweirui7058
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有