杜博和动物园管理员
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.