其他分享
首页 > 其他分享> > 分布式RPC框架Dubbo实现服务治理:集成Kryo实现高速序列化,集成Hystrix实现熔断器

分布式RPC框架Dubbo实现服务治理:集成Kryo实现高速序列化,集成Hystrix实现熔断器

作者:互联网

Dubbo+Kryo实现高速序列化

序列化:
1.序列化(serialization)在计算机科学的资料处理中,是指将数据结构或物件状态转换成可取用格式(例如存成档案,存于缓冲,或经由网络中传送),
以留待后续在相同或另一台计算机环境中,能恢复原先状态的过程。依照序列化格式重新获取字节的结果时,
可以利用它来产生与原始物件相同语义的副本。
2.简单的来讲就是将某种数据结构或者对象转换成一种数据格式,数据格式可以通过网络传送或者存入数据库中,
同时可以根据数据格式还原出原来的数据结构(反序列化)。在 Java 中,对象只有在 JVM 运行时才会存在,如果想要把对象存储到本地或者发送到远程的服务器,
则必须通过序列化将对象转换成相应的字节然后进行存储或者传送,之后再将字节组装成对象。
3.在以下场景中都会遇到序列化:
		3.1将对象状态保存到文件或者数据库中
		3.2通过 socket 在网络中传送对象
		3.3通过RMI(远程方法调用)传输对象
1.为什么需要手动注册,不在配置文件中注册?
	因为要注册的类往往数量较多,导致配置文件冗长
	在没有好的IDE支持下,配置文件的编写和重构都比Java类复杂得多
	这些注册的类一般是不需要在项目编译打包后还需要动态修改的
2.为什么不用@annotation标注然后系统发现并注册?
	因为annotation只能用来标注你可以修改的类,很多序列化的类是无法修改的(第三方库,JDK系统和其它项目的类)
3.除了annotation,可以用其它方式来自动注册被序列化的类,如扫描路径,自动发现实现
Serializable接口(甚至包括Externalizable)的类并注册,类路径上找到Serializable类可能非常多,
可以用package前缀来一定程度限定扫描范围

在自动注册机制中,要保证服务提供端和消费端以同样的顺序(或者ID)来注册类,避免错位.因为可
被发现然后注册的类的数量可能都是不一样的

Dubbo+Hystrix实现服务熔断

Dubbo Provider中使用熔断器

可以在@HystrixCommand中的@HystrixProperty中配置阈值

Dubbo Consumer中使用熔断器

Dubbo+Hystrix熔断器仪表盘

在Provider和Consumer中都需要配置Hystrix仪表盘,配置方式一致

Dubbo+Hystrix配置熔断器仪表盘

@Configuration
public class HystrixDashBoardConfiguration{
	@Bean
	public ServletRegistrationBean getServlet(){
		HystrixMetricsStreamServlet streamServlet=new HystrixMetricsStreamServlet();
		ServletRegistrationBean registrationBean=new ServletRegistrationBean(streamServlet);
		registrationBean.setLoadOnStartup(1);
		registrationBean.addUrlMappings("/hystrix.stream");
		registrationBea.setName("HystrixMetricsStreamServlet");
		return registrationBean;
	}
}

Hystrix说明

触发fallback方法

参数 描述
FAILURE 执行抛出异常
TIMEOUT 执行开始,但没有在指定的时间内完成
SHORT_CIRCUITED 断路器打开,不尝试执行
THREAD_POOL_REJECTED 线程池拒绝,不尝试执行
SEMAPHORE_REJECTED 信号量拒绝,不尝试执行

fallback方法抛出异常

参数 描述
FALLBACK_FAILURE Fallback执行抛出出错
FALLBACK_REJECTED Fallback信号量拒绝,不尝试执行
FallBack_MISSING 没有Fallback实例

Hystrix常用配置信息

超时时间(默认1000ms)
线程池核心线程数
断路器
fallback

标签:集成,Dubbo,调用,hystrix,Hystrix,实现,熔断器,序列化
来源: https://www.cnblogs.com/chova/p/14784570.html