远程调用技术之dubbo

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。

 

其核心部分包含:

1,远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。

2,集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。

3,自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。

 



 

Dubbo能做什么?

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

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

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

 

Dubbo涉及的知识点:

1,服务注册:

对于服务提供方,它需要发布服务,而且由于应用系统的复杂性,服务的数量、类型也不断膨胀;对于服务消费方,它最关心如何获取到它所需要的服务,而面对复杂的应用系统,需要管理大量的服务调用。而且,对于服务提供方和服务消费方来说,他们还有可能兼具这两种角色,即既需要提供服务,有需要消费服务。

通过将服务统一管理起来,可以有效地优化内部应用对服务发布/使用的流程和管理。服务注册中心可以通过特定协议来完成服务对外的统一。Dubbo提供的注册中心有如下几种类型可供选择:

a,Multicast注册中心  b,Zookeeper注册中心 c,Redis注册中心 d,Simple注册中心

 

2, 远程通信与信息交换

远程通信需要指定通信双方所约定的协议,在保证通信双方理解协议语义的基础上,还要保证高效、稳定的消息传输。Dubbo继承了当前主流的网络通信框架,主要包括如下几个:

a:Mina b:Netty c:Grizzly

 

 

3,Dubbo支持多种协议

Dubbo协议

Hessian协议

HTTP协议

RMI协议

WebService协议

Thrift协议

Memcached协议

 

Redis协议

 



 
A,最底部的为dubbo服务的集群(服务者),即对外界暴露服务,dubbo本身就

是支持集群模式,而且支持多种通信协议(dubbo,rmi,http...)。主要部署核心的业务代码。

 

B,右边的注册中心,dubbo提供了也是提供了多种注册中心, zookeeper注册中心是其中一

种同样无单点故障问题,dubbo服务依赖于注册中心,在dubbo服务启动时,回向注册中心

去进行一个服务的注册(发布服务)。对服务进行管理。

 

C,接下来看tomcat集群,主流的tomcat集群搭配(nginx+tomcat+redis/memcache)都是非常

的简单的,所有控制器都放到其中,控制器中依赖的服

务实现是来之后端dubbo集群的,而dubbo服务是注册到zookeeper上的,只需要连上注册

中心就获取到了我们所需要的服务,并且进行调用。主要是对控制器层做一个集群,提高

可用性和性能。

 

D,tomcat左下角是一个NOSQL集群,主要是处理一个session的共享/分布式缓存。

E,最上层是nginx的集群主要是把静态页面全都放到nginx中即可,注意,如果使用restful风

格,并且使用JS MVC框架的话!完全不需要把页面部署到tomcat中,让tomcat只跑控制代

码即可。restful架构的话页面时全静态,数据全都走json的方式即可。

 

F,上诉扩展瓶颈在nginx上,解决的方式就算使用在nginx之前套LVS吧,或者硬件做一个负载。

 



猜你喜欢

转载自blog.csdn.net/qq_30764991/article/details/80232013