-
Fourinone分布式并行计算四合一框架
2012-06-12 14:59:36也可以将domain视为订阅主题,将每个订阅者注册到domain的node上,发布者将消息逐一更新每个node,订阅者监控每个属于自己的node的变化事件获取订阅消息,收到后删除内容等待下一个消息。但是Fourinone不实现JMS的... -
网络基础知识总结
2020-12-19 11:32:25网络基础知识小结 (持续滚动补充) IP地址包含网络ID和主机ID。表示方法如:192.168.1.1/32 等价于192...路由:查找目标地址的下一跳。 D N S:域名解析服务器,用来解析请求数据包里的域名查址到对应的IP。 网桥:将网络基础知识小结
(持续滚动补充)
- IP地址包含网络ID和主机ID。表示方法如:192.168.1.1/32 等价于192.168.1.1 / 255.255.255.0
- 子网掩码,用来与IP地址取位与运算,计算其是否在同一个网段,表示方法如:255.255.255.0等价于24/0。
比如255.255.248.0的掩码,代表网段1-7是同一网段。 - 网关:用于将不同网段的数据包,做转发功能。
- 路由:查找目标地址的下一跳。
- D N S:域名解析服务器,用来解析请求数据包里的域名查址到对应的IP。
- 网桥:将两个网口关联,行成桥接模式,效果如同一根网线,不区分一进一出。
- WAN: 万维网,就是互联网。
- LAN: 局域网,可以通过一个交换机或者路由器组建。
- V LAN:虚拟局域网,在一个局域网中划分V LAN, 通过V LAN id查找是否为一个局域网,实现物理隔离的效果。比如:V
LAN 1的广播步会发送到V LAN 2网口中 - V LAN划分,针对网口区分access模式,和trunk模式,access模式下,只允许自己的V LAN
ID数据包流过,trunk模式下,可以接受不同V LAN id的数据包。 - 交换机:只是对网口的扩展功能,如果是三层交换机,则自身带有路由功能。
- 路由器:包含交换机的功能,有完整的路由功能。
-
计算机网络常见问题解答
2010-06-07 08:19:11问题4-18:路由表中只给出到目的网络的下一跳路由器的IP地址,然后在下一个路由器的路由表中再给出再下一跳的路由器的IP地址,最后才能到达目的网络进行直接交付。采用这样的方法有什么好处? 问题4-19:链路层广播... -
Linux网络编程 (第2版 )
2018-08-03 11:52:347.2.5 接受一个网络请求函数accept() 194 7.2.6 连接目标网络服务器函数connect() 199 7.2.7 写入数据函数write() 200 7.2.8 读取数据函数read() 201 7.2.9 关闭套接字函数 202 7.3 服务器/客户端的简单例子 ... -
清华大学的计算机网络课件
2010-03-26 11:11:56可见,如果选择前一种方法,即不作任何其他的处理,那么数据链路层的传输就不能“让网络层向下看起来好像是一条不出差错的链路。” 现在的问题是:到底哪一种说法是正确的? 问题3-2:当数据链路层使用PPP协议或... -
网络技术学习大全(TCPIP)1.rar
2008-10-17 10:42:0311.3 计算IP网络中的路由 106 11.3.1 存储多条路由 107 11.3.2 初始化更新 107 11.3.3 路由度量标准 107 11.4 小结 108 第12章 路由信息协议(RIP) 109 12.1 理解RFC1058 109 12.1.1 RIP报文格式 109 12.1.2 RIP... -
TCP/IP网络互联技术(卷3):客户-服务器编程与应用(Windows套接字版)--详细书签版
2013-06-27 07:31:35他也曾任美国计算机网CSTNET技术委员会的主席,该网络是美国早期互联网建设中最重要的网络之一。他现在是美国普渡大学计算机科学系的教授,从事计算机网络和操作系统方面的教学和科研工作。 目录 封面 -26 扉页 -25... -
Flink集成Redis组件,使用异步IO能完全解决性能瓶颈问题?
2020-05-02 10:46:39流计算系统中经常需要与外部系统(Redis、MySQL等)进行交互,我们通常的做法如向数据库发送用户a的查询请求,然后等待结果返回,在这之前,我们的程序无法发送用户b的查询请求。这是一种同步访问方式,如下图所示。...基于上述的问题,我们先来对异步IO有个大致的认识,了解的同学可以选择跳过。
流计算系统中经常需要与外部系统(Redis、MySQL等)进行交互,我们通常的做法如向数据库发送用户a的查询请求,然后等待结果返回,在这之前,我们的程序无法发送用户b的查询请求。这是一种同步访问方式,如下图所示。
图中棕色的长条表示等待时间,可以发现网络等待时间极大地阻碍了吞吐和延迟。为了解决同步访问的问题,异步模式可以并发地处理多个请求和回复。也就是说,你可以连续地向数据库发送用户a、b、c等的请求,与此同时,哪个请求的回复先返回了就处理哪个回复,从而连续的请求之间不需要阻塞等待,如上图右边所示。这也正是 Async I/O 的实现原理。
说到这里,其实大部分开发者可以想到,使用多线程缓解这个问题,但这存在一个很大的缺陷:编程模型会变得更加复杂,因为必须在算子中实现线程,必须与检查点进行协调,如果这样做的话,Flink的checkpoint机制其实是没有很好的运用的。
进入正题,当时接到的需求如下:
1.数据源:从 kafka 接入实时数据。
2.解析json,取到所需要的字段数据,其中有一个userName的字段,截取前七位,作为redis的key。
3.通过key去redis查询该条数据对应的省份和城市。
4.每五分钟作为一个时间窗口,keyby后reduce进行计算。
5.将结果保存至oracle数据库。
当然,我们这次讨论的重点是步骤 2和3,也就是Flink与Redis集成的部分,以下是我开发测试的一个心路历程,欢迎大家提取一些自己的见解。
- 第一步是 kafka 接入,process中未做任何处理,每秒数据量大概在 12000/s。
- 第二步测试读取 Redis ,获得省份城市,一个并发度每秒处理数据量大概在 140/s,产生严重的背压。所以,如果我们想处理 12000/s的数据量,大概需要设置process算子的并行度为 85,也就是使用了 85 个slot,这对于集群来说是很不合理的。
- 第三步测试异步IO读取redis,一个并发度处理能力大概在 6000/s,确实相对于同步有了很大的提升。
public class TestSlot { private static Logger LOGGER = LoggerFactory.getLogger(TestSlot.class); public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); DataStreamSource<String> inputStream = KafkaReader.getKafkaSource(env, "dfsawf", "CSLog"); AsyncDataStream.unorderedWait(inputStream, new MyRichAsyFunction(), 2, TimeUnit.SECONDS, 40).setParallelism(1); env.execute("JFYINTERNAL1"); } }
public class MyRichAsyFunction extends RichAsyncFunction<String, Tuple2<JSONObject, String>> { private static final Logger LOGGER = LoggerFactory.getLogger(MyRichAsyFunction.class); private transient JedisCluster jedisCluster; @Override public void open(Configuration parameters) throws Exception { super.open(parameters); jedisCluster = JedisClusterUtils.getJedisClusterConn(); } @Override public void asyncInvoke(String input, ResultFuture<Tuple2<JSONObject, String>> resultFuture) throws Exception { JSONObject rootObject = JSONObject.parseObject(input); CompletableFuture.supplyAsync(new Supplier<String>() { @Override public String get() { Object userName = rootObject.getOrDefault("userName", ""); Object provinceName = rootObject.getOrDefault("province", ""); if (("".equals(provinceName) || provinceName == null) && !"".equals(userName)) { String phoneNum = userName.toString().substring(0, 7); String provinceCode = jedisCluster.hget("up_sf##" + phoneNum, "provinceCode"); } return ""; } }).thenAccept((String result) -> { resultFuture.complete(Collections.singleton(new Tuple2<>(rootObject, result))); }); } @Override public void timeout(String input, ResultFuture<Tuple2<JSONObject, String>> resultFuture) throws Exception { LOGGER.error("timeout !"); } @Override public void close() throws Exception { super.close(); if (jedisCluster != null) { jedisCluster.close(); } } }
- 第四步,因为一个并发度,异步IO可以处理6000/s,所以,如果我们想处理 12000/s的数据量,大概需要设置process算子的并行度为 3,就能消费得过来了,是这样吗?接下来,我们设置并发度为3,效果如下,并没有像我们预期那样,每个slot的消费能力都是 6000/s。
基于上述的一些测试,可以大至定位到问题所在,在使用异步IO的时候,一个slot的处理能力是 6000/s,但增大slot对处理能力没有影响。只有当slot在不同机器上时,消费能力才有提升。起初一直是纠结在 redis的连接数,和异步IO的capacity上,但经过测试不是这些原因。
同步请求 redis 时,处理能力大概 140/s, 6000/140 = 40,也就是我们异步的能力是 40,这是因为我们 TaskManager 节点的 CPU 核数是 40,导致我们并发线程的能力瓶颈就是 40 个。
综上,我们异步请求 redis 的瓶颈其实是在我们开辟线程的能力上,是硬件导致的问题。这也就能解释,为什么 slot 在不同机器上时,处理能力能提升一些,而在一个机器上,无论怎样加大异步的capacity,都没有作用。
-
nlb负载均衡架设教程
2018-05-30 15:37:39网络负载平衡,英文简称为NLB,windows Server 2012 中该功能允许你将传入的请求传播到最多达32台的服务器上,即可以使用最多32台服务器共同分担对外的网络请求服务。网络负载平衡,保证即使是在负载很重的情况下... -
CISCO路由之排除路由故障
2009-08-06 11:57:30当路由选择表进程检查一条使用中间地址(路由选择表中作为下一跳引用的IP地址)的可解析的静态路由时,这个检查总是在有类别方式下完成的,无论是否使用ip classless命令如果在路由选择表中有类别方式下的中间地址... -
分布式协调工具-ZooKeeper实现动态负载均衡
2019-12-13 21:40:02有些业务逻辑(例如一些耗时的计算,网络I/O处理),往往只需要让整个集群中的某一台机器进行执行,其余机器可以共享这个结果,这样可以大大减少重复劳动,提高性能,于是这个master选举便是这种场景下的碰到的主要... -
IPv6.rar
2012-07-25 17:07:33为何需要link-local:在一个接口可以配置很多IPv6地址,所以学习路由就有可能出现很多下一跳。 所以出现Link Local地址唯一标识一个节点。在本地链路看到下一跳都是对端的Link Local地址。 在网络重新编址过程中,... -
vc++ 应用源码包_1
2012-09-15 14:22:12CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及... -
vc++ 应用源码包_6
2012-09-15 14:59:46CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及... -
vc++ 应用源码包_5
2012-09-15 14:45:16CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及... -
vc++ 应用源码包_2
2012-09-15 14:27:40CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及... -
vc++ 应用源码包_4
2012-09-15 14:38:35CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及... -
vc++ 应用源码包_3
2012-09-15 14:33:15CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及... -
双击摄像机节点自动播放视频,双击节点自动依次添加视频,会自动跳到下一个,双击父节点自动添加该节点下的所有视频。 摄像机节点拖曳到对应窗体播放视频,同时支持拖曳本地文件直接播放。 视频画面窗体支持拖曳交换...
-
2.5.6 在NetWare 网络中,客户需要访问某个类型的服务器时,首先要发送一个 ()广播报文来寻找服务器? 2.5.7 IPX地址网络地址有( )个字节? 2.5.8 对于帧中继描述正确的是? 2.5.9 对于INVERSE ARP的描述正确...
-
iPhone开发秘籍(第2版)--源代码
2012-12-11 13:51:221.6.2 请求证书 10 1.6.3 注册设备 11 1.6.4 注册应用程序标识符 11 1.6.5 设置 12 1.7 组建iPhone项目 12 1.7.1 iPhone应用程序的主干 13 1.7.2 main.m 14 1.7.3 应用程序委托 15 1.7.4 视图控制器 16 ... -
Oracle9i的init.ora参数中文说明
2008-11-07 20:14:11监听程序进程需要一个监听地址, 以便处理系统所用的各个网络协议的连接请求。 除非 MTS_MULTIPLE_LISTENERS=TRUE, 否则每个条目都必须有一个独立的相邻值。此参数自 8.1.3 版起已废弃 语法 : (ADDRESS=(PROTOCOL=... -
用TCP/IP进行网际互联 第三卷:客户-服务器编程与应用(Linux/POSIX套接字版)--详细书签版
2012-10-12 14:44:57他也曾任美国计算机网CSTNET技术委员会的主席,该网络是美国早期互联网建设中最重要的网络之一。他现在是美国普渡大学计算机科学系的教授,从事计算机网络和操作系统方面的教学和科研工作。 Douglas Comer博士是... -
TCP/IP技术大全(中文PDF非扫描版)
2015-08-12 14:56:2311.3 计算IP网络中的路由 106 11.3.1 存储多条路由 107 11.3.2 初始化更新 107 11.3.3 路由度量标准 107 11.4 小结 108 第12章 路由信息协议(RIP) 109 12.1 理解RFC1058 109 12.1.1 RIP报文格式 109 12.1.2 RIP... -
入门学习Linux常用必会60个命令实例详解doc/txt
2011-06-09 00:08:45虚拟控制台的切换可以通过按下Alt键和一个功能键来实现,通常使用F1-F6 。 例如,用户登录后,按一下“Alt+ F2”键,用户就可以看到上面出现的“login:”提示符,说明用户看到了第二个虚拟控制台。然后只需按“Alt+... -
Cisco路由器手册
2012-09-27 09:12:2210.3 相关逻辑单元请求者/服务器 171 10.4 网络结点的放置 171 10.5 性能考虑 172 10.5.1 拓扑数据库更新 173 10.5.2 连接网络 173 10.5.3 CP-CP会晤数目 174 10.5.4 网络结点数目 175 10.5.5 LOCATE搜索 176 10.6 ... -
php高级开发教程说明
2008-11-27 11:39:22些实用规则来帮助你实施下一个A P I,例如风格问题、以及商业技巧等。 1.3 编码规范 好的编码和差的编码之间究竟有何区别呢?实际上,这个问题很简单。好的代码(确实好 的代码)能够像一本书一样被阅读。你能从任何... -
TCP-IP协议详解
2008-11-24 20:46:5011.3 计算IP网络中的路由 106 11.3.1 存储多条路由 107 11.3.2 初始化更新 107 11.3.3 路由度量标准 107 11.4 小结 108 第12章 路由信息协议(RIP) 109 12.1 理解RFC1058 109 12.1.1 RIP报文格式 109 12.1.2 RIP... -
TCP/IP教程TCP/IP基础
2009-11-23 20:58:4611.3 计算IP网络中的路由 106 11.3.1 存储多条路由 107 11.3.2 初始化更新 107 11.3.3 路由度量标准 107 11.4 小结 108 第12章 路由信息协议(RIP) 109 12.1 理解RFC1058 109 12.1.1 RIP报文格式 109 12.1.2 RIP... -
电脑常见问题与故障1000例(高清PDF中文版)
2011-05-30 07:13:36149.跳过磁盘检测的等待时间 150.整理磁盘碎片时经常重复 151.SATA硬盘不能安装Windows XP 1.5 显卡故障 152.开机后显示器无显示 153.显卡接触不良造成的启动失败 154.启动时长鸣判断显卡故障 155.显卡“金手指”被...
-
tcp三次握手和四次挥手
-
Aurix多核编程精华应用笔记
-
1045
-
NFS 网络文件系统
-
NFS 实现高可用(DRBD + heartbeat)
-
jdk8win64.zip
-
MAC 活动监视器部分状态缺失
-
Docker跨服务器通信Overlay解决方案(上) Consul单实例
-
基于SSM实现的房屋租赁系统【附源码】(毕设)
-
Mysql数据库面试直通车
-
墨珩科技荣获“高新技术企业”认定
-
复数集合(北邮复试上机)
-
在Mac上如何将MS-DOS文件系统格式化为NTFS文件系统?
-
cisco通过FTP、TFTP系统升级.doc
-
GIS_algorithm.zip
-
vb6.0实现定时器功能源代码
-
BL1720 Wifi驱动 单天线
-
MySQL 触发器
-
EDD-BIOS Enhanced Disk Drive Specification.pdf
-
STM32F40x_ADC_waveform.zip