当前位置: 首页 > news >正文

苏州网站建设系统方案上海虹口建设局官方网站

苏州网站建设系统方案,上海虹口建设局官方网站,网站主体负责人查询,网站后台怎么做上一篇我们一起认识了Dubbo与RPC#xff0c;今天我们就来一起学习如何使用Dubbo#xff0c;并将Dubbo集成到Spring Boot的项目中。我们来看下今天要使用到的软件及版本#xff1a; 软件 版本 说明 Java 11 Spring Boot 2.7.13 Spring Boot 3.0版本开始#xff0c;最… 上一篇我们一起认识了Dubbo与RPC今天我们就来一起学习如何使用Dubbo并将Dubbo集成到Spring Boot的项目中。我们来看下今天要使用到的软件及版本 软件 版本 说明 Java 11 Spring Boot 2.7.13 Spring Boot 3.0版本开始最低支持到Java 17 Dubbo 3.2.2 Zookeeper 3.8.1 作为Dubbo的注册中心 注册中心的选择没有什么强制要求我们这里以Zookeeper为例来做示范。 TIps今天我们只处理Spring BootDubbo与Zookeeper的集成不会涉及到其他框架的集成。 部署Zookeeper 我们先来部署一个Zookeeper这里我提供Windows和Linux的部署教程如果你已经部署成功可以跳过这部分内容。 首先是下载Zookeeper这里我们选择Zookeeper-3.8.1版本。 Linux下可以使用wget命令下载 wget https://archive.apache.org/dist/zookeeper/zookeeper-3.8.1/apache-zookeeper-3.8.1-bin.tar.gz Tips注意这里我们下载的是apache-zookeeper-3.8.1-bin.tar.gz这个文件。 Linux部署Zookeeper 解压Zookeeper tar -zxvf apache-zookeeper-3.8.1-bin.tar.gz Zookeeper的配置文件配置文件位于../Zookeeper/conf目录下复制zoo_sample.cfg文件并命名为zoo.cfg cp zoo_sample.cfg zoo.cfg 在Dubbo的学习中我们使用Zookeeper的默认配置即可所以此处我们不需要再修改zoo.cfg。 修改profile文件 vim /etc/profile 将Zookeeper的配置添加到profile文件中 export ZOOKEEPER_HOME/opt/opt/apache-zookeeper-3.8.1-bin export PATH$ZOOKEEPER_HOME/bin:$PATH export PATH 刷新profile文件 source profile 启动Zookeeper zkServer.sh start 正常情况下会输出日志 ZooKeeper JMX enabled by default Using config: /opt/apache-zookeeper-3.8.1-bin/bin/../conf/zoo.cfg Starting zookeeper ... STARTED 可以使用命令来查看Zookeeper的状态 zkServer.sh status 单机状态输出如下日志 ZooKeeper JMX enabled by default Using config: /opt/apache-zookeeper-3.8.1-bin/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: standalone 到这里我们就在Linux服务器上成功的部署了一个简单可用的单机版Zookeeper了。 Windows部署Zookeeper 参照Linux上部署Zookeeper的步骤来到修改配置文件的部分Windows上我们要修改dataDir的路径并新增dataLogDir的路径 tickTime2000 initLimit10 syncLimit5 dataDirD:\Apache\Apache Zookeeper 3.8.1\data dataLogDirD:\Apache\Apache Zookeeper 3.8.1\logs clientPort2181 如果系统中没有配置环境变量JAVA_HOME我们要修改zkEnv.cmd中的JAVA_HOME配置该文件位于../Apache Zookeeper/bin目录下 echo off REM Licensed to the Apache Software Foundation (ASF) under one or more REM contributor license agreements. See the NOTICE file distributed with REM this work for additional information regarding copyright ownership. REM The ASF licenses this file to You under the Apache License, Version 2.0 REM (the License); you may not use this file except in compliance with REM the License. You may obtain a copy of the License at REM REM http://www.apache.org/licenses/LICENSE-2.0 REM REM Unless required by applicable law or agreed to in writing, software REM distributed under the License is distributed on an AS IS BASIS, REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. REM See the License for the specific language governing permissions and REM limitations under the License.set ZOOCFGDIR%~dp0%..\conf set ZOO_LOG_DIR%~dp0%..\logsREM for sanity sake assume Java 1.6 REM see: http://java.sun.com/javase/6/docs/technotes/tools/windows/java.htmlREM add the zoocfg dir to classpath set CLASSPATH%ZOOCFGDIR%REM make it work in the release SET CLASSPATH%~dp0..\*;%~dp0..\lib\*;%CLASSPATH%REM make it work for developers SET CLASSPATH%~dp0..\build\classes;%~dp0..\build\lib\*;%CLASSPATH%set ZOOCFG%ZOOCFGDIR%\zoo.cfgREM setup java environment variablesif not defined JAVA_HOME ( echo Error: JAVA_HOME is not set. goto :eof )set JAVA_HOME%JAVA_HOME%if not exist %JAVA_HOME%\bin\java.exe ( echo Error: JAVA_HOME is incorrectly set: %JAVA_HOME% echo Expected to find java.exe here: %JAVA_HOME%\bin\java.exe goto :eof )REM strip off trailing \ from JAVA_HOME or java does not start if %JAVA_HOME:~-1% EQU \ set JAVA_HOME%JAVA_HOME:~0,-1%set JAVA%JAVA_HOME%\bin\java 我们将第41行的set JAVA_HOME%JAVA_HOME%提前到第36行前在在判断环境变量中是否存在JAVA_HOME前进行设置并使用完整的路径如set JAVA_HOMED:\Java\jdk11.0.18。 上述内容修改完成后直接双击执行zkServer.cmd就可以启动Zookeeper了。注意Windows下启动可能出现各种各样的错误最常见的如启动闪退这时可以在PowerShell中启动zkServer.cmd来查看日志解决问题 cd D: PS D:\ cd .\Apache\Apache Zookeeper 3.8.1\bin\ PS D:\Apache\Apache Zookeeper 3.8.1\bin .\zkServer.cmd 好了到这里你应该已经完成了Zookeeper的部署工作了接下来我们在Spring Boot应用中集成Dubbo。 Dubbo的XML形式集成 首先我们准备两个工程DubboProviderXML和DubboConsumerXML模仿服务提供方和服务使用方创建工程的部分我们就直接跳过了相信这一步大家都没问题。 另外Dubbo官方提供了Dubbo Initializer项目脚手架方便大家快速构建Dubbo项目 使用方式类似于Spring Initializr Tips 当然你也可以在同一个工程中模拟提供方和使用方Spring Initializr严格意义上是一个错别字但大家也都接受了这种方式V2EX上有关于名字的讨论。 DubboProviderXML工程 在DubboProviderXML项目下创建了两个子工程 provider-api声明RPC接口provider-service核心业务逻辑的实现 此时工程结构如下 现在修改DubboProviderXML工程的POM文件 modelVersion4.0.0/modelVersion groupIdcom.wyz/groupId artifactIdDubboProviderXML/artifactId version0.0.1-SNAPSHOT/version packagingpom/packaging nameDubboProviderXML/name descriptionDubboProviderXML/descriptionpropertiesmaven.compiler.source11/maven.compiler.sourcemaven.compiler.target11/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding /propertiesmodulesmoduleprovider-api/modulemoduleprovider-service/module /modules 通常我会在DubboProviderXML工程中添加所有子项目都会用到的依赖例如lombokcommons-lang3等在此我们忽略这部分内容。 配置provider-api 接着处理子工程provider-api中的POM文件 modelVersion4.0.0/modelVersion parentgroupIdcom.wyz/groupIdartifactIdDubboProviderXML/artifactIdversion0.0.1-SNAPSHOT/version /parent artifactIdprovider-api/artifactId version0.0.1-SNAPSHOT/version nameprovider-api/name packagingjar/packaging descriptionprovider-api/description 然后在provider-api中声明RPC接口 package com.wyz.api;/** * author wyz * version 1.0 * date 2023/6/28 */ public interface DubboDemoXMLService {String say(String message); } 这样provider-api就配置完成了DubboProviderXML就有了对外提供RPC服务的入口。 Tips需要将provider-api打包成jar以便DubboConsumerXML使用。 配置provider-service 下面我们配置子工程provider-service的POM文件 modelVersion4.0.0/modelVersion parentgroupIdcom.wyz/groupIdartifactIdDubboProviderXML/artifactIdversion0.0.1-SNAPSHOT/version /parent artifactIdprovider-service/artifactId version0.0.1-SNAPSHOT/version nameprovider-service/name descriptionprovider-service/descriptionpropertiesspring.boot.version2.7.13/spring.boot.versiondubbo.version3.2.2/dubbo.versionzookeeper.version3.8.1/zookeeper.version /propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactIdversion${spring.boot.version}/version/dependency!-- dubbo-spring-boot-starter引入了dubbo --dependencygroupIdorg.apache.dubbo/groupIdartifactIddubbo-spring-boot-starter/artifactIdversion${dubbo.version}/version/dependency!-- DUbbo与Zookeeper的连接器 --!-- curator5自身引入了Zookeeper的依赖因此无需额外引入 --dependencygroupIdorg.apache.dubbo/groupIdartifactIddubbo-dependencies-zookeeper-curator5/artifactIdversion${dubbo.version}/versiontypepom/type/dependencydependencygroupIdcom.wyz/groupIdartifactIdprovider-api/artifactIdversion0.0.1-SNAPSHOT/version/dependency /dependencies 接下来我们在provider-service中实现这个接口 package com.wyz.service.impl;import com.wyz.DubboDemoXMLService;/** * author wyz * version 1.0 * date 2023/7/3 */ public class DubboDemoXMLServiceImpl implements DubboDemoXMLService {Overridepublic String say(String message) {return XML Provider say : message;} } 现在我们有了接口也有了接口的实现只需要配置成Dubbo的服务即可新增dubbo-provider.xml文件 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:dubbohttp://dubbo.apache.org/schema/dubboxsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://dubbo.apache.org/schema/dubbohttp://dubbo.apache.org/schema/dubbo/dubbo.xsd!-- Dubbo的基本配置--dubbo:application nameDubboProviderXML qos-port2222/dubbo:registry addresszookeeper://127.0.0.1:2181/dubbo:protocol namedubbo/!-- 配置提供的服务dubboDemoXMLServiceImpl --bean iddubboDemoXMLServiceImpl classcom.wyz.service.impl.DubboDemoXMLServiceImpl/dubbo:service interfacecom.wyz.api.DubboDemoXMLService refdubboDemoXMLServiceImpl/ /beans 所有配置完成后我们导入dubbo-provider.xml文件 package com.wyz.service;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ImportResource;/** * author wyz * version 1.0 * date 2023/7/3 */ SpringBootApplication ImportResource(locations classpath:dubbo-provider.xml) public class ProviderServiceApplication {public static void main(String[] args) {SpringApplication.run(ProviderServiceApplication.class, args);} } 到这里我们的DubboProviderXML工程就配置完了此时工程的结构如下 DubboConsumerXML工程 我们继续配置服务使用方DubboConsumerXML工程整体流程和DubboProviderXML的配置基本一致我们直接快进到consumer-service中的配置部分。 配置consumer-service consumer-service的POM文件与DubboProviderXML工程的子工程provider-service完全一致我们也直接跳过这部分内容。 接下来实现对DubboDemoXMLService#say的调用 package com.wyz.service.impl;import com.wyz.DubboDemoXMLService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component;/** * author wyz * version 1.0 * date 2023/7/3 */ Component public class DubboConsumerXMLService implements CommandLineRunner {AutowiredDubboDemoXMLService dubboDemoXMLServiceImpl;Overridepublic void run(String... args) {String message dubboDemoXMLServiceImpl.say(wyz);System.out.println(message);} } 接着我们新增dubbo-consumer.xml文件配置使用方要调用的服务 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:dubbohttp://dubbo.apache.org/schema/dubboxsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://dubbo.apache.org/schema/dubbohttp://dubbo.apache.org/schema/dubbo/dubbo.xsd!-- Dubbo的基本配置--dubbo:application nameDubboConsumerXML qos-port2223/dubbo:registry addresszookeeper://106.75.33.232:2181/dubbo:protocol namedubbo/!-- 配置需要调用的服务 --dubbo:reference idDubboDemoXMLService interfacecom.wyz.api.DubboDemoXMLService/ /beans 同样的我们导入dubbo-consumer.xml文件 package com.wyz.service;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ImportResource;/** * author wyz * version 1.0 * date 2023/7/3 */ SpringBootApplication ImportResource(locations classpath:dubbo-consumer.xml) public class ConsumerServiceApplication {public static void main(String[] args) {SpringApplication.run(ConsumerServiceApplication.class, args);} } 最后我们启动程序控制台应该输出如下日志 此时DubboConsumerXML的工程结构如下 Dubbo的注解形式集成 除了使用XML外我们还可以使用注解的方式配置Dubbo毕竟有很多人不喜欢XML。同样的我们需要先创建两个工程DubboProviderAnnotation和DubboConsumerAnnotation。 DubboProviderAnnotation工程 DubboProviderAnnotation工程与DubboProviderXML的配置步骤基本一致我们快进到接口的实现部分这次我们需要使用DubboService注解声明这是一个Dubbo服务 package com.wyz.service.impl;import com.wyz.api.DubboProviderAnnotationService; import org.apache.dubbo.config.annotation.DubboService;/** * author wyz * version 1.0 * date 2023/7/3 */ DubboService public class DubboProviderAnnotationServiceImpl implements DubboProviderAnnotationService {Overridepublic String say(String message) {return DubboProviderAnnotationService say : message;} } 接口有了实现也有了我们来配置Dubbo的相关内容这次我们使用YAML配置 dubbo:application:name: DubboProviderAnnotationqos-port: 2222protocol:name: dubboregistry:address: zookeeper://${zookeeper.address:127.0.0.1}:2181 接着我们在启动类上添加EnableDubbo注解开启Dubbo的自动注入 package com.wyz.service;import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;/** * author wyz * version 1.0 * date 2023/7/3 */ SpringBootApplication EnableDubbo public class ProviderServiceApplication {public static void main(String[] args) {SpringApplication.run(ProviderServiceApplication.class, args);} } 此时DubboProviderAnnotation的结构如下 最后我们就可以正常启动DubboProviderAnnotation项目了。 DubboConsumerAnnotation工程 有了前面的基础相信你一定可以想到DubboConsumerAnnotation该如何配置我们先来写调用DubboDemoAnnotationService#say的调用逻辑此时通过DubboReference注入接口 package com.wyz.service.impl;import com.wyz.api.DubboProviderAnnotationService; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component;/** * author wyz * version 1.0 * date 2023/7/3 */ Component public class DubboConsumerAnnotationService implements CommandLineRunner {DubboReferenceDubboProviderAnnotationService dubboProviderAnnotationService;Overridepublic void run(String... args) {String message dubboProviderAnnotationService.say(wyz);System.out.println(message);} } 接着来配置YAML文件 dubbo:application:name: DubboConsumerAnnotationqos-port: 2223protocol:name: dubboregistry:address: zookeeper://${zookeeper.address:127.0.0.1}:2181 同样的我们需要在服务使用方添加EnableDubbo注解开启Dubbo的自动注入 package com.wyz.service;import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;/** * author wyz * version 1.0 * date 2023/7/3 */ SpringBootApplication EnableDubbo public class ConsumerServiceApplication {public static void main(String[] args) {SpringApplication.run(ConsumerServiceApplication.class, args);} } 此时DubboConsumerAnnotation的结构如下 最后我们就可以正常启动DubboConsumerAnnotation项目了。 结语 到这里我们就完成了两种形式在Spring Boot中集成Dubbo 3.X。通常来说我会选择使用XML的形式来配置Dubbo提供的服务但会选择将Dubbo的基本信息如协议类型注册中心地址等配置到YAML文件中这是为了统一管理对外提供的服务和使用的服务可以一目了然的看到项目提供了哪些能力和依赖了哪些外部接口。 如果本文对你有帮助的话还请多多点赞支持。如果文章中出现任何错误还请批评指正。最后欢迎大家关注分享硬核Java技术的金融摸鱼侠王有志我们下次再见
http://www.hkea.cn/news/14571901/

相关文章:

  • 网站建设相关费用预算推广微信官网网站
  • 湛江建设部网站erp软件有哪些
  • 一般做网站需要什么框架福田瑞沃售后服务电话
  • 汕头澄海网站建设杰奇网站地图怎么做
  • 济宁天元建设集团有限公司关键词优化简易
  • 专业网站建设公司地址网站对企业的好处
  • 免费找答案的网站找网站做网站做网站
  • 慈溪市住房和城乡建设局网站建站至尊
  • 网站编程设计如何写备注新建网址
  • 户外拓展公司网站开发mir设计公司官网
  • 长春品牌网站建设公司网站名注册
  • 中国购物网站大全排名图片免费模板
  • 上海简站商贸有限公司网络空间设计说明怎么写
  • 四川专业网站建设费用招聘页面设计模板
  • 上海网站建设服务分录乡村网络建设方案
  • 在哪里找个人做网站的申请中网可信网站
  • 河南省建设厅网站师林峰个人网页设计作品简约
  • 建设工程协会网站查询系统济宁专业建网站
  • 装饰装修网站大全国家工商企业查询
  • 交通设施东莞网站建设免费推广的网站
  • 网站制作公司业务员重庆网站建设解决方案
  • 淄博机关建设网站大连模板网站制作哪家好
  • 沈阳做网站 熊掌号平台的重要性
  • phpcms 网站标题江西省建设厅网站官网
  • 网站优化建设扬州网页图片无法保存
  • 网站关键词指数查询工具官网后台管理系统
  • 国际网站后缀自己建一个网站需要什么
  • 学校电脑课做网站的软件房子装修效果图
  • 瑜伽 网站模板不同代码做的网站后期维护情况
  • 本科毕业 做网站编辑wordpress本地网站打开慢