dubbo
分布式系统中的相关概念
dubbo 概述
dubbo快速入门
dubbo的高级特性
2-相关概念
2.1-互联网项目架构-特点
互联网项目架构-特点
-
用户多
-
流量大,并发高
-
海量数据
-
易受攻击
-
功能繁琐
-
变更快
传统项目和互联网项目的不同
用户体验:
美观、功能、速度、稳定性
衡量一个网站速度是否快:
打开一个新页面一瞬间完成;页面内跳转,-刹那间完成。
根据佛经《僧衹律》记载:一 刹那者为-念,二十念为-瞬,二十瞬为-弹
指,二十弹指为-罗预, 二十罗预为-须臾,一日一夜有三十须臾。
2.2-互联网项目架构-目标
衡量网站的性能指标:
**响应时间:**指执行一个请求从开始到最后收到响应数据所花费的总体时间。
**并发数:**指系统同时能处理的请求数量。
**并发连接数:** 指的是客户端向服务器发起请求,并建立了TCP连接。每秒钟服务器连接的总TCP数量
**请求数:**也称为QPS(Query Per Second)指每秒多少请求.
**并发用户数:**单位时间内有多少用户
**吞吐量:**指单位时间内系统能处理的请求数量。
●QPS: Query Per Second每秒查询数。
●TPS: Transactions Per Second每秒事务数。
●一个事务是指一 个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束
计时,以此来计算使用的时间和完成的事务个数。
●一个页面的一次访问,只会形成一 个TPS; 但-次页面请求,可能产生多次对服务器的请求,就会有多个QPS
QPS>=并发连接数>= TPS
大型互联网项目架构目标:
●高性能:提供快速的访问体验。 ●高可用:网站服务- 可以正常访问
2.3-集群和分布式
集群和分布式,●集群:很多“人”一起,干一样的事。●一个业务模块,部署在多台服务器上。●分布式:很多"人”一起,干不样的事。这些不一样的事, 合起来是一件大事。
2.4-架构演进
单体架构:
优点:
简单:开发部署都很方便,小型项目首选
缺点:●项目启动慢●可靠性差
垂直架构:垂直架构是指将单体架构中的多个模块拆分为多个独立的项目。形成多个独立的单体架构。
单体架构存在的问题:
-
项目启动慢
-
可靠性差
-
可伸缩性差
-
扩展性和可维护性差
-
性能低
垂直架构存在的问题: 重复功能太多
分布式架构:是指在垂直架构的基础上,将公共业务模块抽取出来,作为独立的服务供其他调用者消费,以实现服务的共享和重用。底层通过RPC(远程过程调用实现)
**RPC:** Remote Procedure Call远程过程调用。有非常多的协议和技术来都实现了RPC的过程。比如: HTTP REST风格,Java RMI规范、WebService SOAP协议Hession等等。
垂直架构存在的问题:
●重复功能太多
分布式架构存在的问题: ●服务提供方- -旦产生变更,所有消费方都需要变更。
SOA: (Service- Oriented Architecture,面向服务的架构):是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。
ESB: (Enterparise Servce Bus):企业服务总线,服务中介。主要是提供了一一个服务于服务之间的交互。ESB包含的功能如:负载均衡,流量控制,加密处理,服务的监控,异常处理,监控告急等等。
微服务架构:
●微服务架构是在SOA上做的升华,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。
●微服务架构= 80%的SOA服务架构思想+ 100%的组件化架构思想+ 80%的领域建模思想
特点:●服务实现组件化:开发者可以自由选择开发技术。也不需要协调其他团队●服务之间交互一 般使用REST API●去中心化:每个微服务有自己私有的数据库持久化业务数据●自动化部署:把应用拆分成为一 个-个独立的单个服务,方便自动化部署、测试、运维
3-dubbo 概述
Dubbo概念
●Dubbo是阿里巴巴公司开源的一个高性能、轻量级的Java RPC框架。●致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。●官网: htp://ubbo.apache.orgo
节点角色说明: .●Provider: 暴露服务的服务提供方●Contahier: 服务运行容器●Consumer: 调用远程服务的服务消费方●Registry: 服务注册与发现的注册中心●Monitor:统计服务的调用次数和调用时间的监控中心
4-dubbo快速入门
4.1zookeeper安装
安装步骤:
第一步:安装 jdk(略)第二步:把 zookeeper 的压缩包(zookeeper-3.4.6.tar.gz)上传到 linux 系统第三步:解压缩压缩包
tar -zxvf zookeeper-3.4.6.tar.gz
第四步:进入zookeeper-3.4.6目录,创建data目录
mkdir data
第五步:进入conf目录 ,把zoo_sample.cfg 改名为zoo.cfg
cd conf
mv zoo_sample.cfg zoo.cfg
第六步:打开zoo.cfg文件, 修改data属性:
dataDir=/root/zookeeper-3.4.6/data
进入Zookeeper的bin目录,启动服务命令
./zkServer.sh start
停止服务命令
./zkServer.sh stop
查看服务状态:standalone 单节点
./zkServer.sh status
4.2spring和springmvc整合
实施步骤:
1.创建服务提供者Provider模块2.创建服务消费者Consumer模块3.在服务提供者模块编写UserServicelmpl提供服务4.在服务消费者中的UserC ontroller远程调用5.UserServicelmpl提供的服务6.分别启动两个服务,测试
Dubbo作为一个RPC框架,其最核心的功能就是要实现跨网络的远程调用。本小节就是要创建两个应用,一个作为服务的提供方,一个作为服务的消费方。通过Dubbo来实现服务消费方远程调用服务提供方的方法。
1 服务提供方开发
开发步骤:
(1)创建maven工程(打包方式为war)dubbodemo_provider,在pom.xml文件中导入如下坐标
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<spring.version>5.0.5.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- dubbo相关 -->