在微服务中,使用什么协议来构建服务体系,一直是个热门话题。 争论的焦点集中在两个候选技术: (binary) RPC or Restful。 以Apache Thrift为代表的二进制RPC,支持多种语言(但不是所有语言),四层通讯协议,性能高,节省带宽。相对Restful协议,使用Thrifpt RPC,在同等硬件条件下,带宽使用率仅为前者的20%,性能却提升一个数量级。但是这种协议最大的问题在于,无法穿透防火墙。 以Spring Cloud为代表所支持的Restful 协议,优势在于能够穿透防火墙,使用方便,语言无关,基本上可以使用各种开发语言实现的系统,都可以接受Restful 的请求。 但性能和带宽占用上有劣势。 所以,业内对微服务的实现,基本是确定一个组织边界,在该边界内,使用RPC; 边界外,使用Restful。这个边界,可以是业务、部门,甚至是全公司。 使用RPC远程服务调用方式与传统http接口直接调用方式的差别在于: 1. 从使用方面看,Http接口只关注服务提供方,对于客户端怎么调用,调用方式怎样并不关心,通常情况下,我们使用Http方式进行调用时,只要将内容进行传输即可,这样客户端在使用时,需要更关注网络方面的传输,比较不适用与业务方面的开发;而RPC服务则需要客户端接口与服务端保持一致,服务端提供一个方法,客户端通过接口直接发起调用,业务开发人员仅需要关注业务方法的调用即可,不再关注网络传输的细节,在开发上更为高效。 2. 从性能角度看,使用Http时,Http本身提供了丰富的状态功能与扩展功能,但也正由于Http提供的功能过多,导致在网络传输时,需要携带的信息更多,从性能角度上讲,较为低效。而RPC服务网络传输上仅传输与业务内容相关的数据,传输数据更小,性能更高。 3. 从运维角度看,使用Http接口时,常常使用一个前端代理,来进行Http转发代理请求的操作,需要进行扩容时,则需要去修改代理服务器的配置,较为繁琐,也容易出错。而使用RPC方式的微服务,则只要增加一个服务节点即可,注册中心可自动感知到节点的变化,通知调用客户端进行负载的动态控制,更为智能,省去运维的操作。
点赞 评论

相关推荐

09-27 14:12
已编辑
麻城理工学校 Java
Java开发,之前进行了线上一面,9.13线下二面双2,信息专业,无实习,两个玩具项目先自我介绍,面试官看简历,应该是对这种玩具不感兴趣,开始拷打八股1.Java为什么是一次编译,到处运行2.字节码文件里面有什么(没答全)3.HashMap在1.7和1.8版本的区别4.接上一题,1.8为什么要设计成长度为8转换成红黑树,长度为6又变回链表5.IO模型,用过Netty吗(没用过)6.知道的设计模式有哪些,对应干什么的(答得一般)7.接上一题,讲讲代理模式,JDK代理和CGLIB代理过程讲了一遍,后来又问JDK动态代理生成的类里面的结构是什么样的(不懂)8.JVM内存结构9.垃圾回收三色标记法(没背过)10.有没有JVM调优经验(没有实践,扯了点别的设置堆栈空间大小)11.双亲委派机制12.事务的特性13.原子性如何保证,持久性如何保证14.数据库索引的作用15.最左匹配原则,为什么不满足时会索引失效16.分库分表,知道分库分表的组件吗17.redis内存淘汰策略18.LRU、LFU应用场景(LFU的脑子短路了想半天没想出来)19.集线器位于网络模型的哪一层(完蛋不知道集线器),路由器位于哪一层20.项目简单交流21.deepseek为什么火,回答了数据蒸馏,训练成本低。然后问还有别的吗,不知道了22.开放性问题,遇到的困难23.学生工作,遇到难沟通的人如何应对24.兴趣爱好25.反问可能还有些答上来的问题记不起来了,面试时长半个多小时,问答节奏很快。面试官人很好,有的题没回答完整,说忘记了,还鼓励说没事面试完在大厅等结果,心如死灰都想直接走了,因为答得确实不好等了一会后居然叫我去hr面,主要是对部门的理解、个人优势和职业规划等。hr讲话十分亲切,聊得挺好。又等了一会说回去等通知(没有当场挂掉)——————————分割线——————————9.26发意向!!我爱科大讯飞
查看26道真题和解析
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务