JAVA问答8

简介: JAVA问答8

6、默认使用什么序列化框架,你知道的还有哪些?

推荐使用 Hessian 序列化,还有 Duddo、FastJson、Java 自带序列化。

7、服务提供者能实现失效踢出是什么原理?

服务失效踢出基于 zookeeper 的临时节点原理。

8、服务上线怎么不影响旧版本?

采用多版本开发,不影响旧版本。

9、如何解决服务调用链过长的问题?

可以结合 zipkin 实现分布式服务追踪。

10、说说核心的配置有哪些?

配置

配置说明

dubbo:service

服务配置

dubbo:reference

引用配置

dubbo:protocol

协议配置

dubbo:applicatio

n

应用配置第 72 页 共 485 页

dubbo:module

模块配置

dubbo:registry

注册中心配置

dubbo:monitor

监控中心配置

dubbo:provider

提供方配置

dubbo:consumer

消费方配置

dubbo:method

方法配置

dubbo:argument

参数配置

11、Dubbo 推荐用什么协议?

dubbo://(推荐)

rmi://

hessian://

http://

webservice://

thrift://

memcached://

redis://

rest://

12、同一个服务多个注册的情况下可以直连某一个服务吗?

可以点对点直连,修改配置即可,也可以通过 telnet 直接某个服务。第 73 页 共 485 页

13、画一画服务注册与发现的流程图?

14、Dubbo 集群容错有几种方案?

集群容错方案

说明

Failover Cluster

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

Failfast Cluster

快速失败,立即报错,只发起一次调用

Failsafe Cluster

失败安全,出现异常时,直接忽略

Failback Cluster

失败自动恢复,记录失败请求,定时重发

Forking Cluster

并行调用多个服务器,只要一个成功即返回Broadcast Cluster 广播逐个调用所有提供者,任意一个报错则报错

15、Dubbo 服务降级,失败重试怎么做?

可以通过 dubbo:reference 中设置 mock="return null"。mock 的值也可以修

改为 true,然后再跟接口同一个路径下实现一个 Mock 类,命名规则是 “接口

名称+Mock” 后缀。然后在 Mock 类里实现自己的降级逻辑

16、Dubbo 使用过程中都遇到了些什么问题?

在注册中心找不到对应的服务,检查 service 实现类是否添加了@service 注解

无法连接到注册中心,检查配置文件中的对应的测试 ip 是否正确

17、Dubbo Monitor 实现原理?

Consumer 端在发起调用之前会先走 filter 链;provider 端在接收到请求时也是

先走 filter 链,然后才进行真正的业务逻辑处理。

默认情况下,在 consumer 和 provider 的 filter 链中都会有 Monitorfilter。

1、MonitorFilter 向 DubboMonitor 发送数据

2、DubboMonitor 将数据进行聚合后(默认聚合 1min 中的统计数据)暂存到

ConcurrentMap<Statistics, AtomicReference> statisticsMap,然后使用一个

含有 3 个线程(线程名字:DubboMonitorSendTimer)的线程池每隔 1min 钟,

调用 SimpleMonitorService 遍历发送 statisticsMap 中的统计数据,每发送完毕

一个,就重置当前的 Statistics 的 AtomicReference

3、SimpleMonitorService 将这些聚合数据塞入 BlockingQueue queue 中(队

列大写为 100000)

第 74 页 共 485 页4、SimpleMonitorService 使用一个后台线程(线程名为:

DubboMonitorAsyncWriteLogThread)将 queue 中的数据写入文件(该线程以

死循环的形式来写)

5、SimpleMonitorService 还会使用一个含有 1 个线程(线程名字:

DubboMonitorTimer)的线程池每隔 5min 钟,将文件中的统计数据画成图表

目录
相关文章
|
5月前
|
存储 安全 Java
Java 集合(List、Set、Map 等)相关问答归纳再整理
HashMap 中使用键对象来计算 hashcode 值 HashSet 使用成员对象来计算 hashcode 值,对于两个对象来说hashcode 可能相同,所以 equals() 方法用来判断对象的相等性,如果两个对象不同的话,那么返回 false。 HashMap 比较快,因为是使用唯一的键来获取对象,HashSet 较 HashMap 来说比较慢。 4.1.3 HashMap 与 TreeMap
29 2
|
移动开发 小程序 Java
良心分享:基于Java+SpringBoot+Netty+WebSocket+Uniapp轻松搭建在线互动问答程序
本文将详细介绍如何基于你自己的开源项目搭建一个在线互动问答程序,包括微信小程序和H5网页版。 该项目服务端主要使用了Java + Spring Boot + Netty + WebSocket等技术栈,聊天客户端使用的是UniApp来轻松搭建微信小程序和H5网页端。
71 1
|
存储 SQL 缓存
JAVA问答17
JAVA问答17
81 0
|
存储 SQL 缓存
JAVA问答16
JAVA问答16
119 0
|
存储 搜索推荐 Java
JAVA问答15
JAVA问答15
97 0
|
缓存 自然语言处理 监控
JAVA问答14
JAVA问答14
94 0
|
存储 固态存储 Java
JAVA问答13
JAVA问答13
123 0
|
存储 缓存 运维
JAVA问答12
JAVA问答12
126 0
|
存储 自然语言处理 运维
JAVA问答11
JAVA问答11
101 0
|
存储 Dubbo 固态存储
JAVA问答10
JAVA问答10
112 0