dubbo介绍与zookeeper单机版安装
2018-03-17 22:38
393 查看
一、RPC
什么是RPC?
RPC(Remote Procedure Call)远程过程调用。见名知意 - 从远程主机调用一个过程/函数。
RPC的目标是:使得本程序调用其它远程主机上的函数,好像调用本程序内的函数一样简单,并且屏蔽编程语言的差异性。
要实现上述目标首先是设计一种通讯协议,称之为:RPC协议
RPC协议不是一个具体的协议,而是一个类型名,代表一类协议,这类协议叫做RPC协议;
RPC协议在TCP/UDP之上,广义上可以跨越平台、语言进行应用间通讯(说广义是因为可以开发一个协议且不支持跨语言);
为什么要用RPC?
其实这是应用开发到一定的阶段的强烈需求驱动的。
如果我们开发简单的单一应用,逻辑简单、用户不多、流量不大,那我们用不着;
当我们的系统访问量增大、业务增多时,我们会发现一台单机运行此系统已经无法承受。此时,我们可以将业务拆分成几个互不关联的应用,分别部署在各自机器上,以划清逻辑并减小压力。此时,我们也可以不需要RPC,因为应用之间是互不关联的。
当我们的业务越来越多、应用也越来越多时,自然的,我们会发现有些功能已经不能简单划分开来或者划分不出来。此时,可以将公共业务逻辑抽离出来,将之组成独立的服务Service应用 。而原有的、新增的应用都可以与那些独立的Service应用 交互,以此来完成完整的业务功能。所以此时,我们急需一种高效的应用程序之间的通讯手段来完成这种需求,所以你看,RPC大显身手的时候来了!
其实#3描述的场景也是服务化 、微服务 和分布式系统架构 的基础场景。即RPC框架就是实现以上结构的有力方式。
有哪些RPC?
有很多RPC框架:CORBAR、Thrift、Dubbo等等。基本上他们分为两种类别:
一种是跨语言的;
一种是同语言的,如果你的分布式应用架构主体都是Java应用,显然我们不应该使用跨语言的RPC来多一层中转浪费效率。
所以,今天介绍下我最近使用的Dubbo框架。
Dubbo 工作原理
Provider
暴露服务方称之为“服务提供者”
Consumer
调用远程服务方称之为“服务消费者”
Registry
服务注册与发现的中心目录服务称之为“服务注册中心”
Monitor
统计服务的调用次调和调用时间的日志服务称之为“服务监控中心”
调用关系说明
1.服务容器负责启动,加载,运行服务提供者。
2.服务提供者在启动时,向注册中心注册自己提供的服务。
3.服务消费者在启动时,向注册中心订阅自己所需的服务。
4.注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
5.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
6.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
我的整体架构是这样的:
使用Dubbo来服务化(基于Spring);
使用Zookeeper集群作为Dubbo服务的注册中心(Zookeeper简介与安装);
使用Dubbo提供的一个JavaWeb项目作为Dubbo服务管理控制台;
创建了一个服务提供者项目(pom父项目) - 叫dubbo-practice-provider;
创建了一个服务消费者项目(pom父项目) - 叫dubbo-practice-consumer;
Zookeeper安装
1. 下载、解压
我这里使用的是Xftp上传,关于Xftp的安装与使用可以去它的官网https://www.netsarang.com/download/down_xfp5.html
使用的zookeeper版本是zookeeper-3.4.6
下面我们解压开发包,将安装包解压到/usr/local目录下,我们使用的命令是:
如下所示。
2. 、修改配置文件
我们先在 zookeeper-3.4.6目录下新建一个data目录,命令如下:
下面我们进入到conf目录下,可以看到该目录下有个zoo_sample.cfg文件
下面我们来修改zoo.cfg文件,我们使用的命令是vi zoo.cfg,在打开的文件中修改”dataDir”的路径为我们上面创建的data的绝对路径。如下所示。
修改完zoo.cfg之后,按ESC退出编辑模式,然后按Shift+ZZ来保存并退出编辑模式
接下来我们便启动zookepper,我们进入到bin目录下,使用命令
./zkServer.sh start 来启动zookeeper
启动完之后,我们可以使用./zkServer.sh status来查看启动状态,如下图所示。
如果出现端口无法访问的情况,有两种解决方案:
一:在防火墙允许访问的端口中增加8080端口(zookeeper中有个内嵌的管理控制台是通过jetty启动,会占用8080 端口)
添加完端口后,重启防火墙,如下所示。
二:关闭防火墙,并且设置开机也不启动
参考博客:Zookeeper简介、安装与使用
什么是RPC?
RPC(Remote Procedure Call)远程过程调用。见名知意 - 从远程主机调用一个过程/函数。
RPC的目标是:使得本程序调用其它远程主机上的函数,好像调用本程序内的函数一样简单,并且屏蔽编程语言的差异性。
要实现上述目标首先是设计一种通讯协议,称之为:RPC协议
RPC协议不是一个具体的协议,而是一个类型名,代表一类协议,这类协议叫做RPC协议;
RPC协议在TCP/UDP之上,广义上可以跨越平台、语言进行应用间通讯(说广义是因为可以开发一个协议且不支持跨语言);
为什么要用RPC?
其实这是应用开发到一定的阶段的强烈需求驱动的。
如果我们开发简单的单一应用,逻辑简单、用户不多、流量不大,那我们用不着;
当我们的系统访问量增大、业务增多时,我们会发现一台单机运行此系统已经无法承受。此时,我们可以将业务拆分成几个互不关联的应用,分别部署在各自机器上,以划清逻辑并减小压力。此时,我们也可以不需要RPC,因为应用之间是互不关联的。
当我们的业务越来越多、应用也越来越多时,自然的,我们会发现有些功能已经不能简单划分开来或者划分不出来。此时,可以将公共业务逻辑抽离出来,将之组成独立的服务Service应用 。而原有的、新增的应用都可以与那些独立的Service应用 交互,以此来完成完整的业务功能。所以此时,我们急需一种高效的应用程序之间的通讯手段来完成这种需求,所以你看,RPC大显身手的时候来了!
其实#3描述的场景也是服务化 、微服务 和分布式系统架构 的基础场景。即RPC框架就是实现以上结构的有力方式。
有哪些RPC?
有很多RPC框架:CORBAR、Thrift、Dubbo等等。基本上他们分为两种类别:
一种是跨语言的;
一种是同语言的,如果你的分布式应用架构主体都是Java应用,显然我们不应该使用跨语言的RPC来多一层中转浪费效率。
所以,今天介绍下我最近使用的Dubbo框架。
Dubbo 工作原理
Provider
暴露服务方称之为“服务提供者”
Consumer
调用远程服务方称之为“服务消费者”
Registry
服务注册与发现的中心目录服务称之为“服务注册中心”
Monitor
统计服务的调用次调和调用时间的日志服务称之为“服务监控中心”
调用关系说明
1.服务容器负责启动,加载,运行服务提供者。
2.服务提供者在启动时,向注册中心注册自己提供的服务。
3.服务消费者在启动时,向注册中心订阅自己所需的服务。
4.注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
5.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
6.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
我的整体架构是这样的:
使用Dubbo来服务化(基于Spring);
使用Zookeeper集群作为Dubbo服务的注册中心(Zookeeper简介与安装);
使用Dubbo提供的一个JavaWeb项目作为Dubbo服务管理控制台;
创建了一个服务提供者项目(pom父项目) - 叫dubbo-practice-provider;
创建了一个服务消费者项目(pom父项目) - 叫dubbo-practice-consumer;
Zookeeper安装
1. 下载、解压
我这里使用的是Xftp上传,关于Xftp的安装与使用可以去它的官网https://www.netsarang.com/download/down_xfp5.html
使用的zookeeper版本是zookeeper-3.4.6
下面我们解压开发包,将安装包解压到/usr/local目录下,我们使用的命令是:
tar -zxvf zookeeper-3.4.6.tar.gz -C /usr/local/
如下所示。
2. 、修改配置文件
我们先在 zookeeper-3.4.6目录下新建一个data目录,命令如下:
mkdir data
下面我们进入到conf目录下,可以看到该目录下有个zoo_sample.cfg文件
# 将原有的zoo_sample.cfg拷贝一份,取名叫`zoo.cfg` cp conf/zoo_sample.cfg conf/zoo.cfg # vim修改配置文件 vim conf/zoo.cfg
下面我们来修改zoo.cfg文件,我们使用的命令是vi zoo.cfg,在打开的文件中修改”dataDir”的路径为我们上面创建的data的绝对路径。如下所示。
[root@localhost conf]# vi zoo.cfg # The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/usr/local/zookeeper-3.4.6/data # the port at which the clients will connect clientPort=2181
修改完zoo.cfg之后,按ESC退出编辑模式,然后按Shift+ZZ来保存并退出编辑模式
接下来我们便启动zookepper,我们进入到bin目录下,使用命令
./zkServer.sh start 来启动zookeeper
[root@localhost zookeeper-3.4.6]# ./zkServer.sh start ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg Starting zookeeper ... STARTED # 以上,启动成功!
启动完之后,我们可以使用./zkServer.sh status来查看启动状态,如下图所示。
[root@localhost zookeeper-3.4.6]# ./bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper-3.4.8/bin/../conf/zoo.cfg Mode: standalone
如果出现端口无法访问的情况,有两种解决方案:
一:在防火墙允许访问的端口中增加8080端口(zookeeper中有个内嵌的管理控制台是通过jetty启动,会占用8080 端口)
vi /etc/sysconfig/iptables
添加完端口后,重启防火墙,如下所示。
二:关闭防火墙,并且设置开机也不启动
[root@localhost conf]# service iptables stop 关闭防火墙 [root@localhost bin]# chkconfig iptables off 设置开机不启动
参考博客:Zookeeper简介、安装与使用
相关文章推荐
- Dubbo框架介绍与安装 Dubbo 注册中心(Zookeeper-3.4.6)
- 基于Dubbo的分布式系统架构(一):安装ZooKeeper注册中心(单机版)
- 分布式架构学习之:002--Dubbo架构基本介绍和zookeeper单点安装
- Zookeeper单机版安装和使用(简单介绍)
- Dubbo框架介绍与安装 Dubbo 注册中心(Zookeeper-3.4.6)
- (转)淘淘商城系列——zookeeper单机版安装
- windows环境下zookeeper 安装介绍
- Zookeeper的介绍与安装
- Dubbox详细介绍与安装
- dubbo+zookeeper安装配置
- 跟我学习dubbo-ZooKeeper注册中心安装(2)
- Dubbo-zookeeper的部署和安装
- Dubbo框架应用之(三)--Zookeeper注册中心、管理控制台的安装及讲解
- dubbo系列-Linux下zookeeper的安装
- 安装 Dubbo 注册中心(Zookeeper-3.4.6)--单节点
- 手把手带你搭建 SpringMVC + Zookeeper +Dubbo(二)【Windows 安装 ZooKeeper】
- zookeeper和dubbo-admin安装
- 介绍和安装 zookeeper
- windows环境下zookeeper 安装介绍
- (十四) 构建dubbo分布式平台-window安装zookeeper注册中心