zoukankan      html  css  js  c++  java
  • 9.1 Dubbo和Zookeeper安装

    转载:https://www.cnblogs.com/hellokuangshen/p/11330606.html

    基础知识

    分布式理论

    什么是分布式系统?

    在《分布式系统原理与范型》一书中有如下定义:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”;

    分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据

    分布式系统(distributed system)是建立在网络之上的软件系统。

    首先需要明确的是,只有当单个节点的处理能力无法满足日益增长的计算、存储任务的时候,且硬件的提升(加内存、加磁盘、使用更好的CPU)高昂到得不偿失的时候,应用程序也不能进一步优化的时候,我们才需要考虑分布式系统。因为,分布式系统要解决的问题本身就是和单机系统一样的,而由于分布式系统多节点、通过网络通信的拓扑结构,会引入很多单机系统没有的问题,为了解决这些问题又会引入更多的机制、协议,带来更多的问题。。。

    Dubbo文档

    随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,急需一个治理系统确保架构有条不紊的演进。

    在Dubbo的官网文档有这样一张图

    单一应用架构

    当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。

    适用于小型网站,小型管理系统,将所有功能都部署到一个功能里,简单易用。

    缺点:

    1、性能扩展比较难

    2、协同开发问题

    3、不利于升级维护

    垂直应用架构

    当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。

    通过切分业务来实现各个模块独立部署,降低了维护和部署的难度,团队各司其职更易管理,性能扩展也更方便,更有针对性。

    缺点: 公用模块无法重复利用,开发性的浪费

    分布式服务架构

    当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。

    流动计算架构

    当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)[ Service Oriented Architecture]是关键

    RPC

    什么是RPC?

    RPC【Remote Procedure Call】是指远程过程调用,是一种进程间通信方式,他是一种技术的思想,而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同。

    也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。为什么要用RPC呢?就是无法在一个进程内,甚至一个计算机内通过本地调用的方式完成的需求,比如不同的系统间的通讯,甚至不同的组织间的通讯,由于计算能力需要横向扩展,需要在多台机器组成的集群上部署应用。RPC就是要像调用本地的函数一样去调远程函数;

    推荐阅读文章:https://www.jianshu.com/p/2accc2840a1b

    RPC基本原理

    步骤解析:

     

    RPC两个核心模块:通讯,序列化。

    Dubbo概念

    什么是dubbo?

    Apache Dubbo |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

    dubbo官网

    1.了解Dubbo的特性

    2.查看官方文档

    dubbo基本概念

    服务提供者Provider:暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提供的服务。

    服务消费者Consumer: 调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

    注册中心Registry:注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者

    监控中心Monitor:服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心

    调用关系说明

    l 服务容器负责启动,加载,运行服务提供者。

    l 服务提供者在启动时,向注册中心注册自己提供的服务。

    l 服务消费者在启动时,向注册中心订阅自己所需的服务。

    l 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

    l 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

    l 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

    Dubbo环境搭建

    点进dubbo官方文档,推荐我们使用Zookeeper 注册中心

    什么是zookeeper呢?可以查看官方文档

    window下安装zookeeper

    1. 下载zookeeper :地址, 我们下载3.4.14 , 最新版! 解压zookeeper

    2. 运行/bin/zkServer.cmd ,初次运行会报错,没有zoo.cfg配置文件;

    可能遇到问题:闪退 !

    解决方案:编辑zkServer.cmd文件末尾添加pause 。这样运行出错就不会退出,会提示错误信息,方便找到原因。

    3. 修改zoo.cfg配置文件

    将conf文件夹下面的zoo_sample.cfg复制一份改名为zoo.cfg即可。

    注意几个重要位置:

    dataDir=./   临时数据存储的目录(可写相对路径)

    clientPort=2181   zookeeper的端口号

    修改完成后再次启动zookeeper

    4.使用zkCli.cmd测试

    ls /:列出zookeeper根下保存的所有节点

    [zk: 127.0.0.1:2181(CONNECTED) 4] ls /
    [zookeeper]

    create –e /kuangshen 123:创建一个kuangshen节点,值为123

     

    get /kuangshen:获取/kuangshen节点的值

    我们再来查看一下节点

    window下安装dubbo-admin

    dubbo本身并不是一个服务软件。它其实就是一个jar包,能够帮你的java程序连接到zookeeper,并利用zookeeper消费、提供服务。

    但是为了让用户更好的管理监控众多的dubbo服务,官方提供了一个可视化的监控程序dubbo-admin,不过这个监控即使不装也不影响使用。

    我们这里来安装一下:

    1. 下载dubbo-admin

    地址 :https://github.com/apache/dubbo-admin/tree/master

    2、解压进入目录

    修改 dubbo-adminsrcmain esources application.properties 指定zookeeper地址

    server.port=7001
    spring.velocity.cache=false
    spring.velocity.charset=UTF-8
    spring.velocity.layout-url=/templates/default.vm
    spring.messages.fallback-to-system-locale=false
    spring.messages.basename=i18n/message
    spring.root.password=root
    spring.guest.password=guest
    
    dubbo.registry.address=zookeeper://127.0.0.1:2181

    3.在项目目录下打包dubbo-admin

    mvn clean package -Dmaven.test.skip=true 

    第一次打包的过程有点慢,需要耐心等待!直到成功!

    4. 执行 dubbo-admin arget 下的dubbo-admin-0.0.1-SNAPSHOT.jar

    java -jar dubbo-admin-0.0.1-SNAPSHOT.jar

    【注意:zookeeper的服务一定要打开!】

    执行完毕,我们去访问一下 http://localhost:7001/ , 这时候我们需要输入登录账户和密码,我们都是默认的root-root;

    登录成功后,查看界面

    安装完成!

    总结

    1.概念

    • zookeeper:注册中心,用于服务的注册

    • Dubbo:监控管理后台,用于查看注册的服务,以及哪些服务被消费了。

    2.zookeeper安装步骤(注意zookeeper的默认端口2181)

    • 下载解压

    • 进入conf目录下复制一份zoo_sample.cfg修改名字为zoo.cfg

    • 进入bin目录双击启动zkServer.cmd,然后在双击启动zkCli.cmd

    • 此时在zkCli.md命令行中输入ls / 看到[zookeeper] 节点

    3.Dubbo安装步骤(注意Dubbo的端口7001)

    • 从github上下载并解压

    • 在解压的dubbo-admin-master目录中使用管理员启动命令行,执行maven命令打包

      mvn clean package -Dmaven.test.skip=true 
    • 打包的文件在dubbo-admin-masterdubbo-admin arget目录下的dubbo-admin-0.0.1-SNAPSHOT.jar

    • 在命令行启动Dubbo: java -jar dubbo-admin-0.0.1-SNAPSHOT.jar 

    • 然后启动zookeeper的zkServer.cmd

    • 在浏览器中输入localhost:7001 用户名和密码都是root进入查看服务

  • 相关阅读:
    周末之个人杂想(十三)
    PowerTip of the DaySorting Multiple Properties
    PowerTip of the DayCreate Remoting Solutions
    PowerTip of the DayAdd Help to Your Functions
    PowerTip of the DayAcessing Function Parameters by Type
    PowerTip of the DayReplace Text in Files
    PowerTip of the DayAdding Extra Information
    PowerTip of the DayPrinting Results
    Win7下IIS 7.5配置SSAS(2008)远程访问
    PowerTip of the DayOpening Current Folder in Explorer
  • 原文地址:https://www.cnblogs.com/zhihaospace/p/12449252.html
Copyright © 2011-2022 走看看