版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 使用SpringBoot与Dubbo搭建分布式服务指南目 录 TOC o 1-3 h z u HYPERLINK l _Toc533503698 一、概念准备 PAGEREF _Toc533503698 h 4 HYPERLINK l _Toc533503699 什么是分布式? PAGEREF _Toc533503699 h 4 HYPERLINK l _Toc533503700 什么是 Duboo? PAGEREF _Toc533503700 h 4 HYPERLINK l _Toc533503701 Dubbo 架构 PAGEREF _Toc533503701 h 5 HYPERLINK
2、 l _Toc533503702 什么是 RPC? PAGEREF _Toc533503702 h 6 HYPERLINK l _Toc533503703 为什么要用 Dubbo? PAGEREF _Toc533503703 h 7 HYPERLINK l _Toc533503704 二、开始实战 1 :zookeeper 环境安装搭建 PAGEREF _Toc533503704 h 7 HYPERLINK l _Toc533503705 1. 下载 PAGEREF _Toc533503705 h 7 HYPERLINK l _Toc533503706 2. 解压 PAGEREF _Toc53
3、3503706 h 8 HYPERLINK l _Toc533503707 3. 进入zookeeper目录,创建data文件夹。 PAGEREF _Toc533503707 h 9 HYPERLINK l _Toc533503708 4. 进入/zookeeper/conf目录下,复制zoo_sample.cfg,命名为zoo.cfg PAGEREF _Toc533503708 h 9 HYPERLINK l _Toc533503709 5. 修改配置文件 PAGEREF _Toc533503709 h 9 HYPERLINK l _Toc533503710 6. 启动测试 PAGEREF
4、_Toc533503710 h 10 HYPERLINK l _Toc533503711 三、开始实战 2 :实现服务接口 dubbo-interface PAGEREF _Toc533503711 h 12 HYPERLINK l _Toc533503712 1. dubbo-interface 项目创建 PAGEREF _Toc533503712 h 13 HYPERLINK l _Toc533503713 2. 创建接口类 PAGEREF _Toc533503713 h 15 HYPERLINK l _Toc533503714 3. 将项目打成 jar 包供其他项目使用 PAGEREF
5、_Toc533503714 h 16 HYPERLINK l _Toc533503715 四、开始实战 3 :实现服务提供者 dubbo-provider PAGEREF _Toc533503715 h 16 HYPERLINK l _Toc533503716 1. dubbo-provider 项目创建 PAGEREF _Toc533503716 h 17 HYPERLINK l _Toc533503717 2. pom 文件引入相关依赖 PAGEREF _Toc533503717 h 18 HYPERLINK l _Toc533503718 3. 在 perties 配置文件中配置 dub
6、bo 相关信息 PAGEREF _Toc533503718 h 19 HYPERLINK l _Toc533503719 4. 实现接口 PAGEREF _Toc533503719 h 20 HYPERLINK l _Toc533503720 5. 服务提供者启动类编写 PAGEREF _Toc533503720 h 20 HYPERLINK l _Toc533503721 五、开始实战 4 :实现服务消费者 dubbo-consumer PAGEREF _Toc533503721 h 21 HYPERLINK l _Toc533503722 4. 编写一个简单 Controller 调用远程
7、服务 PAGEREF _Toc533503722 h 22 HYPERLINK l _Toc533503723 5. 服务消费者启动类编写 PAGEREF _Toc533503723 h 23 HYPERLINK l _Toc533503724 6. 测试效果 PAGEREF _Toc533503724 h 24使用 SpringBoot+Dubbo 搭建一个简单分布式服务 概念准备开始实战之前,我们先来简单的了解一下这样几个概念:Dubbo、RPC、分布式、由于本文的目的是带大家使用SpringBoot+Dubbo 搭建一个简单的分布式服务,所以这些概念我只会简单给大家普及一下,不会做深入探
8、究。什么是分布式?分布式或者说 SOA 分布式重要的就是面向服务,说简单的分布式就是我们把整个系统拆分成不同的服务然后将这些服务放在不同的服务器上减轻单体服务的压力提高并发量和性能。比如电商系统可以简单地拆分成订单系统、商品系统、登录系统等等。我们可以使用 Dubbo作为分布式系统的桥梁,那么什么是 Dubbo 呢?什么是 Duboo?Apache Dubbo (incubating) |db| 是一款高性能、轻量级的开源Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。简单来说 Dubbo 是一个分布式服务框架,致力于提供高性能
9、和透明化的RPC远程服务调用方案,以及SOA服务治理方案。Dubbo 目前已经有接近 23k 的 Star ,Dubbo的Github 地址:/apache/incubator-dubbo。另外,在开源中国举行的2018年度最受欢迎中国开源软件这个活动的评选中,Dubbo 更是凭借其超高人气仅次于 vue.js 和 ECharts 获得第三名的好成绩。Dubbo 是由阿里开源,后来加入了 Apache 。正式由于 Dubbo 的出现,才使得越来越多的公司开始使用以及接受分布式架构。下面我们简单地来看一下 Dubbo 的架构,加深对 Dubbo 的理解。Dubbo 架构下面我们再来看看 Dubb
10、o 的架构,我们后面会使用 zookeeper 作为注册中心,这也是 Dubbo 官方推荐的一种方式。Dubbo 架构上述节点简单说明:Provider暴露服务的服务提供方Consumer调用远程服务的服务消费方Registry服务注册与发现的注册中心Monitor统计服务的调用次数和调用时间的监控中心Container服务运行容器调用关系说明:服务容器负责启动,加载,运行服务提供者。服务提供者在启动时,向注册中心注册自己提供的服务。服务消费者在启动时,向注册中心订阅自己所需的服务。注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。服务消费者,从提供
11、者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。我们在讲 Dubbo 的时候提到了 Dubbo 实际上是一款 RPC 框架,那么RPC 究竟是什么呢?相信看了下面我对 RPC 的介绍你就明白了!什么是 RPC?RPC(Remote Procedure Call)远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。比如两个不同的服务A,B部署在两台不同的机器上,那么服务 A 如果想要调用服务 B 中的某个方法该怎么办呢?使用 HTT
12、P请求 当然可以,但是可能会比较慢而且一些优化做的并不好。 RPC 的出现就是为了解决这个问题。为什么要用 Dubbo?如果你要开发分布式程序,你也可以直接基于 HTTP 接口进行通信,但是为什么要用 Dubbo呢?我觉得主要可以从 Dubbo 提供的下面四点特性来说为什么要用 Dubbo:负载均衡同一个服务部署在不同的机器时该调用那一台机器上的服务服务调用链路生成服务之间互相是如何调用的服务访问压力以及时长统计当前系统的压力主要在哪里,如何来扩容和优化服务降级某个服务挂掉之后调用备用服务开始实战 1 :zookeeper 环境安装搭建我使用的是 CentOS 7.4 阿里云服务器,注意:如果
13、你也同样阿里云服务器必须配置一个安全组,不然你的应用程序会无法访问你的 zookeeper 服务器,这一点我在后面也提到了。另外,要注意在安装 zookeeper 之前要先确保你的机器已经装好 JDK 环境。1. 下载通过/apache/zookeeper/这个链接下载,然后上传到Linux上。(可以说那个 Xhell 附带的文件传输功能)zookeeper下载或者直接在Linux中使用wget /dist/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz命令下载(版本号 3.4.12 是我写这篇文章的时候最新的稳定版本,各位可以根据实际情况
14、修改)2. 解压tar-zxvfzookeeper-3.4.12-alpha.tar.gz解压之后解压完毕之后修改一下解压之后所得的文件夹名mvzookeeper-3.4.12zookeeper删除 zookeeper 安装包rm-rfzookeeper-3.4.12.tar.gz3. 进入zookeeper目录,创建data文件夹。mkdirdata进入 data 文件夹 然后执行pwd命令,复制所得的当前目录位置(就是我用红色圈出来的文字)进入 data 文件夹 然后执行pwd命令4. 进入/zookeeper/conf目录下,复制zoo_sample.cfg,命名为zoo.cfgcpzo
15、o_sample.cfgzoo.cfg5. 修改配置文件使用vim zoo.cfg命令修改配置文件vim 文件进入文件命令模式按i进入编辑模式编辑文件 按Esc进入底行模式输入:wq/q! (输入wq代表写入内容并退出,即保存;输入q!代表强制退出不保存。)修改配置文件中的 data 属性:dataDir=/usr/local/zookeeper/data6. 启动测试进入 /zookeeper/bin 目录然后执行下面的命令./zkServer.shstart执行./zkServer.sh status查看当前 zookeeper 状态。或者运行netstat -lntup命令查看网络状态,
16、可以看到 zookeeper 的端口号 2181 已经被占用运行 netstat -lntup命令查看网络状态注意没有关闭防火墙可能出现的问题!如果你使用的阿里云服务器注意配置相关安全组:进入本实例安全组页面进入本实例安全组页面选择配置规则选择配置规则选择添加安全组规则,然后按照下图配置选择添加安全组规则,然后按照下图配置在开始实战之前提个建议:尽量新建一个文件夹,然后后面将接口项目、服务提供者以及服务消费者都放在这个文件夹。项目概览开始实战 2 :实现服务接口 dubbo-interface主要分为下面几步:创建 Maven 项目;创建接口类将项目打成 jar 包供其他项目使用项目结构:du
17、bbo-interface 项目结构dubbo-interface 后面被打成 jar 包,它的作用只是提供接口。1. dubbo-interface 项目创建File-New-Module,然后选择 Maven类型的项目,其他的按照提示一步一步走就好。第一步第二步2. 创建接口类packagetop.snailclimb.service;publicinterfaceHelloServicepublicStringsayHello(Stringname);3. 将项目打成 jar 包供其他项目使用点击右边的 Maven Projects 然后选择 install ,这样 jar 宝就打好了。
18、开始实战 3 :实现服务提供者 dubbo-provider主要分为下面几步:创建 springboot 项目;加入 dubbo 、zookeeper以及接口的相关依赖 jar 包;在 perties 配置文件中配置 dubbo 相关信息;实现接口类;服务提供者启动类编写项目结构:dubbo-provider 项目结构1. dubbo-provider 项目创建创建一个 SpringBoot 项目,注意勾选上 web 模块。不会创建的话,可以查看下面这篇文章:,可以说很详细了。/qq_34337272/article/details/79563606注意勾选上 web 模块2. pom 文件引
19、入相关依赖需要引入 dubbo 、zookeeper以及接口的相关依赖 jar 包。注意将本项目和 dubbo-interface 项目的 dependency 依赖的 groupId 和 artifactId 改成自己的。dubbo 整合spring boot 的 jar 包在这里找dubbo-spring-boot-starter。zookeeper 的 jar包在Maven 仓库搜索 zkclient 即可找到。top.snailclimbdubbo-interface1.0-SNAPSHOTcom.alibaba.spring.bootdubbo-spring-boot-starter
20、2.0.0com.101teczkclient0.103. 在 perties 配置文件中配置 dubbo 相关信息配置很简单,这主要得益于 springboot 整合 dubbo 专属的EnableDubboConfiguration注解提供的 Dubbo 自动配置。#配置端口server.port=8333=dubbo-providerspring.dubbo.application.registry=zookeeper:/ip地址:21814. 实现接口注意:Service注解使用的时 Dubbo 提供的而不是 Spring 提供的。另外,加了Dubbo 提供的Service注解之后还需
21、要加入packagetop.snailclimb.service.impl;importcom.alibaba.dubbo.config.annotation.Service;importorg.springframework.stereotype.Component;importtop.snailclimb.service.HelloService;ComponentServicepublicclassHelloServiceImplimplementsHelloServiceOverridepublicStringsayHello(Stringname)returnHello+name;5
22、. 服务提供者启动类编写注意:不要忘记加上EnableDubboConfiguration注解开启Dubbo 的自动配置。packagetop.snailclimb;importcom.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication/开启dubbo
23、的自动配置EnableDubboConfigurationpublicclassDubboProviderApplicationpublicstaticvoidmain(Stringargs)SpringApplication.run(DubboProviderApplication.class,args);开始实战 4 :实现服务消费者 dubbo-consumer主要分为下面几步:创建 springboot 项目;加入 dubbo 、zookeeper以及接口的相关依赖 jar 包;在 perties 配置文件中配置 dubbo 相关信息;编写测试类;服务消费者启动类编写测试效果项目结构:dubbo-consumer 项目结构第1,2,3 步和服务提供者的一样,这里直接从第 4 步开始。4. 编写一个简单 Controller 调用远程服务packagetop.snailclimb.dubboconsumer;importcom.alibaba.dubbo.config.annotation.Reference;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 田地置换合同范例
- 私房方合同范例
- 租客水电维修合同范例
- 租房入住打扫服务合同模板
- 宗汉租房合同范例
- 机房合作合同范例
- 矿山破碎劳务合同范例
- 电厂水泥采购合同模板
- 烤肠机销售合同范例
- 租物业车位合同模板
- 学校体育馆应急疏散预案
- Unit3lesson2说课稿 - 2024-2025学年冀教版七年级英语上册
- 2024年6月2日《证券投资顾问》真题卷(79题)
- 金融知识进万家
- 招商专员培训资料
- 2025年中考语文复习之文言文阅读
- 福建省厦门市2024-2025学年新人教版九年级语文上学期期末质量检测试题
- 江苏省苏州四市联考2024-2025学年七年级上学期期中考试英语试题(含答案无听力原文及音频)
- 2024统编版(2024)道德与法治小学一年级上册教学设计(附目录)
- 2024版《中医基础理论经络》课件完整版
- 2024年全球 二次元移动游戏市场研究报告-点点数据
评论
0/150
提交评论