分布式系统中的服务器管理
在本文中,我们将详细介绍如何在分布式系统中完成服务器管理的概念。
服务器管理:
分布式文件服务的实现由有状态或无状态文件服务器执行。
- 有状态的服务器:通过一个远程过程调用 (RPC) 维护客户端的状态,然后可用于执行其他调用。有状态服务器能够为客户端提供比无状态服务器更高的性能。进出服务器的消息的大小可以大大减少,因为客户端不必在每次执行操作时都发送整个文件元数据。此外,客户端还具有文件锁定和记住读写位置等功能。有状态架构的优点是系统增加了一个安全层,因此网上银行系统更喜欢使用它来管理交易。另一方面,其复杂的服务器设计、糟糕的崩溃恢复以及客户端和服务器之间的大量依赖使开发人员转向无状态方法。示例 - FTP(文件传输协议)、Telnet、TCP(传输控制协议)。
- 无状态服务器:它不跟踪客户端的当前状态。为了有效地执行请求的操作,每个请求都必须附带所有相关参数。更简单的编程范例,无需客户端维护状态数据的跟踪。在失败的情况下有很大的好处。故障服务器可以在崩溃后简单地重新启动并向客户端提供服务,就好像什么都没发生一样,因为没有状态可以恢复。此外,在客户端崩溃的情况下,服务器不会留下废弃的打开或关闭文件。另一个优点是简化了服务器实现,因为不需要与文件打开、关闭和锁定相关的状态记帐。一个缺点是,可能会定期出现较差的网络性能。如果每个请求中的冗余数据量增加,则可能会发生这种情况。示例 - HTTP(超文本传输协议)、UDP(用户数据报协议)、DNS(域名系统)、SMTP(简单邮件传输协议)等。
有状态服务器或无状态服务器的选择取决于应用程序。
无状态服务器和有状态服务器的区别:
Sr. No. | Parameters | Stateless Server | Stateful Server |
---|---|---|---|
1. | Definition | The server does not need to maintain the state of a process in stateless protocols. | The server must save the status of a process in stateful protocols. |
2. | Examples | HTTP (HyperText Transfer Protocol), UDP (User Datagram Protocol), DNS (Domain Name System), SMTP (Simple Mail Transfer Protocol), etc. | FTP (File Transfer Protocol), Telnet, TCP (Transmission Control Protocol). |
3. | Server Constraints | The server is not required to maintain information. | The server must maintain the status as well as session information. |
4. | Dependency | The client and server are independent as no state is required to be maintained and hence, loosely coupled. | The client and server are bound together as they rely on each other. |
5. | Design | It is simple to design. | It is complex to design as the server handles a lot of functionality and moreover, data also needs to be retained. |
6. | Handling of Requests | Requests in Stateless contain everything they need and are processed in a “request” and a “response” pair. | Requests are constantly dependent on the server-side status while using Stateful. |
7. | Architecture Scaling | Scaling of stateless architecture is easy. | Scaling stateful architecture is difficult. |
8. | Transaction Handling | The handling of transactions is quicker in stateless servers. | The handling of transactions is relatively slower in stateful servers. |
9. | Crash Management | Stateless protocols operate better in the event of a crash since there is no state that needs to be restored. It is simple to restart a server that failed during the crash. | The crash management is difficult here because the server maintains the status and session information and when a crash occurs, all of the information is lost. So, it is difficult to recover after a crash. |
10. | Server Usage | Different servers can handle different information at a given time. | Every request must be processed by the same server. |
为什么使用无状态服务器?
如上所述,选择无状态服务器的原因有很多:
- 它们使服务器设计更容易,因为大多数功能都是在客户端执行的。
- 它是可靠的,因为它可以迅速从部分故障中恢复。因为服务器不需要保存任何特定的状态或会话,它可以在失败时恢复或移动客户端的请求到另一个系统。
- 可扩展性很容易获得。因为服务器不必跟踪会话状态。因此,可以释放服务器的资源以容纳其他传入请求。
- 因为每个请求都是隔离的,所以它们可以同时处理多个会话。
- 请求处理信息没有被存储,这是服务器端内存使用减少的原因。
- 在崩溃期间,无状态协议通常表现得更好,因为在崩溃后不需要恢复状态。
- 创建/使用会话不涉及任何开销。
- 它确保了各种应用程序的一致性。
- 应用程序中缺少状态使其更易于使用和维护。
- 减少服务器使用的内存量。
- 会话过期不再是问题——过期的会话有时会产生难以定位和测试的问题。因为无状态应用程序不需要会话,所以它们不受这些问题的影响。
服务器创建语义:
服务器进程是独立的,它对客户端进行远程过程调用,因为客户端和服务器进程具有不同的生命周期,在不同的计算机上运行,并且具有不同的地址空间。按需服务器进程在其客户端进程之前创建或可能创建和安装。以下是基于生命周期的 RPC 服务器:
- 实例 -per-call 服务器:在单个呼叫期间保持活动状态。它在收到呼叫消息时创建,并在呼叫完成时删除。这种类型的服务器没有状态,即无状态,而且由于同类型的服务被多次调用,因此成本也很高。
- Instance -per-session Server:它存在于客户端和服务器交互的会话期间。跟踪呼叫间状态信息以减少与客户端-服务器会话的服务器创建和销毁相关的开销。每种服务都有自己的服务器管理器。这就是服务器管理器向绑定代理注册的原因。绑定代理向客户端提供服务器管理的地址。服务器管理器创建一个新服务器并将其地址提供给客户端。执行完成后,服务器由服务器管理销毁。它只为一个客户提供服务,因此一次管理一个信息状态。
- 持久服务器:顾名思义,它无限期地存在。大量客户端共享此服务器。它提高了整体性能和可靠性。负载平衡和故障恢复可以通过安装提供相同类型服务的服务器来实现。每个服务器都需要向绑定代理注册以导出其服务。
有状态模型,其中客户端依赖服务器进行大部分计算操作。其难以扩展是其原因。此外,技术进步与功能强大的客户端计算机的开发相结合,有助于向无状态的首选环境过渡。这让开发人员腾出时间和精力专注于产品开发,而不是像服务器软件实现这样的技术难题,这在有状态系统中很常见。