RPC_rmi与Zookeeper
RPC
mvc是一种设计模式
rpc是上层协议,应用层协议。底层可以基于TCP协议
dns服务器可以是单映射也可以是多映射,一个域名只可以对应一个ip,一个ip可以对应多个域名。
单体架构的优点:部署简单,维护方便,成本低。
缺点:访问瓶颈,甚至出现宕机等情况。
分布式架构
优点: 增大了系统可用性,减少单点故障。
增加了重用性,因为模块化,所以重用性更高,高内聚,低耦合
增加了可扩展性;
增加每个模块的负载能力。
缺点:成本更高;架构更加复杂;整体响应时间变长;吞吐量变大。(吞吐量=请求书/秒)
存在的问题在于分布式架构中各个模块之间如何通信?所以使用RPC协议进行通信。
适用于大型互联网项目,客户多,数据多,访问并发高,压力大,吞吐量大。
Jackson对java对象和json字符串的转化处理
转换前需要创建jackson 的转化器ObjectMapper,对象转换json用writeValueAsString;json转换对象用readValue(值,泛型)。
1 | public static void main(String[] args) throws Exception{ |
HttpClient中在控制器controller中加入@CrossOrigin注解。代表当前方法可以被AJAX跨域访问。会在响应头中增加参数 access-control-allow-origin
RMI(远程方法调用)
RMI是从jdk1.2推出的功能,可以实现在java应用中像调用本地方法一样调用另一个服务器中java应用(jvm)中的内容;RMI是java语言的远程调用,无法实现跨语言。
Remote
java.rmi.Remote 定义了此接口为远程调用接口。如果接口被外部调用,需要继承此接口。
RemoteException
java.rmi.RemoteException
继承了Remote接口的接口中,如果方法是允许被远程调用的,需要抛出此异常。
UnicastRemoteObject
java.rmi.server.UnicastRemoteObject
此类实现了Remote接口和Serializable接口。
自定义接口实现类除了实现自定义接口还需要继承此类。
LocateRegistry
java.rmi.registry.LocateRegistry
可以通过LocateRegistry在本机上创建Registry,通过特定的端口就可以访问这个Registry。
Naming
java.rmi.Naming
Naming定义了发布内容可访问RMI名称。也是通过Naming获取到指定的远程方法。
Zookeeper
zk客户端常用命令:
zkCli.sh 默认链接的是 localhost:2181 zookeeper主机
zkCli.sh -server ip:port 指定连接到ip:port zookeeper主机
quit 退出命令zk客户端控制台
ls ls [-s] [-R] /path
-s 详细信息,替代老版的ls2
-R 当前目录和子目录中内容都罗列出来
例如:ls -R / 显示根目录下所有内容
create
create /path [data]
[data] 包含内容
创建指定路径信息
例如:create /demo 创建/demo
get
get [-s] /path
[-s] 详细信息
查看指定路径下内容。
例如: get -s /demo
null:存放的数据
cZxid:创建时zxid(znode每次改变时递增的事务id)
ctime:创建时间戳
mZxid:最近一次更近的zxid
mtime:最近一次更新的时间戳
pZxid:子节点的zxid
cversion:子节点更新次数
dataversion:节点数据更新次数
aclVersion:节点ACL(授权信息)的更新次数
ephemeralOwner:如果该节点为ephemeral节点(临时,生命周期与session一样), ephemeralOwner值表示与该节点绑定的session id. 如果该节点不是ephemeral节点, ephemeralOwner值为0.
dataLength:节点数据字节数
numChildren:子节点数量
set
set/path data
设置节点内容
delete
delete/path
删除节点,不能删除有子节点的节点
deleteall/path
删除节点,可以删除有字节点的节点
- 本文标题:RPC_rmi与Zookeeper
- 本文作者:Ptmapo
- 本文链接:https://1997888.xyz
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!