网络通信
bigzhangbig
互联网、Java、golang、python、数据分析、数据挖掘、推荐系统
展开
-
线程之间的通信方式
线程之间的通信: 线程之间(进程之间)的通信(其实就是信息数据的共享),包括共享内存或者消息传递(也是共享的一种变通方式) 两种; 共享内存,这个内存可能是第三方的内存存储; 这个消息可能是通过公网传输(由于网络的不可靠,因此变得复杂);原创 2017-04-15 09:42:28 · 498 阅读 · 0 评论 -
超时时间的用途的理解和总结
超时时间的用途的理解和总结: 超时时间有几个关注点需要重点关注和理解: 超时时间是一个协调时间; 没有到这个时间,会干嘛; 过了这个时间会干嘛;原创 2017-03-25 10:50:07 · 2640 阅读 · 0 评论 -
netty实现一个网络库要考虑的方面:
netty实现一个网络库要考虑的方面: 编解码:消息到byte,byte到数据(即定制协议) SOCKET连接(各种连接状态)管理; TCP参数设置; 请求/响应处理; 心跳机制(维持长连接/检活); 异步请求管理:支持异步调用,需要缓存请求,当网络IO有可读数据包时,判断是否是响应的; 支持同步调用:在超时内,监听网卡IO是否有可读数据,超时后,响应失败,上层可以重试等; 半双工:原创 2017-03-25 10:46:51 · 712 阅读 · 0 评论 -
网络编程为什么能异步来做
网络编程为什么能异步来做: 因为网络IO channel支持异步(文件channel是不支持异步IO的); 网络IO channel为什么支持异步 因为操作系统帮我们缓存了从网络上接收到的数据,而且当我们监听网卡事件后,操作 系统可以提醒我们有数据到了(在应用程序发送请求后,应用程序只需要订阅网卡事件就行,然后可以去做 其他事情,这就是异步); 因为缓存的存储一定会有限制,那么就需要一个原创 2017-03-25 10:46:28 · 585 阅读 · 0 评论 -
推拉的理解
推拉的理解: 推拉一定要结合网络IO来说; 推,就是建立连接后(一般可以用订阅来理解),对端(一般都是服务端)会主动把数据推送给对端(网卡缓存或者内核缓存); 拉:就是建立连接后,对端主动向对端发起请求,即request-response;原创 2017-03-25 10:50:51 · 943 阅读 · 0 评论 -
集中式工程拆解为分布式(微服务)需要注意的一些事情
1. 背景可能存在种种原因,会使得一个工程(或者功能模块)是堆积的,臃肿的,维护困难的。下面说下如何化解这个问题。2. 走向服务化把集中式工程进行拆解的一般成熟的套路是:工程模块化,然后搭配(局域)网络完成通信交互;2.1 拆分步骤:2.1.1 从功能上拆分从功能上拆分后,可以进一步把粒度分的细一些。根据功能拆分,是有一定的判定依据可遵循的(即根据业务线来清晰划分)。 通过业务线划分后,可能粒度还原创 2017-08-12 13:15:01 · 995 阅读 · 0 评论