dubbo的深入学习(2)

来源:互联网 发布:蓝岸创投网络借贷 编辑:程序博客网 时间:2024/06/08 07:37

继续上一篇写了dubbo深入学习(1),主要介绍了dubbo是什么、这一篇主要是写dubbo能干什么?


2.dubbo能干什么?

当在小规模的服务的时候,应用通过RMI(远程方法调用)和Hessian9(Hessian是一个轻量级的remoting onhttp工具,使用简单的方法

提供了RMI的功能。)等工具,将一些服务进行简单的暴露,然后配置一些相关的URL地址进行调用,通过F5等硬件进行负载均衡的调

就能达到我们的业务需求,但是,当我们的服务器越来越多的时候,如果还是通过配置URL的话,那样数量就是一个大问题,而且

在代码中配置的话,一个出错了,整个程序都运行出错,同时F5硬件负载均衡器的单点压力也很大,那么在这个时候,dubbo就

出现了,dubbo提供一个服务注册中心,可以动态的注册和发现服务,让服务的位置透明了,消费者去获取了服务提供方的地址,实

现软载均衡,这样就降低了F5硬件负载均衡器的以来,当然也减少了一些成本,而且dubbo的Monitor提供了对消费者和提供者之间

的一数据记录,记录了调用的次数,调用的时间等等一些信息,管理者可以根据次数和时间等信息判断是否应该增加服务器台数,

增加对风险的控制。此外Dubbo通过长连接(长连接:不发:rst包,不进行四次握手,等待在同域名下继续用这个通道传输数据)

减少手,通过NIO及线程池在单连接上并发拼包处理消息,通过二进制流压缩数据,比常规HTTP等短连接协议更快。


其实简单来说就可以概括为:

1.透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。

 
2.软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。 


3. 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。


在这里呢,我在学习dubbo的时候我的导师给我说了几个dubbo的重点优点,大概为一下几个方面


优点:

1.dubbo RPC中,同时支持多种序列化方式

序列化对于远程调用的响应速度,网络带宽消耗等起着重要的作用,是提高分布式系统性能的关键因素之一,目前有一下四中序列化方式
  1.         dubbo序列化:阿里尚未开发成熟的高效java序列化实现,阿里不建议在生产环境使用它
  2.         hessian2序列化:hessian是一种跨语言的高效二进制序列化方式。但这里实际不是原生的hessian2序列化,而是       阿里修改过的hessian lite,它是dubbo RPC默认启用的序列化方式
  3.         json序列化:目前有两种实现,一种是采用的阿里的fastjson库,另一种是采用dubbo中自己实现的简单json库,       但其实现都不是特别成熟,而且json这种文本序列化性能一般不如上面两种二进制序列化。
  4.         java序列化:主要是采用JDK自带的Java序列化实现,性能很不理想。


2.基于长连接的NIO框架抽象封装

这是dubbo官方给出的dubbo协议dubbo协议(注:dubbo支持多协议),通过使用长连接减少握手,通过NIO及线程池在单连

接上并发拼包处理消息,通过二进制流压缩数据,比常规HTTP等短连接协议更快,适合小数据量大并发的服务调用


基于NIO的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小 


3.   个支持异步调用的RPC框架


  异步IO。当代码需要执行一个耗时的IO操作时,它只发出IO指令,并不等待IO结果,然后就去执行其他代码了。一段时间后,

       

        当IO返回结果时,再通知CPU进行处理。


原创粉丝点击