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()方法注册远程对象
- 创建客户端程序,获取注册信息,调用接口方法
-
public interface UserSerivce extends Remote{ String sayHello(String name) throws RemoteException; }
-
public class UserServiceImpl extends UnicastRemoteObject implements UserSerivce{ public UserServiceImpl() throws RemoteException{ } @Override public String sayHello(String name) throws RemoteException{ } }
-
LocateRegistry.createRegistry(8888); UserService userService = new UserServiceImpl(); Naming.bind("rmi://localhost:8888/UserService", userService);
-
UserService userService = (UserService) Naming.lookup("rmi://localhost:8888/UserService"); userService.sayHello();
RPC 框架
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6k9TFB8G-1611971970414)(ZooKeeper+Dubbo.assets/1611664905793.png)]