admin 管理员组

文章数量: 887031

【Dubbo】

Dubbo

  • 1、分布式系统中的相关概念
    • 1.2、大型互联网项目架构目标
    • 1.3、集群和分布式
    • 1.4、架构演进
  • 2、Dubbo概述
  • 3、zookeeper
    • 3.1、windows下安装
      • 3.1.1、zookeeper启动
      • 3.1.2、修改端口
    • 3.4、Linux下安装
  • 5、Dubbo + Spring Boot 开发微服务应用
  • 6.dubbo-admin
    • 6.1、下载
    • 6.2、dubbo-admin-server
      • 6.2.1、修改application.properties
      • 6.2.2、mvn打包
      • 6.2.3、启动
    • 6.3、dubbo-admin-ui
      • 6.3.1、修改vue.config.js
      • 6.3.2、 启动
      • 6.3.3、启动出现'vue-cli-service' 不是内部或外部命令,也不是可运行的程序

1、分布式系统中的相关概念

1.2、大型互联网项目架构目标

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

传统项目和互联网项目
传统项目使用的群体是企业员工
互联网项目使用的群体是人民大众
互联网项目特点:

  • 用户多
  • 流量大、并发高
  • 海量数据
  • 易受攻击
  • 功能繁琐
  • 变更快
    衡量网站的性能旨标:
  • 响应时间:指执行一个请求从开始到最后收到响应数据所花费的总体时间。
  • 并发数:指系统同时能处理的请求数量。
    并发连接数:指的是客户端向服务器发起请求,并建立了TCP连接。每秒钟服务器连接的总TCP数量
    请求数:也称为QPS(Query Per Second)指每秒多少请求.
    并发用户数:单位时间内有多少用户
  • 吞吐量:指单位时间内系统能处理的请求数量。
    QPS: Query Per Second每秒查询数。
    TPS: Transactions Per Second每秒事务数。 一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
    QPS>=并发连接数>= TPS

1.3、集群和分布式

  • 集群:很多“人”一起,干一样的事。一个业务模块,部署在多台服务器上。

  • 分布式:很多“人”一起,千不一样的事。这些不一样的事,合起来是一件大事。一个大的业务系统,拆分为小的业务模块,分别部署在不同的机器上。

1.4、架构演进


单体架构
只需要一个应用,将所有功能代码都部署在一起就可以
垂直架构
垂直架构是指将单体架构中的多个模块拆分为多个独立的项目。形成多个独立的单体架构互不影响。
单体架构存在的问题:
项目启动慢、可靠性、差可伸缩性差、扩展性和可维护性差、性能低。

2、Dubbo概述

  • Dubbo是阿里巴巴公司开源的一个高性能、轻量级的Java RPC框架。
  • 致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案,
  • Provider:暴露服务的服务提供方
  • Contaiser:服务运行容器
  • Consumer:调用远程服务的服务消费方
  • Registry:服务注册与发现的注册中心
  • Monitor:统计服务的调用次数和调用时间的监控中心
    为什么需要Dubbo

    按照微服务架构的定义,采用它的组织能够很好的提高业务迭代效率与系统稳定性,但前提是要先能保证微服务按照期望的方式运行,要做到这一点需要解决服务拆分与定义、数据通信、地址发现、流量管理、数据一致性、系统容错能力等一系列问题。

Dubbo 可以帮助解决如下微服务实践问题:

  • 微服务编程范式和工具
    Dubbo 支持基于 IDL 或语言特定方式的服务定义,提供多种形式的服务调用形式(如同步、异步、流式等)

  • 高性能的 RPC 通信
    Dubbo 帮助解决微服务组件之间的通信问题,提供了基于 HTTP、HTTP/2、TCP 等的多种高性能通信协议实现,并支持序列化协议扩展,在实现上解决网络连接管理、数据传输等基础问题。

  • 微服务监控与治理
    Dubbo 官方提供的服务发现、动态配置、负载均衡、流量路由等基础组件可以很好的帮助解决微服务基础实践的问题。除此之外,您还可以用 Admin 控制台监控微服务状态,通过周边生态完成限流降级、数据一致性、链路追踪等能力。

  • 负载均衡

  • 部署在多种环境
    Dubbo 服务可以直接部署在容器、Kubernetes、Service Mesh等多种架构下。

  • 活跃的社区
    Dubbo 项目托管在 Apache 社区,有来自国际、国内的活跃贡献者维护着超 10 个生态项目,贡献者包括来自海外、阿里巴巴、工商银行、携程、蚂蚁、腾讯等知名企业技术专家,确保 Dubbo 及时解决项目缺陷、需求及安全漏洞,跟进业界最新技术发展趋势。

  • 庞大的用户群体
    Dubbo3 已在阿里巴巴成功取代 HSF 框架实现全面落地,成为阿里集团面向云原生时代的统一服务框架,庞大的用户群体是 Dubbo 保持稳定性、需求来源、先进性的基础。

3、zookeeper

3.1、windows下安装

注册中心参考手册
下载地址:/




拷贝一份zoo_sample.cfg,命名为zoo.cfg

配置存放data和log的文件夹(dataDir dataLogDir)log非必须

配置文件说明

  • tickTime
    时长单位为毫秒,为zk使用的基本时间度量单位。例如,1000ms是客户端与zk服务端的心跳时间,2000ms是客户端会话的超时时间。
    tickTime的默认值为2000毫秒,更低的tickTime值可以更快地发现超时问题,但也会导致更高的网络流量(心跳消息)和更高的CPU使用率(会话的跟踪处理)。
  • clientPort
    zk服务进程监听的TCP端口,默认情况下,服务端会监听2181端口。
  • dataDir(默认是Linux目录结构)
    无默认配置,必须配置,用于配置存储快照文件的目录。如果没有配置dataLogDir,那么事务日志也会存储在此目录。

3.1.1、zookeeper启动

bin/zkServer.cmd启动


bin/zkCli.cmd查看是否启动成功

3.1.2、修改端口


启动
这里显示9001,说明启动成功

注意:端口修改后启动zkCli.cmd会报错,原因是zkCli.cmd默认端口还是2181

解决方案

zkCli.cmd -server localhost:9001

3.4、Linux下安装

注册中心参考手册
下载地址:/


1.

1.加压tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz

解压成功会出现该文件夹

2.进入apache-zookeeper-3.8.0-bin,创建zkdata,zklog
mkdir -p zkdata zklog

  1. 进入conf,拷贝zoo_sample.cfg为zoo.cfg。cp zoo_sample.cfg zoo.cfg

4.编辑zoo.cfg
dataDir=…/zkdate
dataLogDir=…/zklog
clientPort=8881 zookeeper端口
admin.serverPort=7001 避免出现占用

5.zookeeper启动
进入到bin目录
执行./zkServer.sh start

启动zkCli.sh,执行./zkCli.sh -server 192.168.127.129:8881
192.168.127.129为当前ip,8881是zoo.cnf里的clientPort=8881

6.停止zkServer.sh和zkCli.sh
执行./zkServer.sh stop

执行 ./zkCli.sh stop

5、Dubbo + Spring Boot 开发微服务应用

/

6.dubbo-admin

6.1、下载

.4.0

6.2、dubbo-admin-server

6.2.1、修改application.properties

6.2.2、mvn打包

首先确保maven环境遍历配置正确,maven库有dubbo-server需要的jar包

mvn package

6.2.3、启动

注意:启动之前zookeeper要先启动

6.3、dubbo-admin-ui

6.3.1、修改vue.config.js

6.3.2、 启动

dubbo-admin-ui是vue脚手架,启动需要node.js,要先安装node.js。node -v出现版本信息则说明安装有node.js

npm run dev启动


初始账号密码都是root

6.3.3、启动出现’vue-cli-service’ 不是内部或外部命令,也不是可运行的程序

执行npm i --legacy-peer-deps
如果不行npm i --legacy-peer-deps

本文标签: dubbo