Dubbo:分布式系统中的相关概念,服务提供者,服务消费者,dubbo高级特性

本文介绍了分布式系统中的相关概念,包括互联网项目架构、集群和分布式的特点。详细阐述了Dubbo的核心概念,如RPC、服务提供者和服务消费者,并探讨了Dubbo的高级特性,如监控中心、序列化、地址缓存、超时、重试、多版本以及负载均衡等。通过案例分析,帮助读者掌握如何在实际项目中应用Dubbo。
摘要由CSDN通过智能技术生成

知识点梳理

课堂讲义

 

2-分布式系统中的相关概念

2.1-互联网项目架构

2.1.1 传统项目和互联网项目

 

 

传统项目:学校的选课系统,图书借阅系统,OA自动化办公系统,HR人力资源管理系统等

互联网项目对用户体验要求更高,从以下几个方面来衡量:

  • 美观

  • 功能

  • 速度

  • 稳定性

两大区别:

  • 用户群体:传统项目针对特定群体,比如公司员工、学校师生等;互联网项目针对所有网民

  • 用户体验:互联网项目对用户体验要求更高

 

2.1.2 互联网项目架构-特点

从微信,支付宝来看:

  1. 用户多

  2. 流量大,并发高

  3. 海量数据

  4. 易受攻击

  5. 功能繁琐

  6. 需求变更快

     

2.2-互联网项目架构的六大目标

  • 1.高性能:提供快速的访问体验。
      衡量网站的性能指标:

    • 响应时间:指执行一个请求从开始到最后收到响应数据所花费的总体时间

    • 并发数:指一瞬间系统同时处理请求的数量。 

      • 并发连接数: 指的是客户端向服务器发起请求,并建立了TCP连接。并发连接数就是指同一秒钟客户端金额服务器总的TCP连接数量

      • 请求数:也称为QPS(Query Per Second)指每秒有多少个请求。
        一个请求建立连接后可能会被复用不断开, 一直连着服务器,等待服务器的响应   
        so: 请求数>=并发连接数>= 事务数    浏览器F12可查看请求数   

      • 并发用户数:同时访问的用户数

    • 吞吐量:一段时间内系统能处理请求的数量。<该路段一天最多能通过的车辆数量>

      • QPS: Query Per Second 每秒查询数()

      • TPS: Transactions Per Second每秒事务数。< TPS = 并发数/平均响应时间>

      • 一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。
        打开网页加载完成就是一个事务

  • 2.高可用:网站服务一直可以正常访问。

  • 3.可伸缩:通过硬件增加/减少,提高/降低处理能力。<方便增减配置>

  • 4.高可扩展:系统间耦合低,方便的通过新增/移除方式,增加/减少功能/模块。

  • 5.安全性:提供网站安全访问和数据加密,安全存储等策略。

  • 6.敏捷性:随需应变,快速响应。(及时发现需求,快速上线项目)

2.3-集群和分布式(重点)

2.3.1 集群和分布式概念

 

 

  • 集群:很多“人”一起 ,干一样的事。

    软件领域:一个软件,部署在多台服务器上。

     

     

  • 分布式:很多“人”一起干不一样的事,分工合作,就像工厂的流水线。这些不一样的事,合起来是一件大事。

    软件领域:一个大的业务系统,拆分为小的业务模块,分别部署在不同的机器上

     

     

2.3.2 项目应用

1. 原始项目

 

 

 

 

 

2. 集群项目

负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。

访问淘宝时,根据用户所在地区跳转到不同的机房,提高响应速度,降低单个地区服务器的压力。

 

 

3. 集群分布式项目

淘宝购物:浏览商品(商品模块)是高频操作,相对而言下订单(订单模块)是低频操作

 

 

 

2.4-架构演进-视频05

2.4.1 单体架构

 

 

架构说明:全部功能集中在一个项目内(All in one)。

优点: 简单,开发部署都很方便,小型项目首选

缺点:

  • 项目启动慢

  • 可靠性差 <有一个挂了,其它都跟着挂>

  • 可伸缩性差

  • 扩展性和可维护性差

  • 性能低 <一个服务器部署了abcd4个服务,肯定没有一个服务器只部署一个的单机处理性能高>

 

2.4.2 垂直架构 <在某一个领域进行细分就是垂直>

垂直架构是指将单体架构中的多个模块拆分为多个独立的项目,形成多个独立的单体架构。

 

 

架构说明:按照业务进行切割,形成小的单体项目。

架构优点:解决了单体架构的缺点,并且技术栈可扩展(不同的系统可以用不同的编程语言编写)。

架构缺点:项目之间功能冗余、数据冗余、耦合性强。 <项目间相互独立,功能会重复>

 

2.4.3 分布式架构

分布式架构是指在垂直架构的基础上,将公共业务模块抽取出来,作为独立的服务供其他调用者消费,以实现服务的共享和重用。
 <把模块间重复的功能抽出来,app1和app2分别去调用e这个重复的功能就可以了>

什么是RPC?

RPC全称为remote procedure call,即远程过程调用。比如两台服务器A和B,A服务器上部署一个应用,B服务器上部署一个应用,A服务器上的应用想调用B服务器上的应用提供的方法,由于两个应用不在同一台服务器,所以需要使用网络进行访问。

需要注意的是RPC并不是一个具体的技术,而是指整个网络远程调用过程。

分布式架构存在的问题: 服务提供方的IP或者端口一旦变了所有调用他的模块都需要变

<因为分布式架构存在的问题,服务方需要管理,SOA就应运而生了>

2.4.4 SOA架构 

SOA: (Service- Oriented Architecture,面向服务的架构):是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。举例:课表

ESB: (Enterparise Servce Bus):企业服务总线,服务中介。主要是提供了一个服务于服务之间的交互。ESB包含的功能如:负载均衡,流量控制,加密处理,服务的监控,异常处理,监控告急等等。<ESB理解成一个中介,要服务就要通过中介来调用>

 

 

架构说明:将重复功能或模块抽取成组件的形式,对外提供服务,在项目与服务之间使用ESB(企业服务总线)的形式作为通信的桥梁。

<微服务架构SOA架构基本上是一回事>

2.4.5 微服务架构

  • 微服务架构是在SOA上做的升华,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的单个 业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。

  • 微服务架构= 80%的SOA服务架构思想+ 100%的组件化架构思想+ 80%的领域建模思想

 

 

架构说明:

  • 将系统服务层完全独立出来,抽取为一个一个的微服务。

  • 抽取的粒度更细,遵循单一原则。

  • 如下是一个电子商城使用微服务架构后拆分出来的各个模块

 

 

特点:

  • 服务实现组件化:开发者可以自由选择开发技术,每个微服务可以使用不同语言进行开发,也不需要协调其他团队

  • 服务之间交互一般使用HTTP REST风格开发

  • 去中心化:每个微服务有自己单独的数据库来保存业务数据

  • 自动化部署:把应用拆分成为一 个个独立的单个服务,方便自动化部署、测试、运维
    <a可以不和b交互我也可以自己自己部署和测试>

总结:有了微服务,我们部署运维都很方便

 

2.4.6 架构演进

 

 

3-dubbo 概述-视频06

3.1 什么是RPC

RPC全称为remote procedure call,即远程过程调用。比如两台服务器A和B,A服务器上部署一个应用,B服务器上部署一个应用,A服务器上的应用想调用B服务器上的应用提供的方法,由于两个应用不在同一台服务器,所以需要使用网络进行访问。

需要注意的是RPC并不是一个具体的技术,而是指整个网络远程调用过程。

3.2 Dubbo概念

●Dubbo是阿里巴巴公司开源的一个高性能、轻量级的Java RPC框架。

●致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。

●官网: http://dubbo.apache.org/zh-cn/

 

 

节点角色说明:

●Container: 服务运行容器;学校

●Provider: 暴露服务的服务提供方;自习室

●Consumer: 调用远程服务的服务消费方;学员

●Registry: 服务注册与发现的注册中心;电子黑板

●Monitor:统计服务的调用次数和调用时间的监控中心;统计每天自习室人数

 

3.3 注册中心

Dubbo不能单独使用,需要配套的服务注册与发现的注册中心,常用的注册中心是Zookeeper,Nacos(阿里)

 

3.4 支持的协议

  • Dubbo协议

  • HTTP协议

  • Redis协议

  • WebService协议

  • RMI协议

  • Hessian协议

  • Thrift协议

  • Memcached协议

4-dubbo快速入门

4.1 Zookeeper安装-视频07

Windows

1.运行服务端

  1. 打开cmd窗口,执行java -version

    复制代码

    java -version
    ​
    #java version "1.8.0_201"
    #Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
    #Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
    ​
    #确保正常输出JDK版本号
    ​
    #如果报错,则设置环境变量JAVA_HOME
    ​
    #设置完成后,检测是否成功
    echo %JAVA_HOME%
    #C:\Program Files\Java\jdk1.8.0_201\
    ​
    #确保后边不能有分号(;)

    复制代码

     

  2. 解压apache-zookeeper-3.5.6-bin.tar,双击运行apache-zookeeper-3.5.6-bin\bin\zkServer.cmd

 

Li

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值