dubbo的服务降级怎么做的_zookeeper

1.Dubbo集群与负载均衡

dubbo的服务降级怎么做的_大数据_02

2.服务降级:指的是当服务器资源紧张的时候,暂停掉一些不重要的微服务,从而将所有的服务器的资源统一交由另外一个核心的微服务处理

  • 【dubbo-api】如果要想实现服务降级的处理,在Dubbo之中需要为业务接口设计一个降级时的处理业务类即可



package com.yootk.dubbo.service;
import com.yootk.dubbo.service.IMessageService;
import com.yootk.dubbo.vo.Message;
public class IMessageServiceMock implements IMessageService {
    @Override
    public Message echo(Message msg) {
        Message echoMessage = new Message() ;
        echoMessage.setSender("【ECHO】Nothing...");
        echoMessage.setTitle("【ECHO】Nothing...");
        echoMessage.setContent("【ECHO】Nothing...");
        return echoMessage;
    }
}



  • 【dubbo-echo-consumer】所有的服务降级的处理操作全部都是在客户端上处理完成的,修改客户端的接口注入配置



@Reference(mock="true",check=false)
private IMessageService messageInstance;


  

dubbo的服务降级怎么做的_大数据_03

  那么现在就有一个问题了,如果所有的业务接口都使用这样的一种Mock实现类型,这个时候一定会造成代码的维护困难,所以还有一种简单的做法,让数据直接返回null,一旦服务不可用,返回一个null对象,而这种配置只需要在消费端的注解上定义即可。



@Reference(mock="return null",check=false)
private IMessageService messageInstance;



3.ZooKeeper认证:在以后实际的开发之中,一定要为ZooKeeper设置ACL认证,才可以更好的进行注册内容的保护,同时防止其他用户盗取你的网络资源。

 • 【zookeeper-cluster-*】为根目录设置Zookeeper的认证信息,同时建议删除已经存在的所有dubbo路径信息

    • 删除当前已经存在的所有dubbo的路径:deleteall /dubbo

    • 追加一个新的数字认证信息:addauth digest zkuser:hellolee

    • 为zkuser的账户设置权限:setAcl / auth:zkuser:hellolee:crwda

 • 【zookeeper-echo-*】修改服务提供者与服务消费者的dubbo.properties配置文件,追加账户信息:



dubbo.registry.username=zkuser
  dubbo.registry.password=hellolee



 • 【zookeeper-echo-*】修改服务提供者与服务消费者的spring配置文件

• 【zookeeper-echo-provider】spring-dubbo-provider.xml:



<!-- 在进行Dubbo服务注册的时候一定要将服务注册到ZooKeeper之中 -->
    <dubbo:registry protocol="zookeeper" address="${dubbo.registry.address}"
                    timeout="${dubbo.provider.timeout}" file="${dubbo.registry.file}"
                    username="${dubbo.registry.username}"
                    password="${dubbo.registry.password}" client="curator"/>



   • 【zookeeper-echo-provider】spring-dubo-consumer.xml:



  

<!-- 在进行Dubbo服务注册的时候一定要将服务注册到ZooKeeper之中 -->
     <dubbo:registry protocol="zookeeper" address="${dubbo.registry.address}"
         timeout="${dubbo.provider.timeout}"
         username="${dubbo.registry.username}"
         password="${dubbo.registry.password}" client="curator"/>

4.Dubbo直连与Token认证

  • 修改服务提供端的配置文件,引入token的配置项:



<dubbo:provider timeout="${dubbo.provider.timeout}"
                    dispatcher="message" threadpool="fixed" threads="8" token="true"/>



  • 修改消费端的@Reference注解,将其设置为默认形式的引用配置:在日后所有的项目开发之中,dubbo服务端一定要开启token认证,这才是标准的项目开发。



@Reference(mock="return null",check=false)
private IMessageService messageInstance;