zoukankan      html  css  js  c++  java
  • dubbo负载均衡与服务降级以及Zookeeper认证

    1.Dubbo集群与负载均衡

    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;
    

      

      那么现在就有一个问题了,如果所有的业务接口都使用这样的一种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;

       

  • 相关阅读:
    (原创)(二)作为测试负责人测试过程监控中关注的度量数据
    国产免费非开源测试管理软件MYPM 零配置安装过程
    (原创)存在于大多数小公司的测试管理问题
    抨击评价音频播放软件音质的穆伦
    关于C#交互式窗口(C# Shell REPL Interpreter Interactive)
    网上车管所系统更新日志
    SharpDevelop 用来临时在服务器上写Web服务很不错。
    弄到现在才知道网页没有combobox,弄网上的服务器控件不方便,自己用textbox+dropdownlist用CSS组合起一个简单的combobox效果。
    为什么国内的企业不收购WebOS、塞班、Meego?
    未能初始化 AppDomain:/LM/W3SVC/1/Root 服务应用程序不可用
  • 原文地址:https://www.cnblogs.com/wxl123/p/11116246.html
Copyright © 2011-2022 走看看