开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第36天,点击查看活动详情
阅读英文翻译
1.4 流式系统如何工作
在看过一些事件和流式系统的例子后,你现在应该对什么是流式系统有了一些认识。接下来的几页将通过与其他类型的系统进行比较,从一个非常高的层面向你展示流式系统是如何工作的。
四种典型的计算机系统的比较:
你会发现,流处理系统和其他计算机系统有许多共同之处。毕竟,流处理系统仍然是一个计算机系统。下面是我们选择的几个典型系统来进行比较。
- 应用
- 后台服务
- 批处理服务
- 流处理服务
1.5 应用
应用(application)是用户与之直接交互的计算机程序。安装在电脑上的程序和安装在手机上的应用是应用程序。例如,计算机或手机上安装的计算器、文本编辑器、音乐和视频播放器、邮箱、浏览器和游戏都是应用程序。它们无处不在! 用户通过各种应用程序与计算机交互。
用户使用应用程序来完成任务。你可以在文本编辑器中创建笔记,并将其保存在文件中。你可以使用视频播放程序来打开和播放视频文件。你也可以用浏览器来搜索信息,观看视频,并在网上购物。
应用会有很大的不同。命令行工具、文本编辑器、计算器、照片处理器、浏览器和视频游戏的外观和感觉明显不同。你有没有想过它们是同一种软件?就内部而言,它们差别更大。一个简单的计算器可以用几行代码实现,而一个浏览器或游戏则需要几百万行代码。
尽管有种种不同,大部分应用程序的基本处理过程是相似的:有起点(当应用程序被打开时),终点(当应用程序被关闭时)。循环(主循环),包括以下三个步骤:
- 获取用户输入
- 执行逻辑
- 显示结果
1.6 后台服务
后台服务是一个在幕后运行的计算机程序。与应用程序不同,后台服务不直接与用户交互。相反,它响应请求并执行特定的任务。一个服务通常是一个长期运行的进程,并且一直在等待传入的请求。
以一个简单的网络服务为例。当收到请求时,程序解析请求,执行相应的任务,最后响应。处理完一个请求后,程序继续等待下一个请求。网络服务往往不是单独运行的,通常与其他后台服务一起为请求提供服务。后台服务可以处理来自彼此的请求,并且每个服务都负责一个特定的任务。下图显示了一个Web服务和一个存储服务一起工作以为一个页面请求提供服务。
1.7 后台服务内部
在后端服务中,也有一个主循环,但它的工作方式不同,因为后台服务所处理的请求与应用程序中的用户输入完全不同。因为应用程序通常是被一个用户使用的,在主循环的开始检查用户的输入通常是足够的,但是在后端服务中,大量请求可能同时到达,并且这些请求可能在任何时候到达。多线程为了及时处理这些请求的一种重要技术。一个线程是在一个进程中执行的子任务,一个进程的上下文中可以存在多个线程。多个线程共享进程的资源,如内存,并且它们可以并发执行。
一个典型的服务看起来像上图所示。请求处理程序创建一个新线程来执行真正的逻辑,并且不等待结果就立即返回。然后在自己的线程上并发执行耗时的计算(真正的逻辑)。这样,主循环运行得非常快,因此可以尽快处理新的请求。