高端响应式模板免费下载

响应式网页设计、开放源代码、永久使用、不限域名、不限使用次数

什么是响应式网页设计?

2024年网络建设可扩展性(必备3篇)

网络建设可扩展性 第1篇

在现实世界中部署应用程序时,可能会出现在 LAN 上开发该应用程序时不存在的新网络问题。网络拥塞、连接缓慢和网络链接丢失等问题可能会导致消息延迟或丢失。检测和处理网络超时很重要。

有几个套接字选项可以对套接字通信进行一些控制。该SO_TIMEOUT选项用于设置读取操作的超时时间。如果经过了指定的时间量,则会SocketTimeoutException引发异常。

在以下语句中,套接字将在 3 秒后过期:

该选项必须在阻塞读取操作发生之前设置。超时为零永远不会超时。处理超时是一个重要的设计考虑。

在本章中,我们研究了几种解决应用程序可伸缩性的方法。可扩展性是指应用程序补偿其上增加的负载的能力。虽然我们的示例侧重于将这些技术应用于服务器,但它们同样适用于客户端。

我们介绍了三种线程架构,我们专注于其中两种架构:thread-per-request 和 thread-per-connection。每个请求的线程模型为到达服务器的每个请求创建一个新线程。这适用于客户端一次发出一个或可能几个请求的情况。

每个连接的线程模型将创建一个线程来处理来自客户端的多个请求。这避免了必须多次重新连接到客户端以及不得不承担创建多个线程的成本。这种方法适用于需要维护会话和可能的状态信息的客户端。

线程池支持一种避免创建和销毁线程的方法。线程集合由线程池管理。未使用的线程可以重新用于不同的请求。线程池的大小是可以控制的,因此可以根据应用程序和环境的要求进行限制。该Executor班是用于创建和管理线程池。

NIO 的Selector课程被说明。这个类使得使用线程和 NIO 通道更容易。通道和与通道相关的事件通过选择器注册。当事件(例如通道变为可用于读取操作)发生时,选择器提供对通道和事件的访问。这允许单个线程管理多个通道。

我们简要地重新审查了HttpServer该年推出的类第4章,客户/服务器开发。我们演示了添加线程池以提高服务器性能是多么容易。我们还研究了网络超时的性质以及如何处理它们。当网络无法支持应用程序之间的及时通信时,就会发生这些情况。

在下一章中,我们将探讨网络安全威胁以及我们如何应对它们。

网络建设可扩展性 第2篇

我们引入了HTTPServer类第4章,客户/服务器开发。当 HTTP Server 收到请求时,默认情况下,它使用调用该start方法时创建的线程。但是,可以使用不同的线程。该setExecutor方法指定如何将这些请求分配给线程。

此方法的参数是一个Executor对象。对于这个参数,我们可以使用几种实现中的任何一种。在以下序列中,使用缓存的线程池:

要控制服务器使用的线程数,我们可以使用大小5为的固定线程池,如下所示:

必须在调用 的start方法之前调用此方法HTTPServer。然后将所有请求提交给执行器。以下是从复制HTTPServer这是在开发类第4章,客户/服务器开发,并为您展示使用的setExecutor方法:

服务器将以与以前相同的方式执行,但它将使用缓存线程池。

网络建设可扩展性 第3篇

在这种方法中,使用单个线程来处理客户端的所有请求。这种方法将要求客户端发送某种通知,表明它没有进一步的请求。代替显式通知,可能需要设置超时以在经过足够长的时间后自动断开客户端连接。

run通过注释掉处理请求并将响应发送到客户端的大部分 try 块来修改服务器的方法。将其替换为以下代码。在无限循环中,读取命令请求。如果请求是quit,则退出循环。否则,请求的处理方式与之前相同:

这就是需要在服务器中修改的全部内容。

在客户端中,使用以下代码替换创建缓冲读取器后的代码。这将向服务器发送三个请求:

所有三个请求只打开一个连接。

当客户端执行时,您将获得以下输出:

Connected to a Server

Axle request sent

Response:

Wheel request sent

Response:

Client Terminated

在服务器端,生成以下输出。您会注意到只创建了一个线程来处理多个请求:

Multi-Threaded Server Started

Listening for a client connection

Connected to a Client

Listening for a client connection

Client Thread Started

Request for Axle and returned a price of $

Request for Wheel and returned a price of $

Client Connection Terminated

Client Thread Terminated

当客户端发出多个请求时,这是一种更有效的架构。

猜你喜欢