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

辽宁模板网站建设公司网站推广工作好做吗

辽宁模板网站建设公司,网站推广工作好做吗,clef wordpress,网站建设计划书怎么写dubbo和fegin的差异 一、Feign与Dubbo概述 Feign是一个声明式的Web服务客户端#xff0c;使得编写HTTP客户端变得更简单。通过简单的注解#xff0c;Feign将自动生成HTTP请求#xff0c;使得服务调用更加便捷。而Dubbo是一个高性能、轻量级的Java RPC框架#xff0c;提供了…dubbo和fegin的差异 一、Feign与Dubbo概述 Feign是一个声明式的Web服务客户端使得编写HTTP客户端变得更简单。通过简单的注解Feign将自动生成HTTP请求使得服务调用更加便捷。而Dubbo是一个高性能、轻量级的Java RPC框架提供了丰富的服务治理功能。 二、性能对比 调用性能在单次调用方面Feign的性能表现略逊于Dubbo。由于Feign的自动生成HTTP请求机制其性能相较于Dubbo的直接RPC调用会有一定的损失。然而对于大多数应用而言这种性能差异并不明显。 负载均衡Feign和Dubbo都提供了负载均衡功能。Feign使用Ribbon作为其负载均衡组件而Dubbo则内置了负载均衡机制。在负载均衡方面Dubbo提供了更多的配置选项和策略具有更强的灵活性。 服务发现Feign依赖于Eureka、Consul、Nacos等注册中心实现服务发现而Dubbo则提供了内置的服务发现机制。在服务发现的性能和稳定性方面Dubbo具有一定的优势。 三、区别分析 架构差异Feign基于SpringCloud体系更适用于微服务架构。而Dubbo则独立于任何框架具有更强的通用性。 适用场景对于简单的服务调用场景Feign更加简洁易用。而当需要复杂的服务治理功能时Dubbo则更具优势。 扩展性Feign提供了丰富的注解和配置选项可以轻松地与SpringCloud的其他组件集成。而Dubbo则提供了丰富的SPI机制使得扩展更加灵活。 社区活跃度Feign的社区相对活跃随着SpringCloud的发展Feign也在不断迭代和完善。Dubbo的社区虽然活跃度不如Feign但凭借其多年的积累和沉淀依然拥有大量的用户和稳定的支持者。 项目代码 项目结构图 整体结构比较简单两个服务提供者、一个消费者、一个接口定义模块。 先看各个模块的maven配置 父工程pom ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.3.0.RELEASE/versionrelativePath/ /parentgroupIdcom.zwm/groupIdartifactIddubbo-demo/artifactIdpackagingpom/packagingversion1.0-SNAPSHOT/versionmodulesmodulecommon-api/modulemoduleconsumer/modulemoduleprovider1/modulemoduleprovider2/module/modulespropertiesjava.version8/java.versioncom.alibaba.cloud.version2.2.3.RELEASE/com.alibaba.cloud.versionorg.spring.cloud.versionHoxton.SR8/org.spring.cloud.versionorg.spring.boot.version2.3.2.RELEASE/org.spring.boot.version/propertiesdependencyManagement!--使用management一次性依赖多个parent项目--dependencies!--springboot start依赖--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion${org.spring.boot.version}/version!--添加type和scope标签 并设置为pom和import 要不子模块引不到这些依赖--typepom/typescopeimport/scope/dependency!--springCloudAlibaba 依赖--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion${com.alibaba.cloud.version}/version!--添加type和scope标签 并设置为pom和import 要不子模块引不到这些依赖--typepom/typescopeimport/scope/dependency!--springCloud依赖--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion${org.spring.cloud.version}/version!--添加type和scope标签 并设置为pom和import 要不子模块引不到这些依赖--typepom/typescopeimport/scopeexclusions!--因为后续要用dubbo去做远程调用 所以这里就把openfeign的依赖给排除掉--exclusiongroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId/exclusion/exclusions/dependency/dependencies/dependencyManagement /project 服务提供者pom两个服务提供者配置一样这样就只展示一个。 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIddubbo-demo/artifactIdgroupIdcom.zwm/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdprovider2/artifactIddependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!--nacos配置中心--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId/dependency!--nacos注册中心--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactIdexclusionsexclusionartifactIdhttpclient/artifactIdgroupIdorg.apache.httpcomponents/groupId/exclusion/exclusions/dependency!--dubbo与springboot自动装配starter--dependencygroupIdorg.apache.dubbo/groupIdartifactIddubbo-spring-boot-starter/artifactIdversion2.7.8/versionexclusionsexclusiongroupIdlog4j/groupIdartifactIdlog4j/artifactId/exclusionexclusionartifactIdspring-context/artifactIdgroupIdorg.springframework/groupId/exclusion/exclusions/dependency!--dubbo - nacos注册--dependencygroupIdcom.alibaba/groupIdartifactIddubbo-registry-nacos/artifactIdversion2.7.7/versionexclusionsexclusionartifactIdnacos-client/artifactIdgroupIdcom.alibaba.nacos/groupId/exclusion/exclusions/dependencydependencygroupIdcom.zwm/groupIdartifactIdcommon-api/artifactIdversion1.0-SNAPSHOT/versionscopecompile/scope/dependency/dependencies /project 消费者pom ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIddubbo-demo/artifactIdgroupIdcom.zwm/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdconsumer/artifactIddependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!--nacos配置中心--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId/dependency!--nacos注册中心--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactIdexclusionsexclusionartifactIdhttpclient/artifactIdgroupIdorg.apache.httpcomponents/groupId/exclusion/exclusions/dependency!--dubbo与springboot自动装配starter--dependencygroupIdorg.apache.dubbo/groupIdartifactIddubbo-spring-boot-starter/artifactIdversion2.7.8/versionexclusionsexclusiongroupIdlog4j/groupIdartifactIdlog4j/artifactId/exclusionexclusionartifactIdspring-context/artifactIdgroupIdorg.springframework/groupId/exclusion/exclusions/dependency!--dubbo - nacos注册--dependencygroupIdcom.alibaba/groupIdartifactIddubbo-registry-nacos/artifactIdversion2.7.7/versionexclusionsexclusionartifactIdnacos-client/artifactIdgroupIdcom.alibaba.nacos/groupId/exclusion/exclusions/dependencydependencygroupIdcom.zwm/groupIdartifactIdcommon-api/artifactIdversion1.0-SNAPSHOT/versionscopecompile/scope/dependency/dependencies /project common-api的pom里面就不需要特殊的配置了。 接下来看nacos、dubbo的属性配置。 服务提供者application.yaml server:port: 8081 spring:application:name: dubbo-provider2 #应用名称cloud:nacos:discovery:server-addr: 127.0.0.1:8848 #nacos服务与发现地址enabled: false #设置false 关闭nacos服务注册与发现 让dubbo自己往nacos进行注册 # dubbo configuration dubbo:registry:address: nacos://127.0.0.1:8848use-as-config-center: false #不使用配置中心 要不他会往配置中心注册一个当前application.name的配置protocol:name: dubboport: -1 #自动创建端口 两个服务提供者配置基本一样除了端口和应用名称外。 消费者application.yaml server:port: 8082 spring:application:name: spring-boot-dubbo-consumercloud:nacos:discovery:enabled: false #设置false属性 不让nacos自己注册 让dubbo去注册server-addr: 127.0.0.1:8848group: DEFAULT_GROUP# dubbo configuration dubbo:registry:address: nacos://127.0.0.1:8848use-as-config-center: false #不使用配置中心 要不他会往配置中心注册一个当前application.name的配置protocol:name: dubboport: -1cloud:subscribed-services: dubbo-provider1,dubbo-provider2 #配置订阅服务多个服务用,隔开,不配置默认订阅注册中心所有服务项目需要的相关配置基本就配置完成了下面简单看下代码 common-api里面就是简单的定义了接口 package com.zwm.api;public interface DemoService {String getString(String name); }服务提供者两个服务基本一样就是实现了上面的接口 先看服务提供者的启动类 package com.zwm;import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;/*** Hello world!*/ SpringBootApplication EnableDubbo(scanBasePackages com.zwm.service) public class Provider1Application {public static void main(String[] args) {SpringApplication.run(Provider1Application.class, args);} }package com.zwm.service.impl;import com.zwm.api.DemoService; import org.apache.dubbo.config.annotation.DubboService;DubboService public class ProviderServiceTest implements DemoService {Overridepublic String getString(String name) {return provider1 say: hello! name;} }注意上面的DubboService注解这个很重要用于暴露服务。启动类上面需要添加EnableDubbo服务提供者才需要添加消费者启动类不需要开启dubboscanBasePackages com.zwm.service)这个如果配置文件里面配置了扫包的路径这里可以不需要。 消费者去调用暴露的服务 package com.zwm.controller;import com.zwm.api.DemoService; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;import javax.websocket.server.PathParam;RestController public class ConsumerDemoController {DubboReferenceprivate DemoService demoService;GetMapping(/demo)public String hello(PathParam(name) String name) {return demoService.getString(name);} }注意添加DubboReference注解 服务启动要先启动服务提供者启动后可以在nacos上看到注册的服务 点开详情可以查看详细的信息端口号、应用名称、接口方法定义等等。 如果在启动的过程中出现了 Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass。 那么这个时候需要在启动的时候添加如下参数--add-opens java.base/java.langALL-UNNAMED 再启动另一个服务提供者 这时候就会看到另一个服务提供者也上来了大家可能会发现名称有点不一样有一个实例数还是2那是因为其中一个服务提供者暴露了两个服务。 接下来启动消费者   这个时候消费者也上来了可以在浏览器输入地址进行访问测试http://localhost:8082/my?namezwm123 如果你也能看到这样的效果那么恭喜大家springcloud基于Nacos组件整合Dubbo框架就实现了。 如果大家觉得配置起来很麻烦也可以直接下载https://download.csdn.net/download/javaweiming/90265288 相互学习、共同进步...
http://www.hkea.cn/news/14288039/

相关文章:

  • 域名怎么解析到网站网站开发技术与功能 需求说明
  • 织梦网站安全六安公司做网站
  • 北京网站建设 找奥美通全网营销安徽住房与城乡建设部网站
  • 集团网站设计思路良品铺子网络营销策划书
  • 网站建设哪个最好中国建设银行英语网站首页
  • 定制网站开发技术苏州工程建设网
  • 筑建网站南阳开网站制作
  • 餐饮企业网站建设网站后台登录怎么做的
  • 什么网站可以快速做3d效果图王也高清全屏壁纸
  • 宁波俄语网站建设p2p网站建设规划
  • 企业高端网站建设公司上海做响应式网站的公司
  • 贵阳做网站开发科技有限公司俄罗斯搜索引擎
  • 哪些网站可以做翻译兼职福利吧 wordpress主题
  • 梅林网站建设公司网站规划的原则有哪些内容
  • 网站模版网 下载计算机程序网站开发是什么
  • 网站登录到wordpress营销公司排名
  • 开通网站流程企业网站备案要多久
  • 横店建设网站如何在百度云上建设网站
  • 网站防红怎么做的彩票网站开发 晓风
  • 吉林省建设厅网站二建管理系统浙江省建设项目招投标网站
  • 网站开发行业标准龙岗做网站哪里找
  • wordpress js在哪安顺seo
  • 好看的wordpress插件求职seo
  • 网站底部技术支持如何管理好自己团队
  • 咸阳市网站建设公司怎么在网上买东西
  • 站长工具品牌创意设计公司
  • 手机网站优化技巧wordpress关键词
  • python网站开发集成环境wap网站建设免费
  • 浙江省建设工程质量安全管理协会网站wordpress 菜单 字体
  • 郑州网站建设seo诊断书案例