杜博和动物园管理员

Dubbo是一个远程调用服务的分布式框架,可以实现远程通信、动态配置、地址路由等功能。比如介绍演示中暴露的服务,使得远程调用的协议使用dobbo协议(dubbo://x.x.x.x)或者其他协议,zookeeper集群地址可以配置实现软负载均衡,配置均衡模式。在没有配备注册中心的情况下,也可以实现服务器与呼叫方的通信。这种方式是点对点的交流,所谓“无中间人”。但是如果配置服务的发布和调用终端太多,尤其是集群提供服务时,就会暴露出很多问题:添加节点需要修改配置文件,停机后无法感知服务器机器。它可以通过集成注册中心来动态地管理服务发布和服务调用。相当于把服务注册和发布推送的功能分配给了注册中心。

Dubbo通过RPC实现服务调用,即客户端和服务器端共享一个接口(把接口做成jar包,把jar包引入客户端和服务器端),客户端为接口编写调用,服务器端为接口编写实现,中间的网络通信交给框架来实现。

我们来看看Spring配置语句暴露服务,provider.xml文件。

让我们看看服务消费者consumer.xml文件。

这是典型的点对点服务调用。当然,为了高可用性,我们可以在consumer.xml中配置多个服务提供者,并配置响应负载平衡策略。

配置多个服务调用方,在comsumer.xml的dubbo:reference标签的url属性中添加多个地址,用分号隔开;要配置负载平衡策略,只需在comsumer.xml的dubbo:reference标记中添加loadbalance属性。值可以是以下四种类型:

那么现在的架构有什么问题呢?

1.当服务提供商添加节点时,需要修改配置文件。

2.当其中一个服务提供者宕机时,服务消费者无法及时感知,会向宕机服务发送请求。

这时候就有必要引入一个注册中心。Dubbo目前支持四种类型的注册中心(多播、zookeeper、redis和simple)。推荐Zookeeper注册中心。要使用注册中心,只需按如下方式更改provider.xml和consumer.xml:

如果zookeeper是一个集群,多个地址可以用逗号分隔。

删除在consumer.xml中配置的直接连接模式

如何在zookeeper中保存注册信息?

启动上述服务后,我们观察到zookeeper的根节点有一个dubbo节点和其他节点,如下所示。

为什么最后一个节点中服务的地址标为绿色?因为最后一个节点是临时节点,其他节点是持久节点,当服务宕机时,这个节点会自动消失,不再提供服务,服务消费者也不会再次请求。如果部署了多个demoservice,providers下面会有几个节点,每个节点都会保存一个demo service的服务地址。

事实上,一个zookeeper集群可以被多个应用程序共享,因为不同的框架会在zookeeper上构建不同的节点,而不会相互影响。比如dubbo会创建一个/dubbo节点,storm会创建一个/storm节点。

动物园管理员介绍:

Zookeeper是Apacahe Hadoop的子项目。它是一个支持更改推送的树形目录服务。适合作为Dubbo服务的注册中心,工业强度高,可用于生产环境。建议。

流程描述:

支持以下功能:

补充:

dubbo的协议使用什么序列化框架?

Dubbo有很多协议,不同的协议默认使用不同的序列化框架。比如dubbo协议默认使用Hessian2序列化(注:Hessian2是Ali基于Hessian的二次开发,命名为Hessian2)。Rmi协议默认为java本地序列化,blogs.com/iisme/p/10620125.html.