Day23 分布式 Dubbo Zookeeper
uwupu 啦啦啦啦啦

分布式

分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统

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

场景

  • 只有当单个节点的处理能力无法满足日益增长的计算、存储任务的时候,
  • 硬件的提升高昂到得不偿失的时候、
  • 应用程序也不能进一步优化的时候,需要考虑分布式系统

架构的发展

单一应用框架

image

当网站流量很小时,只需要一个应用,将所有功能部署在一起,以减少部署节点和成本;

此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。

适用于小型网站,小型管理系统;

缺点:

  1. 性能扩展难;
  2. 协同开发问题
  3. 不利于升级维护

垂直应用架构

image

将应用拆成互不相干的几个应用,以提升效率;

此时,用于加速前端页面开发的Web框架(MVC)是关键。

优点:通过切分业务来实现各个模块的独立部署,降低了维护和部署的难度,团队各司其职容易管理,性能扩展更加方便;

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

分布式服务架构

image

当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快的响应多变的市场需求。

此时,提升分布式服务框架(RPC)是关键。

流动计算架构

image

增加一个调度中心基于访问压力实时管理集群容量,提高集群的利用率。

此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。

RPC

Remote Procedure Call

  • RPC,远程过程调用,是进程间的通信方式。

  • 是一种思想,而不是规范。

  • 允许程序调用另一个地址空间(通常是共享网络的另一个机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。RPC允许像调用本地方法一样调用远程方法;

image

RPC两个核心模块:通信、序列化。

序列化:数据传输需要转换;

Dubbo

Apache Dubbo 是一个高性能的基于Java的开源RPC框架

https://dubbo.apache.org/

三大核心能力

  1. 面向接口的远程方法调用;
  2. 智能容错和负载均衡;
  3. 服务自动注册和发现。

Dubbo结构图

image

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

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

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

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

ZooKeeper

  • ZooKeeper是一个分布式的,开放源代码的分布式应用程序协调服务

  • 是一个为分布式应用提供一致性服务的软件,功能包括:配置维护、域名服务、分布式同步、组服务等。

  • 是Hadoop和Hbase的重要组件。

第一次运行Zookeeper

到北京理工大学镜像站下载Zookeeper软件:https://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.8.0/

(带bin为可执行程序,不带bin为源代码+可执行程序)

  1. 到conf目录下,将zoo_sample.cfg复制一份,名为zoo.cfg;
  2. 到bin目录下:
    • zkServer:Zookeeper的服务端程序,(Windows以管理员身份)打开即可开启服务;
    • zkCli:Zookeeper的测试用的客户端程序。

Dubbo-admin

是Dubbo的一个监控管理后台

可以查看注册了哪些服务,哪些服务被消费了。

一个Maven项目。

下载使用

https://mirror.bit.edu.cn/apache/dubbo/dubbo-admin/0.4.0/

https://github.com/apache/dubbo-admin

  1. 解压;

  2. mvn clean package -Dmaven.test.skip=true 将项目打包。也可直接下载打包好的直接运行;

  3. 使用java -jar 文件名 运行。

一些要注意的地方

Dubbo服务默认启用一个AdminServer端口为8080;

Dubbo-admin的默认端口也是8080。

若在同一台主机上使用,可能会出现端口占用。需要修改其中一个端口解决问题。

Dubbo的AdminServer服务端口修改:

  • zoo.cfg

    1
    admin.serverPort=8888

Dubbo-admin端口修改:

  • application.properties

    1
    server.port=8081
 评论