Zooker

news/2024/10/22 18:42:47/

文章目录

      • 一.什么是分布式系统
      • 二.Zookeeper的配置中心
      • 三.Zookeeper的使用
      • 四.RPC(远程过程调用)

一.什么是分布式系统

分布式系统是若干独立计算机的集合,这计算机对用户来说就像单个相关系统。比如可以把大项目按功能划分为很多的模块,单独一个系统处理订单,一个处理用户登录,一个处理后台等等。分布式系统就是:多台计算机构成,计算机之间通过网络进行通信 ,彼此进行交互 ,共同目标 。

二.Zookeeper的配置中心

数据发布/订阅即所谓的配置中心:发布者将数据发布到ZooKeeper一系列节点上面,订阅者进行数据订阅,当数据有变化时,可以及时得到数据的变化通知,达到动态获取数据的目的。
在这里插入图片描述
ZooKeeper 采用的是推拉结合的方式。
1、推: 服务端会推给注册了监控节点的客户端 Wathcer 事件通知
2、拉: 客户端获得通知后,然后主动到服务端拉取最新的数据
Watch机制就是订阅发布功能,其实说白了就是观察者模式。watche机制分为添加数据和监听节点。
Curator在这方面做了优化,Curator引入了Cache的概念用来实现对ZooKeeper服务器端进行事件监听。Cache是Curator对事件监听的包装,其对事件的监听可以近似看做是一个本地缓存视图和远程ZooKeeper视图的对比过程。而且Curator会自动的再次监听,我们就不需要自己手动的重复监听了。
Curator中的cache共有三种
NodeCache(监听和缓存根节点变化)
PathChildrenCache(监听和缓存子节点变化)
TreeCache(监听和缓存根节点变化和子节点变化)

三.Zookeeper的使用

先打开zkServer服务端,再打开zkCli客户端
常用的命令总结:
在这里插入图片描述

四.RPC(远程过程调用)

Java中的RPC框架比较多,广泛使用的有RMI、Hessian、Dubbo、spring Cloud等
Remote Procedure Call 远程过程调用,是分布式架构的核心,按响应方式分如下两种:
同步调用:客户端调用服务方方法,等待直到服务方返回结果或者超时,再继续自己的操作。
异步调用:客户端把消息发送给中间件,不再等待服务端返回,直接继续自己的操作。
简单来说一个RPC架构里包含如下4个组件:
1、 客户端(Client):服务调用者
2、 客户端存根(Client Stub):存放服务端地址信息,将客户端的请求参数打包成网络消息,再通过网络发送给服务方
3、 服务端存根(Server Stub):接受客户端发送过来的消息并解包,再调用本地服务
4、 服务端(Server):服务提供者。
在这里插入图片描述
1、 服务调用方(client)调用以本地调用方式调用服务;
2、 client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体
在Java里就是序列化的过程
3、 client stub找到服务地址,并将消息通过网络发送到服务端;
4、 server stub收到消息后进行解码,在Java里就是反序列化的过程;
5、 server stub根据解码结果调用本地的服务;
6、 本地服务执行处理逻辑;
7、 本地服务将结果返回给server stub;
8、 server stub将返回结果打包成消息,Java里的序列化;
9、 server stub将打包后的消息通过网络并发送至消费方;
10、 client stub接收到消息,并进行解码, Java里的反序列化;
11、 服务调用方(client)得到最终结果。


http://www.ppmy.cn/news/670686.html

相关文章

zookeeeper

目录 1.zookeeper基础信息 2.zookeeper部署 1. 单点 2. 分布式 1.解压 2.软连接 3.环境变量 4.删除相关cmd文件 5.添加zookeeper文件夹 5.1添加server 6.同步 7.指定zk机器号 8.启动 【三台机器一起做】 群起脚本 (bigdata13机器) 3.zk 4.节点 5.操作命令…

2021 Geek re

2021 Geek re 一年一度的极客大挑战,做完了逆向,题目质量有高有低,一些适合新生,一些又不适合新生,写wp给新生看看,毕竟大家都是这么过来的。 Re0 签到题 ida打开,shift f12查看字符串就行。…

【云原生】aws平台使用eks发布load balancer暴露服务到外网

网络负载均衡: aws官网文档:https://docs.amazonaws.cn/eks/latest/userguide/network-load-balancing.html 在svc上添加注释: service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing"

Android中构建多视图 RecyclerView的正确打开方式

Android中构建多视图 RecyclerView的正确打开方式 简介 漂亮的UI能极大提高用户留存率,相反糟糕的UI将导致App安装率下降。 UI体验对用户留存率有特别大的影响,较差的体验app我可能用不了2s就要卸载掉。 你需要学习内容如下: 使用单个R…

深度强化学习在机器人领域的研究与应用

前言 机器学习方法主要可以分为四类,监督学习、半监督学习、无监督学习、以及强化学习。其中,强化学习不同于连接主义的监督学习方法,是智能体通过与环境的交互,观测交互结果以及获得相应的回报。这种学习的方式是模拟人或动物的一…

深度学习的应用

参考书籍《Tensorflow实战Google深度学习框架》郑泽宇等 深度学习最早兴起于图像识别,但是在短短的几年之内,深度学习推广到了机器学习的各个领域,并且都有很出色的表现。具体领域包含图像识别、语音识别、自然语言处理、机器人、生物信息处理、化学、电脑游戏、搜索引…

机器学习的应用–大数据

说完机器学习的方法,下面要谈一谈机器学习的应用了。无疑,在2010年以前,机器学习的应用在某些特定领域发挥了巨大的作用,如车牌识别,网络攻击防范,手写字符识别等等。但是,从2010年以后&#xf…

【一】机器学习在网络空间安全研究中的应用

本文为清华大学计算机系团队于2017年发表于计算机学报的一篇文章,作者为张蕾,崔勇,刘静,江勇和吴建平。 摘要 文章首先阐述机器学习技术在网络空间安全应用研究中的应用流程,然后从系统安全,网络安全和应…