献县建设局网站,ui设计在哪个网站可以接做,弄个盈利网站做什么,熊掌号WordPress推送即时通讯网官方技术群和社区里#xff0c;经常有开发者在纠结怎么开发IM集群#xff0c;虽然真正的使用人数#xff0c;可能用个人电脑单机都能支撑。你也许会说#xff0c;明明不需要用到IM集群#xff0c;干吗要自找麻烦#xff1f;答曰#xff1a;“老板说这个得有经常有开发者在纠结怎么开发IM集群虽然真正的使用人数可能用个人电脑单机都能支撑。你也许会说明明不需要用到IM集群干吗要自找麻烦答曰“老板说这个得有”、“万一产品做成了用户量达到百万、千万级呢”各种回答反此种种。总之IM集群就是得整一个先甭管用不用的上...。当然玩笑归玩笑真正要做到可投入到生产级别的IM集群系统难度还是相当大的。必竟IM这种长连接应用相比传统Http这种短连接应用太不标准。我们以一个典型的IM聊天消息传输为例假设存在两个正在聊天的用户用户A和用户B当A连接的是IM集群中的IM实例1、B连接的是IM集群中的IM实例2此时当用户A向用户B发送一条聊天消息时这条消息应该如何传递呢我们梳理一下上面这个例子的消息流转过程 1IM聊天消息首先会由用户A发往IM实例12IM实例1会将此条消息转交给IM实例23IM实例2会将此条消息最终投递给连接在本实例上的用户B。如上述流程所示这就是一个IM集群系统中典型的聊天消息投递过程。那么这其中涉及到一个关键步骤即第2步中如何实现“IM实例1会将此条消息转交给IM实例2”此时RPC技术出场了RPC 是1984年代由 Andrew D. Birrell Bruce Jay Nelson 提出的见二位大佬的论文《Implementing Remote Procedure Calls》所以它并不是最近才有的技术概念。关于RPC的介绍正经的资料上大概是这样介绍的RPCRemote Procedure Call远程过程调用它是一种通过网络从远程计算机程序上请求服务而不需要了解底层网络技术的协议。也就是说两台服务器AB一个应用部署在A服务器上想要调用B服务器上应用提供的方法由于不在一个内存空间不能直接调用需要通过网络来表达调用的语义和传达调用的数据。即时通讯聊天软件app开发可以加小蓝豆的vweikeyun24咨询大白话理解RPC就是RPC让你用别人家的东西就像自己家的一样。看得我似懂非懂于是我不得不问几个问题 1为啥要用别人家的东西——请求其他服务)2我怎么可以借到别人家的东西——其他服务调用3要是借用的话哪种形式更好——确定一个合适的调用方法4怎么让我用别人东西像自己的一样——屏蔽底层细节透明通信。在解答这些问题之前我们必须达到一个共识问题RPC只是一种通信模式和http并不冲突对立相反http可以作为RPC传输数据的一种协议把RPC当作一种模式和思想我们才能更好地理解它。以大家最熟悉的电商系统为例这样规模的分布式系统需要拆分出用户服务、商品服务、优惠券服务、支付服务、订单服务、物流服务、售后服务等等。这些服务之间都相互调用这时内部调用最好使用 RPC 同时每个服务都可以独立部署独立上线。也就说当我们的项目太大需要解耦服务扩展性强、部署灵活这时就要用到 RPC 这主要是解决了分布式系统中服务与服务之间的调用问题。在日常业务中我们可以把功能封装成静态库、动态库、sdk、独立服务等最常见也最方便的还是HTTP这种形式的调用。HTTP服务把需要提供的服务暴露成接口也就是通常所说的http rest接口啦使用方直接按约定的HTTP方法和URI进行数据交互。我们都知道HTTP协议是应用层协议是个非常标准的协议在HTTP协议之下还有网络层、传输层、数据链路层等一个数据包packet除了净荷payload之外还有很多header由于标准和通用性的设计目标也使得HTTP一次数据交互真正传输的payload只是其中一部分。HTTP是我们用的最多最熟悉的交互模式在系统内部各个服务之间接口较少交互不多的情况下工作得还不错。但如果在内部系统调用很复杂的前提下HTTP调用的效率和安全性就不那么理想了。以IM系统为例单个IM实例的吞吐效率至少可以达到几万甚至数十万QPS使用HTTP这种短连接调用时建立socket连接完成后释放连接方式显的相当低效每次调用都要重新经历TCP的3次握手、4次挥手过程在分布式的情况下势必拉低整个IM集群的吞吐效率。而对于RPC这种socket长连接方式对于高性能场景来说效果是显而易见的。更重要的是面对众多的服务我们需要的不仅仅是一个通信方式而是一个内部服务的管理系统这也就是我们今天说的RPC框架。注意RPC是一种模式策略和框架并不是单纯的通信协议。题外话实际上HTTP在RPC系统中并不是个你死我活的关系必竟HTTP只是个通信协议而HTTP有某些性能要求不敏感的场景来说是完全可以作为RPC的具体实现协议之一来使用的。