Dubbo+Zookeeper入门

Dubbo

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f4zb5xc1-1611971970399)(ZooKeeper+Dubbo.assets/1611568179075.png)]

Zookeeper

  • 数据结构

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9bqAsGYM-1611971970401)(ZooKeeper+Dubbo.assets/1611571009950.png)]
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o2UrqNyr-1611971970404)(ZooKeeper+Dubbo.assets/1611571638643.png)]
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S9CA2INk-1611971970406)(ZooKeeper+Dubbo.assets/1611623310276.png)]
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y9RaBN6t-1611971970406)(ZooKeeper+Dubbo.assets/1611623332728.png)]
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zTsSFxrR-1611971970409)(ZooKeeper+Dubbo.assets/1611623464983.png)]
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hUxTCar3-1611971970410)(ZooKeeper+Dubbo.assets/1611623508632.png)]
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sMtgyavp-1611971970411)(ZooKeeper+Dubbo.assets/1611623725238.png)]
  • 分布式锁

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5RVbU4gP-1611971970413)(ZooKeeper+Dubbo.assets/1611634205258.png)]

    • public class RedisLock implements Lock{
          @Autowired
          private RedisTemplate redisTemplate;
          
          private static final String LOCK_NAME = "redis_lock";
          
          public void lock(){
              boolean flag = redisTemplate.opsForValue().setIfAbsent("lockName", LOCK_NAME, 15, TimeUnit.SECONDS);
              
              if(flag){
                  
              }else{
                  System.out.println("");
              }
          }
      }
      
      
  • Zookeeper 分布式锁

    • public class ZkLock implements Lock{
          private ZooKeeper zk;
          
          private String root = "/locks";
          
          private String lockName;
          
          private ThreadLocal<String> nodeId = new ThreadLocal<String>();
          
          private CountDownLatch connectedSignal = new CountDownLatch(1);
          private final static int sessionTimeout = 300;
          private final static byte[] data = new byte[0];
          
          public ZkLock(String config, String lockName){
              this.lockName = lockName;
              
              try{
                  zk = new ZooKeeper(config, sessionTimeout, new Watches(){
                      @Override
                      public void process(WatchedEvent event){
                          if(event.getState() == Event.Keeperstate.SyncConnected){
                              connectedSignal.countDown();
                          }
                      }
                  });
              }
          }
          
          class LockWatcher implements Watcher{
              private CountDownLatch latch = null;
              public LockWatcher(CountDownLatch latch){
                  this.latch = latch;
              }
              
              @Override
              public void process(){
                  
              }
          }
          
          @Override
          public void lock(){
              
          }
          
          @Override
          public void unlock(){
              
          }
      }
      

RMI

  • 创建远程接口,继承java.rmi.Remote
  • 实现远程接口, 继承UnicastRemoteObject
  • 创建服务器程序, createRegistry()方法注册远程对象
  • 创建客户端程序,获取注册信息,调用接口方法
  1. public interface UserSerivce extends Remote{
        String sayHello(String name) throws RemoteException;
    }
    
  2. public class UserServiceImpl extends UnicastRemoteObject implements UserSerivce{
        public UserServiceImpl() throws RemoteException{
            
        }
        @Override
        public String sayHello(String name) throws RemoteException{
            
        }
    }
    
  3. LocateRegistry.createRegistry(8888);
    UserService userService = new UserServiceImpl();
    Naming.bind("rmi://localhost:8888/UserService", userService);
    
  4. UserService userService = (UserService) Naming.lookup("rmi://localhost:8888/UserService");
    userService.sayHello();
    

RPC 框架

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6k9TFB8G-1611971970414)(ZooKeeper+Dubbo.assets/1611664905793.png)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值