首页 > 其他分享 >springcloud和dubbo分别调用controller层和service层是两种微服务架构的最大区别?

springcloud和dubbo分别调用controller层和service层是两种微服务架构的最大区别?

时间:2024-05-24 15:53:36浏览次数:21  
标签:dubbo 调用 服务 service springcloud 接口 controller

许多讨论微服务架构中springcloud和dubbo区别的文章中,主要强调dubbo只是springcloud的子集,只是服务治理工具,不是完整解决方案。但是看了一下两者,感觉完全无法兼容,理念完全不同啊。
springboot开发的典型应用目录如下:


分Controller、service接口、Serviceimpl实现、dao等层次。
1、sprinbcloud是用http调用controller层的REST接口,就像App或前端页面访问一个REST接口一样,只是用RestTemplate封装简化了http调用的代码(httpClient的写法过于复杂);sprinbcloud无法调用Service接口,Feign方式是在消费端加一个特别的接口类,看似以java API方式写调用,实际与restTemplate是一样的调用的controller层。
2、而Dubbo则需要提供接口类,是调用的Service层接口,把服务端的Service接口打成共享包,客户端导入就可以像写本地代码一样调用了。但是dubbo无法调用Controller,Controller类没有接口!客户端无法以java API方式调用。

那么哪种更好呢?springcloud可以通用于任何语言,因为全是http调用的json数据,不需要按照java API方式来写。这种方式耦合度小,可以与不同语言的第三方应用进行服务调用;Dubbo则与本地调用写法相似,java的标准写法(近年也已经支持了node.js和python等语言),更适合java技术栈,也更适合同构的微服务组件不需要与其它语言第三方应用整合的情况。个人感觉,service接口的意义,就是为了封装业务逻辑,controller只和于处理请求和返回,那么微服务调用service更合理,毕竟是后台调用,特别是微服务都是自己团队开发的,是一个业务应用的拆解,调用controller意义不大,很多情况下前端可以直接调用不同微服务的controller,干嘛在后端再调用一遍呢,除非是调用第三方的某个服务。
调用第三方的某个服务,一般用于应用整合比较松散的,按照第三方接口文档用restTemplate直接调用就行了,不像一个应用拆解为多个微服务之间的耦合,往往也很难要求第三方应用采用相同的服务注册中心。所以我倾向于用dubbo。

我的看法,请大家讨论!
以下是几个问题:
1、微服务应用调用controller还是service?
2、springcloud能调用service接口吗?
3、Dubbo能调用controller吗?怎么调用呢?
4、有必要都用上吗?以便两者都可以调用?

参考:https://bbs.csdn.net/topics/396520807

===============================================================

都是个人看法 1、微服务应用调用controller还是service? 根据业务来,如果系统划分比较多,那就用controller,前端通过路由来对应多个后台感觉比较合适(但是服务间调 用需要考虑 参数的 序列化和反序列化,较大的参数影响性能) 如果业务多,但是系统划分的少,那就用service ,需要改的只是后端 2、springcloud能调用service接口吗? 不知道,只用它调用controller 3、Dubbo能调用controller吗?怎么调用呢? 不知道,只用它调过service 4、有必要都用上吗?以便两者都可以调用? 如果系统划分比较多,类似多平台,那么多平台可以使用 springcloud,平台的内部调用使用dubbo

===============================================================

疑问:

为什么要使用springCloud直接使用RestTemplate不行吗?

 

标签:dubbo,调用,服务,service,springcloud,接口,controller
From: https://www.cnblogs.com/super-chao/p/18211109

相关文章

  • 为什么要使用springCloud直接使用RestTemplate不行吗?
    虽然RestTemplate本身是一个强大的工具,用于在Spring应用程序中发送HTTP请求,但在复杂的微服务架构中,直接使用RestTemplate可能不足以满足所有需求。SpringCloud提供了更高级别的功能,使得在微服务环境中构建、部署和管理应用程序变得更加容易。以下是一些使用SpringCloud而不是直......
  • mapper,service,controller,entity之间的关系
    目录一、学到了二、错误与纠正一、学到了1.mapper(repository):数据访问层,负责与数据库进行交互,执行数据库的操作。定义了各种数据库操作方法的接口,并由ORM框架自动实现主要职能是执行数据库的增删改查,并将数据库操作结果返回给上层的service。2.service:业务逻辑层,处理逻......
  • Ubuntu 22.04 使用self-service-password搭建自主修改密码平台
    Ubuntu系统安装准备正常操作是安装成功系统,安装的时候设置好静态密码。参考官方文档:https://self-service-password.readthedocs.io/en/stable/installation.html根据文档提示安装会报错,网上查了些资料需要按照如下步骤安装依赖。正式安装vi/etc/apt/sources.list.d/ltb-p......
  • 【dubbo】telnet 连接dubbo不支持ls命令解决方法
    现象dubbo服务的默认端口是20880,按照网上教程想查看dubbo服务,报错telnet127.0.0.120880dubbo>lsDubboTelnetUnsupportedcommand:ls原因PleaseusethespecificQOSportforQOScommands,bydefaultis 22222从dubbo2.5.8开始,引入了QoS模块,别问我QoS啥意思,我查......
  • skynet.newservice简介:服务的启动
    skynet是一个轻量级的游戏服务器框架。简介在skynet的体系中,服务是一个基础概念。通常,我们使用skynet.newservice来启动一个snlua服务。那么,当我们写下localaddr=skynet.newservice("test")这行代码时,系统是怎么运作的呢?思考一下这些问题:调用skynet.newservice会不会发......
  • ASP.NET Web应用程序创建的webservice接口如何在postman里测试调用
    ASMX中的方法 启动项目浏览器展示的页面如下 点击ReceiveOrder,展示该方法的请求和响应示例 在postman中输入以下信息 选择raw--xml,粘贴浏览器中的SOAP1.1或者SOAP1.2中的请求示例 点击Send按钮发生请求 SOAP1.1以下是SOAP1.1请求和响应示例。所显示的占位......
  • Azure Service Principals ----- Azure 上最好保守的秘密的服务
    一,引言AzureServicePrincipals是AzureActiveDirectory(AAD)中的一种标识,代表应用程序,服务,自动化流程。ServicePrincipals支持各种Azure服务和资源之家的安全通信,为应用程序提供了一种进行身份验证并于AzureAPI交互的方法。在本文中,我们将探讨AzureServ......
  • SpringCloud(3)-OpenFeign相关配置
    OpenFeign是个声明式WebService客户端,使用OpenFeign让编写WebService客户端更简单。SpringCloud对OpenFeign进行了封装使其支持了SpringMVC标准注解和HttpMessageConverters。OpenFeign可以与Eureka和Ribbon组合使用以支持负载均衡。1.配......
  • 使用eclipse建立webservice服务和客户端new
    使用eclipse建立webservice服务和客户端 平时在练习使用webservice互相传数据时,可以使用eclipse建立一个服务端发布WSDL,当然自身也可以建立客户端。Webservice是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标......
  • SpringCloud(2)-Ribbon相关配置
    Ribbon是一套提供客户端负载均衡的工具Ribbon=负载均衡+RestTemplateRibbon属于进程内LoadBalance,含义是将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些服务地址可用,然后再从这些地址中选择出一个合适的服务地址。Ribbon常见负载算法:我们接下来以随机负载......