1. 什么是分布式?什么是集群?主要区别

分布式是将一个服务分个部分,然后通过远程调用方式进行。远程调用框架RPC框架,spring cloud,dubbo。集群是将同一个服务的多个副本部署在不同的集群上,通过负载均衡的方式提供复试。场景:厨师。

  1. 服务治理包括哪些内容?

服务治理需要服务治理框架,dubbo。即对服务进行管理,例如服务的接口名称,权重等信息。

  1. 注册中心的作用?你怎么理解注册中心的?

如果没有注册中心,需要在本地维护一个provider的地址列表。注册中心角色,它是集中式数据管理,消费者通过注册中心来访问数据。通过注册中心,使得provider和consumer之间是透明。

  1. 什么是RPC?

远程调用框架。

  1. 什么是幂等性?

是系统开发中非常重要的原则,一个动作多次执行的结果跟一次执行的结果是一致的。

  1. 以支付为例,说明非幂等引发的影响?如何解决?

为什么会返回支付失败的提示?网络原因或者其他原因。

1)在支付之前先检查订单有没有支付

2)如果已经支付就返回支付状态

3)如果没有支付就进行支付

  1. 在基于dubbo的分布式环境中,一般将超时timeout设置在provider还是consumer?

应该设置在provider端。为什么?因为provider端更熟知自己方法执行需要的时间。

  1. 你是如何理解接口调用超时的?默认情况下,超时后将如何处理?

发出请求执行timeout规定的时间内没有返回值(consumer没有拿到返回值),但是该方法不一定死了。默认情况下,如果超时的话,将发起重试,默认发起2次重试(总共执行3次),可能会引起重复执行,很多情况,写操作的重复执行是我们不想看到的。

  1. dubbo中负载均衡的策略有哪些?

Provider: 集群,集群只需要重启几个实例即可。

Zookeeper:集群

Consumer:集群

负载:Loadbalence轮询,随机

10. dubbo中容错策略有哪些?

cluster属性。

Failover:失败转移,不会重试,而是将请求转给其他的provider

Failfaste:快速失败,不会重试,而是直接返回失败异常

11. 负载均衡的结果只跟策略有关,对吗?

不对,还跟权重有关。

权重默认100.

12. 为什么不推荐使用kill -9 来关闭provider服务?

因为kill -9不能优雅关机。不仅 provder不能-9其他的所有服务都不要-9.例如kill -9 redis会导致无法生成rdb持久化文件。

13. 解释一下优雅关机?优雅关机的超时时间跟timeout有关系吗?

1)provider来说

2)consumer来说

没有关系,dubbo.service.shutdown.wait=15000

14. 谈一下接口的异步调用?如何设置?运行效果?

通过asyanc属性设置异步.

如果设置异步,则不需要等待该方法返回值,程序即可往下进行。

Object o = Methoda();

Sysout(o);

Methodb();

1) 打印结果为null.

2) Timeout不会超时。

15. 如果一个方法执行完毕需要2秒,在timeout中设置的超时时间为1秒,请问如果是异步调用该方法,会不会重试?

结合14题,得出不再重试,因为不会超时。

16. 描述一下令牌的发出、获取和验证过程?

provider发出令牌。

consumer获取令牌,consumer必须连接zk才能获取令牌,换句话说,直连的话就无法获取令牌。

17. 谈谈基于dubbo的系统中consumer集群的解决方案?

nginx反代多个tomcat即可。

18. 谈谈dubbo的多协议、多注册中心、多版本支持?

多协议:同一个服务,可以通过不同的协议去发布,例如dubbo ,http,rmi....

多注册中心:同一个服务,可以注册到不同的注册中心上。

registry="zk2181,zk2182,zk2183"

19. 谈谈zookeeper集群和redis集群在架构设计上的不同?

Zk集群中,每一个节点实例上的数据,都是同步的,即都是一致的。如果master宕机,根据选举机制,选择一个新的master,这个新的master数据跟之前的数据都是一杨的。

redis集群是基于槽的,总共16384个槽,这些槽只分给了master,各个master节点之间的数据不进行同步,即redis集群的数据是分布式存储。

redis最少需要3个节点,但是他们之间还有一个不一样的地方:

Redis集群不管有几个几点,只有该master节点没有slave,那就集群就不可用了,因为它的槽不连续了。

20. 如何将dubbo和springboot集成?

1)导入依赖

2)配置全局文件

3)用阿里的service注解暴露服务。

4)controller中使用reference注解去引用该服务。

5)在入口类启动dubbo服务注解

eg:

package com.pinyougou.manager.controller;

@Reference

private BrandService brandService; //调用  Dubbo暴露的接口   @Reference是alibaba的

会有包扫描     <dubbo:annotation package="com.pinyougou.manager.controller" /> 
 <dubbo:annotation package="com.pinyougou.sellergoods.service.impl" />  

Dubbo+zookeeper面试题补充的更多相关文章

  1. Java 200+ 面试题补充③ Dubbo 模块

    昨天在我的 Java 面试粉丝群里,有一个只有一年开发经验的小伙伴只用了三天时间,就找到了一个年薪 20 万的工作,真是替他感到开心. 他的经历告诉我们:除了加强自我实战经验之外,还要努力积累自己的理 ...

  2. Java 200+ 面试题补充② Netty 模块

    让我们每天都能看到自己的进步.老王带你打造最全的 Java 面试清单,认真把一件事做到最好. 本文是前文<Java 最常见的 200+ 面试题>的第二个补充模块,第一模块为:<Jav ...

  3. 精选 Dubbo RPC 面试题,比较全面,含答案

    精选 Dubbo RPC 面试题,比较全面,含答案 hu1991die 搜云库技术团队 搜云库技术团队 微信号 souyunku 功能介绍 专注于分享最有价值的互联网技术干货文章,内容覆盖,Java后 ...

  4. Dubbo+Zookeeper集群案例

    一.开源分布式服务框架 1.Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以Spring框架无缝集成.    Dubbo是一款高性 ...

  5. 2020年最新ZooKeeper面试题(附答案)

    2020年最新ZooKeeper面试题 1. ZooKeeper 是什么? ZooKeeper 是一个开源的分布式协调服务.它是一个为分布式应用提供一致性服务的软件,分布式应用程序可以基于 Zooke ...

  6. 搭载Dubbo+Zookeeper踩了这么多坑,我终于决定写下这篇!

    大家好,我是melo,一名大二上软件工程在读生,经历了一年的摸滚,现在已经在工作室里边准备开发后台项目啦. 这篇文章我们不谈数据结构了,来谈谈入门分布式踩过的坑.感觉到了分布式这一层,由于技术更新迭代 ...

  7. 从头开始搭建一个dubbo+zookeeper平台

    本篇主要是来分享从头开始搭建一个dubbo+zookeeper平台的过程,其中会简要介绍下dubbo服务的作用. 首先,看下一般网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越多之后 ...

  8. 通过单元测试理解spring容器以及dubbo+zookeeper单元测试异常处理

    一.先说一个结论:单元测试与主项目的spring容器是隔离的,也就是说,单元测试无法访问主项目spring容器,需要自己加载spring容器. 接下来是代码实例,WEB主项目出于运行状态,单元测试中可 ...

  9. 用dubbo+zookeeper+spring搭建一个简单的http接口程序

    dubbo是一个分布式服务框架,是阿里巴巴开发的一个解决RPC远程调用优化的核心框架,包含负载均衡算法,能提高分布式系统的性能. zookeeper是hadoop的一个子项目,主要用来解决分布式系统的 ...

随机推荐

  1. Spring Cloud 请求重试机制核心代码分析

    场景 发布微服务的操作一般都是打完新代码的包,kill掉在跑的应用,替换新的包,启动. spring cloud 中使用eureka为注册中心,它是允许服务列表数据的延迟性的,就是说即使应用已经不在服 ...

  2. XXS level6

    (1输入框输入与第五关 相同的payload 查看页面源代码,发现“href"变成了”hr_ef“ (2)查看PHP源代码 <?php ini_set("display_er ...

  3. : LDAP & Implementation

    LDAP LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.它是基于X.500标准的,但是简单多了并且可以根据需要 ...

  4. 访问google提示"您的连接不是私密连接"

    直接访问google 提示这个,连subject 也变成连baidu 您的连接不是私密连接 攻击者可能会试图从 www.google.com 窃取您的信息(例如:密码.通讯内容或信用卡信息).了解详情 ...

  5. C++ Primer Plus (Stephen Prata 著)

    第1章 预备知识 (已看) 第2章 开始学习C++ (已看) 第3章 处理数据 (已看) 第4章 复合类型 (已看) 第5章 循环和关系表达式 (已看) 第6章 分支语句和逻辑运算符 (已看) 第7章 ...

  6. MySQL 列,可选择的数据类型(通过sql命令查看:`help create table;`)

    MySQL 列,可选择的数据类型(通过sql命令查看:help create table;) BIT[(length)] | TINYINT[(length)] [UNSIGNED] [ZEROFIL ...

  7. CentOS6.8 配置LVM

    LVM是逻辑盘卷管理(Logical Volume Manager)的简称,Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性. LVM ...

  8. Hanlp汉字转拼音使用python调用详解

    1.hanlp简介 HanLP是一系列模型与算法组成的NLP工具包,由大快搜索主导并完全开源,目标是普及自然语言处理在生产环境中的应用.HanLP具备功能完善.性能高效.架构清晰.语料时新.可自定义的 ...

  9. 廖雪峰Java7处理日期和时间-1概念-1日期和时间

    1.日期 日期是指某一天,如2016-11-20,2018-1-1 2.时间有2种: 不带日期的时间:14:23:54 带日期的时间:2017-1-1 20:21:23,唯一确定某个时刻 3.时区 时 ...

  10. json 中关于json数组跟json对象的区别

    原文地址:http://blog.csdn.net/lafengwnagzi/article/details/52789171 JSON 是存储和交换文本信息的语法 JSON 文本格式在语法上与创建 ...