`

通讯层与序列化

 
阅读更多

通讯层: 封装与网络通讯 传输数据相关的API,成熟的框架有mina等

序列化/反序列化: 这个多了 gpb,json等等

rpc: 我觉得这个是更多关系业务层逻辑上的过程功能,底层的实现调用可以是通讯  序列化这些。


看了tim的文章 ,网络相关的问题在他的眼里通讯层与实际的IDC关系比较密切,也可以抽象出更多的问题,引用tim的话:

 

“ 目前考虑到的原因有

  • Connection pool作用。为了节点间更高的throughput, 通常两节点之间会使用n个固定连接来传输。n可设为CPU内核数大小。
  • 多节点互相连接的处理。一个节点需要连接n个节点发送信息。如果这部分逻辑放在业务调用层来实现,业务层会变得臃肿。
  • 处理自动重连逻辑,单个节点可以停用并重新启用。将这部分逻辑封装到通讯层,上层调用会更优雅。
  • 服务器之间通讯很短时间内不稳定(比如10s左右的中断)的处理。如果IDC内部或IDC之间通讯不稳定会造成这种现象。我们希望这种短暂的中断,不要引起业务逻辑重新选择节点,造成大量数据迁移及cache重构带来的内部振荡。
  • 海量数据传输最优化,大部分时间单个节点单向传输会>10k个数据包/s,独立的通讯层容易测试观察该环节是否存在瓶颈。”

参考文献:

 

<1> http://timyang.net/architecture/communication-code-review/

分享到:
评论

相关推荐

    即时聊天(序列化)

    在这个项目中,我们将讨论如何实现一个即时聊天系统,重点是利用序列化串行接口进行通信。序列化是将对象的状态转换为可以存储或传输的数据格式的过程,而串行接口则是一种数据传输方式,它一次处理一个数据位,适合...

    LABVIEW 网络通讯例程

    6. **数据序列化与反序列化**: 在网络通信中,LabVIEW的数据需要转换为二进制格式进行传输,这涉及到数据的序列化和反序列化。例如,可以使用LabVIEW的内置函数将VI的数据结构转换为字节流,然后在网络中传输,...

    C#企业培训第六课源码(即时通讯类层次)

    在C#中实现这样的系统需要对面向对象编程有深入的理解,同时也要掌握网络编程、多线程处理和数据序列化等关键技术。 首先,我们来看“类层次结构”的概念。在C#中,类层次结构是指由继承关系构建的一系列类的集合,...

    java服务器端(Netty_Proto)和c++客户端tcp通讯.rar

    ProtoBuf是一种数据序列化协议,它可以将结构化的数据序列化,可用于数据存储、通信协议等方面,支持多种编程语言,包括Java和C++。 描述中提到的“java服务器端(Netty_Proto)和c++客户端tcp通讯”进一步确认了这...

    c++客户端和java(Netty)服务器端tcp通讯

    本话题将探讨如何使用C++客户端与Java(通过Netty框架)服务器端实现TCP通讯,并涉及数据序列化工具Protocol Buffers(protobuf)在两者之间的交互。 首先,TCP(传输控制协议)是一种面向连接的、可靠的、基于字节...

    Android Tcp通讯

    例如,使用Parcelable接口可以使对象能在Android系统中高效地序列化和反序列化,方便通过Intent或Binder传递,或者在TCP通信中转换成字节流。另一种常见的序列化方式是使用JSON或XML格式,将对象转化为字符串再在...

    基于JAVA的网络通讯系统设计与实现(论文+系统).rar

    8. **数据序列化与反序列化**:在网络通信中,数据通常需要通过序列化转换为字节流进行传输,到达目的地后再反序列化恢复原貌。Java提供了Serializable接口和ObjectInputStream/ObjectOutputStream类来实现这一过程...

    Qcs.rar_即时通讯swing

    【数据序列化与反序列化】 在TCP通信中,通常需要将Java对象转换为字节流进行传输,这就涉及到了数据的序列化和反序列化。Java提供内置的序列化机制,通过实现Serializable接口,对象可以被转化为字节流在网络中...

    C#实现与单片机通讯

    首先,要实现C#与单片机通讯,我们需要一个中间层,这个中间层通常是通过串行通信(Serial Communication)来建立的。串口通讯是单片机与PC之间最常用的通信方式,支持RS-232、RS-485等标准。在C#中,我们可以使用`...

    Flex与java通讯

    这些对象在两端都存在,用于序列化和反序列化数据,确保数据的一致性。 8. **Error Handling and Debugging** 通信过程中可能出现错误,如网络中断、数据格式错误等。因此,错误处理机制至关重要。Flex提供了事件...

    android socket 即时通讯开发

    3. **数据序列化与反序列化**:为了在网络中传输对象,需要将对象序列化为字节流,接收端再反序列化恢复对象。 4. **错误处理**:捕获并处理Socket相关的异常,如IOException,确保程序的健壮性。 四、ImDemo项目...

    abb机器人与海康威视tcp-ip通讯.rar

    2. **Socket通讯**:Socket是应用层与传输层的接口,允许应用程序通过TCP/IP协议发送和接收数据。在本案例中,Socket编程用于建立ABB机器人和海康威视相机间的通信通道,实现两者之间的数据交换。 3. **ABB多任务...

    基于websocket的网页即时通讯(可传附件图片涂鸦、最小化弹窗).NET C# 20180614

    8. 客户端与服务器之间的数据序列化和反序列化 这些内容对于理解WebSocket即时通讯系统的工作原理,以及如何在.NET环境中实现此类系统具有很高的价值。通过研究这个项目,开发者可以进一步提升自己的技能,并为构建...

    realthinclient-三层数据库详解(demo版)

    通过阅读和分析这些源代码,开发者可以了解RTC的实现细节,例如如何使用特定的网络协议(如HTTP、SOAP或RESTful API)、如何处理数据的序列化和反序列化,以及如何在客户端进行错误处理和状态管理。 在实际应用中,...

    Android端TCP通讯实现

    它可以用来序列化和反序列化对象,或者对原始字节数据进行解析。 心跳包是TCP通讯中保持连接活跃的重要机制。心跳包定期发送,用于检测连接是否还有效。在tcplib库中,心跳包的默认设置可以帮助我们自动检测并处理...

    PDA通讯C#实现网络通讯

    - **序列化和反序列化**: JSON.NET(Newtonsoft.Json)库是一个常用的C#库,用于将对象序列化为JSON字符串或从JSON字符串反序列化为对象。 ##### 5. 总结 本文档详细介绍了如何使用C#实现PDA与网络之间的通信。...

    基于JAVA的网络通讯系统设计与实现(论文+系统

    6. **网络数据序列化与反序列化**:在网络通讯中,数据通常需要被序列化为字节流进行传输,然后再在接收端反序列化恢复原对象。Java的Serializable接口和ObjectInputStream/ObjectOutputStream类提供了这一功能。 7...

    比较完整的TCP/IP通讯实例

    7. **Communications文件夹**:这个文件夹可能包含了Server端的源代码或者整个通信系统的公共模块,比如网络通信库、数据解析和序列化相关的代码。 通过深入研究这个实例,开发者可以了解到如何在实际应用中使用TCP...

    Java做的IM聊天软件中间桥接层

    2. **消息序列化与反序列化**:在Java中,可以使用JSON或protobuf等格式将对象转换为可传输的字节流,以便在网络间进行数据交换。反序列化则将接收到的字节流还原为对象。 3. **安全通信**:为了保证信息安全,中间...

    silverlight与wcf互相通讯

    总结来说,Silverlight与WCF的互相通讯是一个复杂但至关重要的过程,它涉及到服务的创建、引用、调用以及数据的序列化和反序列化。分层结构的采用有助于将UI、业务逻辑和数据访问分离,提高代码的可维护性和重用性。...

Global site tag (gtag.js) - Google Analytics