开发者学堂课程【大数据Spark2020版(知识精讲与实战演练)第五阶段:Sparkstreaming 案例 — socket 回顾】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/692/detail/12129
Sparkstreaming 案例 — socket 回顾
内容介绍
一、案例流程
二、Socket 回顾
三、Tcp 三次握手建立连接
一、案例流程
流式计算存在前提:
一个源源不断产生数据的数据源,首先创建一个 socket server,当作数据源,将数据进行处理放入 Spark Streaming 的程序中,将处理完的数据进行一个批次一个批次的处理,处理完后,可以将数据放入打印在控制台中,或者放入外部存储当中。这时可以使用 comsole 进行打印。
运用 net cat 创建 Socket,创建完成通过 netcat 完成之后创建工程 编写 Sparkstreaming 编码,编写后完成后,进行运行。
二、Socket 回顾
回顾原因
1. 在面试时经常问道建立 socket 三次握手建立的过程,和 socket 的含义与功能。
2.使用大概了解功能,是什么。
Socket 是 java 中为了支持基于 tcp/udp 协议的通信所提供的编程模型
Socket 是一种编程模型,编程模型:所编写的一类,通过编程模型去模拟反应客户端与服务器之间通信。
Socket 支持的类型:tcp 和 udp
Tcp: 保证通信安全
Udp:不保证,只管发送
Socket 分为 Socketserver 和 socket clicent
Socket serve
作用:监听某一个端口,通过 socket 来建立 clicent 发过来的连接请求,建立连接,通过图形表现
首先 socket 服务器占用某一个端口,通过 socket clicent 建立连接
连接建立后可以向 socket clicent 发送 tcp (被动)消息
socket clicent
通过 client 连接端口,建立完成后,向 Socket serve
发送 tcp packet 实现交互(主动)启动需要建立连接
三、Tcp 三次握手建立连接
第一步
client 向 serve 发送 SYN,进入 SYN -SEND
状态等待 serve 相应
第二步
serve 自身携带随机数j收到 client 的 syn 并发送确认包 ack(j+1),ack(j+1)同时自己发送一个请求连接
ack(j+1)目的是确认连接请求,
Syn 给 client 携带随机数k,进入 SYN -SEND 状态等待 client 确认
第三步
Client 收到 serve 的确认包 ack(j+1)向 serve 发送链接确认,此时连接确认,
ACK(K+1)此时 Client 和 serve 都进入 ESTABLISHED 状态,准备数据发送
图形展示如下:
此次三次建立过程,面试经常使用
总结:
为第一次请求连接,第二次 Client 向客户端发送准备完成消息,第三次客户端回复准备完成消息,即可连接建立成功