java把收集的数据节点_java面试题收集(04)

1、rebbitmq的使用场景有哪些?

(1)单发送单接受

使用场景:简单的发送与接受,没有特别的处理。

(2)单发送多接受

使用场景:一个发送端,多个接收端,如分布式的任务发布,要保证消息发送的可靠性,不丢失消息,所以将消息队列持久化,同时为了防止接收端处理消息时宕机,所以在处理完成后再发送ack满息。

(3)Publish/Subscribe

使用场景:发布、订阅模式,发送端发送广播消息,多个接收端接受。

(4)Routing(按路线发送接收)

使用场景:发送端按routing key发送满息,不同的接收端按不同的routing key接收消息。

(5)Topics(按Topic发送接收)

使用场景:发送端不只按routing key发送消息,而是按字符串“匹配”发送,接收端同样如此。

2、Dubbo的容错机制有哪些?

(1)Failover Cluster模式

失败自动切换,当出现失败,重试其它服务器。(默认)

(2)Failfast Cluster

快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录。

(3)Failsafe Cluster

失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。

(4)Failback Cluster

失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。

(5)Forking Cluster

并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过forks=”2”来设置最大并行数。

(6)Broadcast Cluster

广播调用所有提供者,逐个调用,任意一台报错则报错。(2.1.0开始支持)通常用于通知所有提供者更新缓存或日志等本地资源信息。

总结:

在实际应用中查询语句容错策略建议使用默认Failover Cluster,而增删改建议使用Failfast Cluster或者使用Failover Cluster(retries=”0”)策略防止出现数据重复添加等等其它问题!建议在设计接口时候把查询接口方法单独做一个接口提供查询。

3、Dubbo和Spring Cloud 有什么区别?

(1)通信方式不同

Dubbo使用的是RPC通信,而Spring Cloud使用的是HTTPRESTFul方式。

(2)组成部分不同

fe56693d19bdf7f5148c585594c54613.png

4、Dubbo 里面有哪几种节点角色?

(1)Provider

暴露服务的服务提供方。

(2)Consumer

调用远程服务的服务消费方。

(3)Registry

服务注册与发现的注册中心。

(4)Monitor

统计服务的调用次数和调用时间的监控中心。

(5)Container

服务运行容器。

5、Dubbo服务注册与发现的流程图

f76666485f73af6f43eb4aa5b24f0569.png

6、Dubbo 有几种负载均衡策略,默认是哪种?

(1)Random LoadBalance

随机,按权重设置随机概率(默认)。

(2)RoundRobin LoadBalance

轮询,按公约后的权重设置轮询比率。

(3)LeastActive LoadBalance

最少活跃调用数,相同活跃数的随机。

(4)ConsistentHash LoadBalance

一致性Hash,相同参数的请求总是发到同一提供者。

7、ZooKeeper 是什么?

ZooKeeper是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

分布式应用程序可以基于Zookeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。

Zookeeper保证了如下分布式一致性特性:

(1)顺序一致性

(2)原子性

(3)单一视图

(4)可靠性

(5)实时性(最终一致性)

客户端的读请求可以被集群中的任意一台机器处理,如果读请求在节点上注册了监听器,这个监听器也是由所连接的zookeeper机器来处理。对于写请求,这些请求会同时发给其他zookeeper机器并且达成一致后,请求才会返回成功。因此,随着zookeeper的集群机器增多,读请求的吞吐会提高但是写请求的吞吐会下降。

有序性是zookeeper中非常重要的一个特性,所有的更新都是全局有序的,每个更新都有一个唯一的时间戳,这个时间戳称为zxid(Zookeeper TransactionId)。而读请求只会相对于更新有序,也就是读请求的返回结果中会带有这个zookeeper最新的zxid。

8、Zookeeper Watcher 机制-数据变更通知

Zookeeper 允许客户端向服务端的某个Znode注册一个Watcher监听,当服务端的一些指定事件触发了这个Watcher,服务端会向指定客户端发送一个事件通知来实现分布式的通知功能,然后客户端根据Watcher通知状态和事件类型做出业务上的改变。

工作机制:

(1)客户端注册 watcher

(2)服务端处理watcher

(3)客户端回调 watcher

Watcher特性总结:

(1)一次性

无论是服务端还是客户端,一旦一个Watcher被触发,Zookeeper都会将其从相应的存储中移除。这样的设计有效的减轻了服务端的压力,不然对于更新非常频繁的节点,服务端会不断的向客户端发送事件通知,无论对于网络还是服务端的压力都非常大。

(2)客户端串行执行

客户端Watcher回调的过程是一个串行同步的过程。

(3)轻量

Watcher通知非常简单,只会告诉客户端发生了事件,而不会说明事件的具体内容。

客户端向服务端注册 Watcher的时候,并不会把客户端真实的Watcher对象实体传递到服务端,仅仅是在客户端请求中使用boolean类型属性进行了标记。

watcher event 异步发送watcher的通知事件从server发送到client是异步的,这就存在一个问题,不同的客户端和服务器之间通过socket进行通信,由于网络延迟或其他因素导致客户端在不通的时刻监听到事件,由于Zookeeper本身提供了ordering guarantee,即客户端监听事件后,才会感知它所监视znode发生了变化。所以我们使用Zookeeper不能期望能够监控到节点每次的变化。

Zookeeper只能保证最终的一致性,而无法保证强一致性。

注册 watcher getData、exists、getChildren

触发watcher create、delete、setData

当一个客户端连接到一个新的服务器上时,watch将会被以任意会话事件触发。当与一个服务器失去连接的时候,是无法接收到watch的。而当client重新连接时,如果需要的话,所有先前注册过的watch,都会被重新注册。通常这是完全透明的。只有在一个特殊情况下,watch可能会丢失:对于一个未创建的znode的exist watch,如果在客户端断开连接期间被创建了,并且随后在客户端连接上之前又删除了,这种情况下,这个watch事件可能会被丢失。

9、Zookeeper四种类型的数据节点Znode

(1)PERSISTENT-持久节点

除非手动删除,否则节点一直存在于Zookeeper上。

(2)EPHEMERAL-临时节点

临时节点的生命周期与客户端会话绑定,一旦客户端会话失效(客户端与zookeeper连接断开不一定会话失效),那么这个客户端创建的所有临时节点都会被移除。

(3)PERSISTENT_SEOUENTIAL-持久顺序节点

基本特性同持久节点,只是增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。

(4)EPHEMERAL_SEQUENTIAL-临时顺序节点

基本特性同临时节点,增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。

10、Zookeeper选举算法及流程

假设有5台服务器,每台服务器均没有数据,它们的编号分别是1,2,3,4,5,按编号依次启动,它们的选择举过程如下:

(1)服务器1启动,给自己投票,然后发投票信息,由于其它机器还没有启动所以它收不到反馈信息,服务器1的状态一直属于Looking(选举状态)。

(2)服务器2启动,给自己投票,同时与之前启动的服务器1交换结果,由于服务器2的编号大所以服务器2胜出,但此时投票数没有大于半数,所以两个服务器的状态依然是LOOKING。

(3)服务器3启动,给自己投票,同时与之前启动的服务器1,2交换信息,由于服务器3的编号最大所以服务器3胜出,此时投票数正好大于半数,所以服务器3成为领导者,服务器1.2成为小弟。

(4)服务器4启动,给自己投票,同时与之前启动的服务器1,2,3交换信息,尽管服务器4的编号大,但之前服务器3已经胜出,所以服务器4只能成为小弟。

(5)服务器5启动,后面的逻辑同服务器4成为小弟。

11、集群中的机器角色都有哪些?

(1)Leader

事务请求的唯一调度和处理者,保证集群事务处理的顺序性,集群内部各服务的调度者。

(2)Follower

处理客户端的非事务请求,转发事务请求给Leader服务器参与事务请求Proposal的投票。参与Leader选举投票。

(3)Observer

3.3.0版本以后引入的一个服务器角色,在不影响集群事务处理能力的基础上提升集群的非事务处理能力处理客户端的非事务请求,转发事务请求给Leader服务器,不参与任何形式的投票。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574650.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

go java gc_图解Golang的GC垃圾回收算法

虽然Golang的GC自打一开始,就被人所诟病,但是经过这么多年的发展,Golang的GC已经改善了非常多,变得非常优秀了。以下是Golang GC算法的里程碑:v1.1 STWv1.3 Mark STW, Sweep 并行v1.5 三色标记法v1.8 hybrid write bar…

统计学的经典书籍指南 (转载自:http://blog.csdn.net/ysuncn/article/details/1943679)...

一、统计学基础部分 1、《统计学》 David Freedman等著,魏宗舒,施锡铨等译 中国统计出版社 据说是统计思想讲得最好的一本书,读了部分章节,受益很多。整本书几乎没有公式,但是讲到了统计思想的精髓。 2、《Mind on …

Linux Bash Shell j简单入门

BASH 的基本语法 最简单的例子 —— Hello World! 关于输入、输出和错误输出 BASH 中对变量的规定(与 C 语言的异同) BASH 中的基本流程控制语法 函数的使用 2.1 最简单的例子 —— Hello World! 几乎所有的讲解编程的书给读者的第一个例子都是 …

jpa mysql脚本迁移_JPA通过LOAD DATA LOCAL INFILE大批量导入数据到MySQL

连接层代码:import org.hibernate.Session;import org.hibernate.internal.SessionFactoryImpl;import org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractor;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLE…

javascript的事件冒泡,阻止事件冒泡和事件委托, 事件委托是事件冒泡的一个应用。...

2018年12月13日更新 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>ul li{border: 1px solid yellow;}</style> </head> <body> <p hidden>…

php 序列化 java_PHP--序列化与反序列化详解

PHP--序列化与反序列化详解博客说明文章所涉及的资料来自互联网整理和个人总结&#xff0c;意在于个人学习和经验汇总&#xff0c;如有什么地方侵权&#xff0c;请联系本人删除&#xff0c;谢谢&#xff01;说明所有php里面的值都可以使用函数serialize()来返回一个包含字节流的…

hadoop2.x的变化

HDFS Federation&#xff08;HDFS联邦&#xff09; HDFS有两个主要层&#xff1a; Namespace 由目录、文件和块组成&#xff1b;支持所有命名空间对文件和目录的操作。 Block Storage Service 由Block Management和Storage组成。 Block Management 提供dataNode集群成员关系&am…

python enumeration_python枚举防止无效的属性分配

要使枚举类完全“只读”,只需要使用__setattr__hook防止全部的属性分配。因为元类附加到类之后它是创建的,分配正确的枚举值没有问题。就像伊桑的回答一样,我用的是EnumMeta类作为自定义元类的基础:from enum import EnumMeta, Enumclass FrozenEnumMeta(EnumMeta):"Enum …

java wps linux 安装_ubuntu安装Java开发环境

1. 从sun主页JDK for Linux版本。这里的是jdk-6u6--i586.bin.2. 用root用户登录ubuntu&#xff0c;或是在普通用户下用su命令切换用户。切换到所需的安装目录。类型&#xff1a;cd 例如&#xff0c;要在 /usr/java/ 目录中 安装软件&#xff0c;请键入&#xff1a;cd /usr…

[BZOJ 2594] [Wc2006]水管局长数据加强版 【LCT】

题目链接&#xff1a;BZOJ - 2594 题目分析 这道题如果没有删边的操作&#xff0c;那么就是 NOIP2013 货车运输&#xff0c;求两点之间的一条路径&#xff0c;使得边权最大的边的边权尽量小。 那么&#xff0c;这条路径就是最小生成树上这两点之间的路径。 然而现在有了删边操作…

vs升级c++项目遇到的一些问题

1、error C1189: #error : This file requires _WIN32_WINNT to be #defined at least to 0x0403. Value 0x0501 or higher is recommended. 在工程的stdafx.h中&#xff0c;改为如下配置&#xff1a; #ifndef WINVER #define WINVER 0x0501 #endif #ifndef _WIN32_WINNT #def…

python模糊匹配忽略大小写_在python中忽略大小写的简单方法?

如果搜索多个单词&#xff0c;则创建一个集合是有意义的&#xff1a;print(set(brown_sents).intersection(zip(repeat(most_ambiguous_word),word_class_dict[most_ambiguous_word])))输出{(word2, wordclass2), (word2, wordclass3)}要理解它的作用&#xff0c;请将脚本保存到…

IAR7.51提示秘钥无效IAR 以及 CCDebug驱动(包含win7 64bit)

今天IAR不识别我的仿真器&#xff0c;然后我感觉驱动有问题&#xff0c;就把之前的驱动卸载了&#xff0c;但是按照以前的方法按章驱动(选择路径到IAR的某个目录)&#xff0c;提示找不到驱动。。。 也不想重新装个IAR了&#xff0c;于是到CSDN上下载了这个驱动程序&#xff0c;…

cannot be resolved or is not a field

我通常的解决办法&#xff1a;1.看看是不是manifest.xml文件有错误&#xff0c;如果有的话&#xff0c;R.java是不会生成的2.一般来说R.layout.aaa.xml&#xff0c;这里的R是自己的包的R.java&#xff0c;不是android系统的R.java&#xff0c;所以如果引入包的时候有import and…

java解析时已到达文件结尾_IO流读取到文件末尾继续读取

import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;//正常情况//main()方法中第一个read()和和第二个read();是可以顺利执行完的…

百度地图动态显示查询结构

<script type"text/javascript">// 百度地图API功能function G(id) {return document.getElementById(id);}var map new BMap.Map("l-map");map.centerAndZoom("北京",12); // 初始化地图,设置城市和地图级别。var ac …

solr5.0mysql_ik扩展支持Solr配置详解

扩展ik原生代码&#xff1a;public class IKAnalyzerTokenizerFactory extends TokenizerFactory{private boolean useSmart;public boolean useSmart(){return this.useSmart;}public void setUseSmart(boolean useSmart) {this.useSmart useSmart;}public IKAnalyzerTokeniz…

apache htpasswd.exe创建密码

一、使用apache htpasswd.exe创建密码文件&#xff0c;命令请看PHP推荐教程&#xff1a;apache htpasswd命令用法详解 apache htpasswd命令用法实例 1、如何利用htpasswd命令添加用户&#xff1f; 在apache安装目录bin下找到htpasswd #usr/local/apache/bin/htpasswd -bc .pass…

考研复试考java_2019考研复试经验帖:过来人谈5件“小事”

关于复试&#xff0c;决定这你的命运&#xff0c;考生一定要好好把握。关于复试&#xff0c;你做好前期功课&#xff0c;足够了解了吗?下面新东方在线分享一位过来人的经验之谈&#xff0c;给大家最走心的忠告~~▶先来说说复试规则。在复试之前学校会公布学校的复试分数线&…

Hadoop2源码分析-RPC机制初识

1.概述 上一篇博客&#xff0c;讲述Hadoop V2的序列化机制&#xff0c;这为我们学习Hadoop V2的RPC机制奠定了基础。RPC的内容涵盖的信息有点多&#xff0c;包含Hadoop的序列化机制&#xff0c;RPC&#xff0c;代理&#xff0c;NIO等。若对Hadoop序列化不了解的同学&#xff0c…