初识dubbo

dubbo配置

Windows系统下,单机配置。

配置环境

JDK:java的开发环境
Maven:项目管理工具
Tomcat:java发布的Web 应用服务器
zookeeper:注册中心,分布式协调服务组件
Dubbo-Admin:dubbo的管理平台
idea:java的开发工具

JDK1.8

1、官网下载JDK1.8,解压安装
2、进行环境变量配置:
a、新建 JAVA_HOME ,JAVA_HOME=D:\Java\jdk1.8.0_25(jdk的安装位置)
b、修改 path ,在path变量尾部添加%JAVA_HOME%\bin
c、新建 classpath, classpath=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\tools.jar
3、在cmd中验证java是否安装成功。(java –version,javac)

Maven

1、官网下载maven.zip并解压
2、进行环境变量配置
a、新建 MAVEN_HOME 变量值为解压路径:D:\idea\apache-maven-3.6.0(maven的安装位置)
b、在系统变量Path中添加变量值:;%MAVEN_HOME%\bin
3、在cmd中验证maven是否安装成功。(mvn –version)
4、配置maven的本地仓库
打开maven安装目录下的conf文件中的settings文件,更改为本地仓库地址,如下图;
在这里插入图片描述

Tomcat

1、在官网上下载,解压即可。
2、bin下的startup打开Tomcat,shutdown关闭Tomcat
3、为避免与zookeeper端口号冲突,可在conf的service.xml中改变HTTP的端口号
在这里插入图片描述

Zookeeper

单机
1、在官网上下载,解压
2、修改conf目录下zoo_sample.cfg文件名为zoo.cfg
3、bin目录下启动zkServer.cmd即可
4、可用bin目录下的zkCli.cmd连接测试是否已启动
集群
1、分别命名三个文件夹zookeeper1、zookeeper2、zookeeper3,每个文件夹都新建一个data和log文件夹,分别盛放解压后的zookeeper。
2、三个文件夹都修改conf目录下zoo_sample.cfg文件名为zoo.cfg
3、在每个data文件夹cmd,echo 1 > myid,新建一个myid文件并分别写入1,2,3.
4、修改每个zookeeper文件下zoo.cfg的配置,

dataDir=D:\\idea\\zookeeper\\zookeeper1\\data
dataLogDir=D:\\idea\\zookeeper\\zookeeper1\\log
#the port at which the clients will connect
 clientPort=2181
 server.1=127.0.0.1:2016:2006
 server.2=127.0.0.1:2017:2007
 server.3=127.0.0.1:2018:2008

配置时data和log的位置需做相应改变,clientPort分别配置为2181,2182,2183.
5、分别启动三个zkserver,可在cmd中输入jps验证是否配置成功。
在这里插入图片描述

Dubbo-Admin

1、在GitHub上下载dubbo-2.5.8源码。
2、找到其中的dubbo-admin文件夹,在该地址栏运行cmd,执行mvn package –Dmaven.skip.test=true,将其打包为war包。
3、将target下的dubbo-admin-2.5.8.war 取出,放入tomcat的webapps下,运行tomcat即可解压。
4、进入dubbo-admin-2.5.8/WEB-INF/目录下的dubbo-properties,修改zookeeper的地址为本计算机的主机地址
5、打开访问地址:http://localhost:8088/dubbo-admin-2.5.8/

Idea中新建工程及配置环境

1、官网下载idea并安装
2、新建一个webapp工程,在idea中选择File-New-Project,选择左边Maven,选择本地安装的jdk环境
3、打开file->setting ->Build,Execution,Deployment->Build Tools->Maven 配置
4、打开run->Debug Configurations,点击左上角的加号,选择tomcat service->local并配置

dubbo实例运行

参见文章https://blog.csdn.net/heni6560/article/details/81171554
运行之后可打开zk文件夹下的bin下的zkcli,输入ls /、ls /dubbo…一步步查看consumers和producter的详细信息。

认识dubbo

Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。
Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

dubbo框架

dubbo框架dubbo框架分为服务层、配置层、代理层、注册层、集群层、监控层、协议层等。大致流程为,当服务端启动时配置文件的内容被解析,生成本地存根Invoker,在注册中心注册服务信息。当消费者启动时,其配置文件内容也被解析,生成消费者的本地存根Proxy,并在注册中心订阅服务信息,当它监听到自己要的服务时,会形成一个服务器的列表,Proxy被Invoker调用,进入集群层,通过一定的路由规则筛选出最合适的服务器地址。然后在进行真正的RPC之前,Invoker被filter调用,向监控中心写入当前时间,便于监控中心计算调用服务的时间和次数,在进行dubbo协议的传输之前,还可以设置延时,即到一定时间如果没有调用到服务也返回结果,避免过长时间占用线程池中的线程,另外在filter没有rpc之前,还可以进行服务治理;最终通过一些更加底层的通信操作,调用服务端的本地存根,从而完成了服务的调用。(很多地方理解不是特别清晰,有错误,后续需要再改和补充)

question1:服务提供者可以配置群集容错吗?
<dubbo:service cluster=“failsafe”>
<dubbo:reference cluster=“failsafe”>
服务发布的时候,可以指定服务的集群容错策略。消费者可以覆盖服务提供者的通用配置,实现个性化的容错策略。

服务治理

服务治理主要作用是改变运行时服务的行为和选址逻辑,达到限流,权重配置等目的。
条件路由
标签路由规则(蓝绿部署、灰度发布)
配置规则
(禁用提供者;
调整权重:改变服务端的权重,更大的权重会有更大的几率被客户端选中作为服务提供者,从而达到流量分配的目的;
调整负载均衡策略:调整客户端的选址逻辑;
服务降级。)
(蓝绿部署是最常见的一种不需要停机的部署方式,是一种以可预测的方式发布应用的技术,目的是减少发布过程中服务停止的时间。蓝绿部署原理上很简单,就是通过冗余来解决问题。通常生产环境需要两组配置(蓝绿配置),一组是active的生产环境的配置(绿配置),一组是inactive的配置(蓝绿配置)。用户访问的时候,只会让用户访问active的服务器集群。在绿色环境(active)运行当前生产环境中的应用,也就是旧版本应用version1。当你想要升级到version2 ,在蓝色环境(inactive)中进行操作,即部署新版本应用,并进行测试。如果测试没问题,就可以把负载均衡器/反向代理/路由指向蓝色环境了。随后需要监测新版本应用,也就是version2 是否有故障和异常。如果运行良好,就可以删除version1 使用的资源。如果运行出现了问题,可以通过负载均衡器指向快速回滚到绿色环境。
灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。)

zookeeper集群

qustion 1 :zookeeper集群中任意一台或几台宕掉后,会发生什么?
首先明确zookeeper集群的选leader的选举流程:假如集群中有三台zookeeper,编号为1,2,3。首先集群中选leader,1号投自己一票,然后2号也投自己一票,1号和2号之间进行信息交互,对比数据ID谁更大,大者将会获得两票,因为两票是大于集群数的一半,因此该zk被选为leader。
由此可得知,zk集群能宕掉的数量是有规定的,例如集群为3台,可最多宕掉1台;集群为5台,可最多宕掉两台。(脑裂的问题,如果5台集群宕掉1台,不就是偶数台,那么会不会产生脑裂的问题?)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值