zoukankan      html  css  js  c++  java
  • 分布式系统的面试题4

    1、面试题

    dubbo支持哪些通信协议?支持哪些序列化协议?

    2、面试官心里分析

    上一个问题,说说dubbo的基本工作原理,那是你必须知道的,至少知道dubbo分成哪些层,然后平时怎么发起rpc请求的,注册、发现、调用,这些是基本的。

    接着就可以针对底层进行深入的问问了,比如第一步就可以先问问序列化协议这块,就是平时rpc的时候怎么走的?

    3、面试题剖析

    1dubbo支持不同的通信协议

    1dubbo协议

    dubbo://192.168.0.1:20188

    默认就是走dubbo协议的,单一长连接,NIO异步通信,基于hessian作为序列化协议

    适用的场景就是:传输数据量很小(每次请求在100kb以内),但是并发量很高

    为了要支持高并发场景,一般是服务提供者就几台机器,但是服务消费者有上百台,可能每天调用量达到上亿次!此时用长连接是最合适的,就是跟每个服务消费者维持一个长连接就可以,可能总共就100个连接。然后后面直接基于长连接NIO异步通信,可以支撑高并发请求。

    否则如果上亿次请求每次都是短连接的话,服务提供者会扛不住。

    而且因为走的是单一长连接,所以传输数据量太大的话,会导致并发能力降低。所以一般建议是传输数据量很小,支撑高并发访问。

    2rmi协议

    java二进制序列化,多个短连接,适合消费者和提供者数量差不多,适用于文件的传输,一般较少用

    3hessian协议

    hessian序列化协议,多个短连接,适用于提供者数量比消费者数量还多,适用于文件的传输,一般较少用

    4http协议

    json序列化

    5webservice

    SOAP文本序列化

    2dubbo支持的序列化协议

    所以dubbo实际基于不同的通信协议,支持hessianjava二进制序列化、jsonSOAP文本序列化多种序列化协议。但是hessian是其默认的序列化协议。

     dubbo的网络通信协议:

     

  • 相关阅读:
    windows环境python2.7安装MySQLdb
    查找文件中除了注释以外的中文
    python2的reload模块
    虚拟机网络连接NAT模式,本地用Xshell连接
    PHP中逻辑运算符的高效用法---&&和||
    mysql 的 alter table 操作性能小提示
    MySQL优化指南
    UTF-8的BOM含义
    MySQL中 指定字段排序函数field()的用法
    MySQL PROFILE 跟踪语句各阶段性能开销
  • 原文地址:https://www.cnblogs.com/daiwei1981/p/9412985.html
Copyright © 2011-2022 走看看