Dubbo搭建环境部署

Dubbo 快速入门



1. 一些基础概念

衡量网站的性能指标

  • 响应时间
    • 执行一个请求从开始到最收到相应所花费的总时间
  • 并发数
    • 并发连接数
      • 指的是客户端向服务器发起请求,并且建立了TCP链接,每秒钟服务器连接的总TCP数量
    • 请求数
      • 也成为QPS(Query Per Second) 指的是每秒钟的请求量
    • 并发用户数
      • 单位时间内有多少用户
  • 吞吐量
    • QPS
      • 每秒查询数量
    • TPS (Transations Per Second)
      • 每秒事务数,一个事务是指一个客户机向服务器发送请求然后服务器做出的反应过程,客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。

总的来说,QPS >= 并发连接数 >= TPS


大型互联网的项目目标一般都是:

  1. 高性能:提供快速的访问体验。
  2. 高可用:网站服务可以一直正常的去请求访问。
  3. 可伸缩:可以通过硬件的增加/减少,提高/降低处理性能能力。
  4. 高扩展性:系统之间的耦合度低,方便通过新增/移除的方式,增加/减少新的功能/模块。
  5. 安全性:提供网站安全访问和数据加密,安全存储等策略。
  6. 敏捷性:随需应变,快速响应。


集群和分布式

  • 集群: 很多 “人” 一起做一样的事情
就比如,你,有一个女朋友,有一天,你们的家里需要打扫卫生了。
但是已经知道的是,你们家里共有四间房间,你女朋友可以扫地可以拖地板可以收拾房间,但是这样的效率就会偏慢。
这个时候,如果你可以去帮你女朋友打扫房间,呢么此时的效率会提高一倍。你和你女朋友(多个人),一起打扫卫生,一起扫地拖地收拾房间(做同一件事情)。
首先在效率上,他会提高效率(高效率),假设,你女朋友突然发脾气,说(哎呀,我烦死了,你看看你这个家造成什么了,我不扫了!)。
这个时候,这个家里还有人扫吗?这个任务还可以完成吗?依然可以,对吧,还有你这个苦逼男朋友,只是效率会低,但是可以完成任务(高可用)。这就是集群。
  • 分布式: 很多 “人” 一起做不一样的事情,这些不一样的事情,合起来就是一件大事。
还是借鉴上面的例子,还是扫到一半,女朋友不想扫了。
于是你女朋友找来一个扫地机器人(多个人),让扫地机器人帮他扫地(不同的事情),而你女朋友只需要负责拖地即可(一样完成任务)。
这就是分布式,把一个大的任务,分成很多小的模块完成。

在早期中,我们的应用一般是下面这样的部署途径。
在这里插入图片描述
客户可以通过客户端浏览器,来访问我们的Web服务器中的具体服务,然后,服务器访问数据库,最后回传给客户端。但是这样如果同时有很多人来访问服务器,这个时候,服务器肯定会扛不住,开始接口响应变慢,直至崩溃。


为了解决这个问题,我们可以为它搭建集群,以提高服务器的性能和处理速度。
在这里插入图片描述
那么就会如上图所示,客户端浏览器通过负载均衡,分别分发到服务器上,对应的服务器,在去请求数据库,然后相应给客户端对应的数据。这个时候,我们是同时有三台服务器在工作,提高了性能,假设其中有一台服务器突然挂掉,我们也不需要担心服务会突然停止崩溃。依然有其他的服务在正常运行。

但是这个项目依然是没有搭载分布式的,它仅仅是拥有集群(多个人,干同一件事),这里也是一样的,多个服务器,但是他们都是处理的一件事情,呢么我们可以把它的服务拆分,假设,这个服务里,有A,B两个服务模块。
他们在没有拆分的时候,是以[A, B]的形式存在。也就是他们是依赖在一起的。我们可以把它改为分布式 + 集群的模式(如下图)
在这里插入图片描述
它依然是集群,但是拆分成了不同的模块。这样做的好处就很容易体现出来,举个例子,假设,我的A服务是支付模块,B服务是订单模块。随着用户体系的日益壮大,慢慢的你发现,A服务支付模块用的人越来越多,接口调用响应缓慢,说大白话就是,性能不够用了。怎么办,就很简单了,我们只需在加A服务就可以了,提升性能。如下。
在这里插入图片描述
呢么这样也可以具有可伸缩性,和可扩展性,假设我以后需要上线新的模块
,C模块。呢么我只需要在基础上直接添加C模块即可。对其它模块也不会有什么影响,耦合度降低。
在这里插入图片描述

总结一下,什么是集群,什么是分布式,怎么具体应用在项目上。

  • 集群: 一个业务模块,部署在多台服务器上。
  • 分布式:一个大的业务系统,拆分成很多小模块,分别部署在不同的机器上。



2. 架构的演进


架构由早到晚的一个演进如下图
在这里插入图片描述

  • 单体架构

    • 优点
      • 开发部署都很方便,小型项目首选。
    • 缺点
      • 项目启动慢,一旦模块多起来,服务启动会非常缓慢。
      • 可靠性差,在ABCD服务中,一旦C服务或者其他任意一个服务挂掉。呢么其他服务都会崩盘。
      • 可伸缩性差,假设ABCD中任意一个服务访问人数非常多,你想对某一个服务单独扩展,做不到。只能在去多开几个服务。
      • 扩展性,维护性差。
      • 性能低
  • 垂直架构

    • 优点
      • 垂直架构是指将单体架构中的多个模块拆分为多个独立的项目,形成多个独立的单体架构。
      • 优化了单体架构的一些问题
    • 缺点
      • 重复功能太多
  • 分布式架构

    • 优点
      • 分布式架构是指在垂直架构的基础上,将公共业务模块抽取出来,作为独立的服务,提供其他调用者消费,以实现服务的共享和重用。
      • 解决了垂直架构的重复功能太多问题
      • RPC :Remote Procedure Call 远程过程调用,有非常多的协议和技术都来实现了RPC的过程,比如:HttpRest风格,Java RMI规范,WebService SOAP协议,Hession等。
    • 缺点
      • 服务的提供方一旦产生变更,所有调用它的消费方,都需要跟随变更。 假设提供者的ip发生了变化,或者端口发生了变化,所有的服务消费者,全部需要做对应的更改。
  • SOA架构

    • 优点
      • SOA: (Service-Oriented Architecture, 面向服务的架构), 是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。
      • ESB: (Enterparise Servce Bus), 企业服务总线,主要提供了一个服务于服务之间的交互。ESB包含的功能如:负载均衡,流量控制,加密处理,服务的健康,异常处理,监控告急等等
  • 微服务架构

    • 优点
      • 微服务架构是在SOA架构上做的升华,微服务架构强调的一个重点是 “业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发,设计,运行的小应用。这些小应用之间通过服务互相完成交互和集成。
      • 微服务架构 = 80%的SOA服务架构思想 + 100%的组件化架构思想 + 80%的领域建模思想
    • 特点
      • 服务实现组件化: 开发者可以自由选择开发技术,也不需要协调其他团队。
      • 服务之间的交互方式 HttpRest API
      • 去中心化: 每个微服务有自己私有的数据库持久化业务数据
      • 自动化部署:把应用拆分成为一个一个独立的单个服务,方便自动化部署,测试,运维。

Dubbo是SOA时代的产物,SpringCloud是微服务时代的产物。


3. 如何下载Zookeeper

下载的步骤还是很繁琐的。首先我们需要把Zookeeper部署到Linux上,这里Linux版本选择的是 CentOs7。


暂时点击无效,因为上传需要时间!!!可以下载的时候,这一行字会消失。

附上所有需要下载内容的下载链接

CentOs7百度网盘下载链接

XShell百度网盘下载链接

apache-zookeeper-3.8.0-bin.tar.gz — Linux

VMwear 需要自行下载,我这里使用的是16版本,在Bilibili搜索VMwear下载有很多下载教程和激活码。 也可以顺便的做掉 如何在 VMwear中创建 CentOs7 虚拟机。


在以上内容全部下载完成,并且配置好虚拟机之后,我们会进入到一个空白的CentOs7Linux的桌面。

在这里插入图片描述
这就是我们系统刚进去的界面,我们点击右键,然后选择 Open Terminal,打开我们的命令行界面,首先先测试一下网络是否可以Ping通,我们可以输入 [Ping www.baidu.com] 来测试。

在这里插入图片描述
可以看出来,我们的网络没有任何问题。这个时候,查看我们的IP地址【指得是Linux,CentOs7的IP地址】 我们在Shell中输入 ifconfig 来查询我们的Ip地址。
在这里插入图片描述
我们所需要的就是这个IPV4地址,我们在XShell中使用该地址,可以远程链接我们的Linux。


打开XShell,新建一个链接。(因为不方便截图,所以具体位置在 菜单栏 File 中, 有一个 New… 选项。单击,得到如下连接窗口)

在这里插入图片描述

  • Name: 对应的是连接名称,这个随便填你想要的就可以。
  • Protocol: 对应的是链接协议,我们这里采用SSH默认即可。
  • Host: 这个就是要填入我们上面获取到CentOs7的Ip地址。以来远程访问我们的Os
  • Port Number: 顾名思义,链接端口。默认22即可。

然后我们点击Ok,后续会让你输入用户名,密码。 也就是你Os系统的用户名以及密码。

连接成功后,我们在系统中的 /opt中新建 zookeeper 文件夹。这里用来存放我们的 zookeeper。

# 我们使用如下指令来创建,该命令可以在XShell中执行,也可以在Os中执行,我们在XShell中执行即可
mkdir /opt/zookeeper/

然后我们需要通过XShell把我们的Zookeeper压缩包上传到我们的Os系统上。我们首先需要在XShell中下载一个插件,我们可以通过该插件直接上传文件到Os中。
所有的命令都可以在XShell中执行。

# 下载插件
yum install lrzse -y
# 执行上传文件
rz

在成功上传文件后,我们可以直接通过XShell, 在根目录中,使用 ll 或者 ls,来查看我们在该目录下的文件,可以很清楚的看到,我们有一个 apache-zookeeper-3.8.0-bin.tar.gz 在这里。我们需要把该压缩文件,移动到 /opt/zookeeper/ 下,使用如下命令

mv <源目录,这里我们写压缩文件的名称 apache-zookeeper-3.8.0-bin.tar.gz > /opt/zookeeper/

# 实际操作应该是
mv apache-zookeeper-3.8.0-bin.tar.gz /opt/zookeeper/

然后我们对该文件进行解压。

tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz

我们就会在该目录下得到该文件夹 -> apache-zookeeper-3.8.0-bin

我们通过cd 进入到该文件夹 这里就是我们 zookeeper 文件所属地。

cd apache-zookeeper-3.8.0-bin

这样并没有算完成。因为我们还需要对该文件进行配置,我们需要进入他的conf文件夹。更改配置文件。

cd conf

顺带提一嘴,Zookeeper的文件目录结构长这样
|-------- bin
|-------- conf
|-------- docs
|-------- lib
|-------- logs
|-------- LICENSE.txt
|-------- NOTICE.txt
|-------- README.md
|-------- README_packaging.md

在我们进入conf 中,我们可以得到如下文件

  • configuration.xsl
  • logback.xml
  • zoo_sample.cfg

其中,我们需要做更改的核心配置文件就是。 zoo_sample.cfg文件。此时的这个文件是无法生效的,我们需要将其变更为 zoo.cfg 才可以生效,我们可以通过文件拷贝的方式。

cp zoo_sample.cfg zoo.cfg

在拷贝完成后,我们得到以下结构文件

  • configuration.xsl
  • logback.xml
  • zoo_sample.cfg
  • zoo.cfg

此时,我们需要对zoo.cfg进行操作。我们可以通过vim来打开该文件。

vim zoo.cfg

打开以后是下图所示。


其中,我们只需要重点关注一个属性 dataDir 他是我们存放文件的目录。我们需要对该目录做出更改。改为图中的地址 /opt/zookeeper/zkdata, 需要配注意的是我们并没有该目录,所以需要我们打开Linux,打开命令行交互,来进行自己创建(因为我们都是通过XShell创建,也可以使用Xshell,也可以使用Linux Shell)

mkdir /opt/zookeeper/zkdata

创建完成后,我们依然在zoo.cfg 文件中,我们按键盘上的 i 键,进行插入操作,我们把该位置更改为我们的 /opt/zookeeper/zkdata 即可。 然后我们按Esc, 输入 :wq 保存退出,至此完成。

我们最后一步需要操作的就是启动我们的Zookeeper,和停止我们的Zookeeper。

我们Cd进入bin目录下。然后在该目录下文件结构如下。

  • README.txt
  • zkCleanup.sh
  • zkCli.cmd
  • zkCli.sh
  • zkEnv.cmd
  • zkEnv.sh
  • zkServer.cmd
  • zkServer-initialize.sh
  • zkServer.sh
  • zkSnapshotComparer.cmd
  • zkSnapshotComparer.sh
  • zkSnapShotToolkit.cmd
  • zkSnapShotToolkit.sh
  • zkTxnLogToolkit.cmd
  • zkTxnLogToolkit.sh

我们需要把重点放在我们的加粗文件上,也就是 zkServer.sh。 这个就是我们的核心文件,我们可以通过 start 和 stop 来启动和停止Zookeeper。

# 启动服务
./zkServer.sh start

# 服务启动成功后显示的内容
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/apache-zookeeper-3.8.0-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

# 停止服务
./zkServer.sh stop

# 服务停止后显示的内容
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/apache-zookeeper-3.8.0-bin/bin/../conf/zoo.cfg

至此,安装完成。


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王子良.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值