开发者社区 > 云原生 > 正文

Dubbo 为什么要迁移 Spring Cloud 服务调用?

Dubbo 为什么要迁移 Spring Cloud 服务调用?

展开
收起
1358896759097293 2021-03-17 17:20:32 1441 0
2 条回答
写回答
取消 提交回答
  • 45271990@qq.com

    Dubbo 迁移 Spring Cloud 服务调用 尽管 Dubbo Spring Cloud 完全地保留了原生 Spring Cloud 服务调用特性,不过 Dubbo 服务治理的能力是 Spring Cloud Open Feign 所不及的,如高性能、高可用 以及负载均衡稳定性等方面。因此,建议开发人员将 Spring Cloud Open Feign 或者 @LoadBalancedRestTemplate 迁移为 Dubbo 服务。 考虑到迁移过程并非一蹴而就,因此,Dubbo Spring Cloud 提供了方案,即 @Du bboTransported 注解。该注解能够帮助服务消费端的 Spring Cloud Open Feign 接口以及 @LoadBalanced RestTemplate Bean 底层走 Dubbo 调用(可切换 Dubbo 支持的协议),而服务提供方则只需在原有 @RestController 类上追加 Dubbo @Servce 注解(需要抽取接口)即可,换言之,在不调整 Feign 接口以及 RestTemp late URL 的前提下,实现无缝迁移。如果迁移时间充分的话,建议使用 Dubbo 服务重 构系统中的原生 Spring Cloud 服务的定义。

    2021-03-18 23:12:42
    赞同 展开评论 打赏
  • 下一站是幸福

    一、dubbo已经很久没有维护了【至少已经3-4年没有大版本更新】,据说阿里内部已不用dubbo改用HSF,求证?那么问题来了...

    Java8语法支持不好,service类,用java8语法或语法糖支持不好,可能会报【Caused by: java.io.IOException: invalid constant type: 18】异常。解决办法:升级javassist到3.20.0-GA,同时升级tomcat到8.5.0+版本。
    文档不清晰,例如provider中的connection占用的连接数不是针对每个consumer,而是每个reference。
    dubbo很多功能模块不成熟未达到生产环境的要求,具体可以参考dubbo用户指南中的功能成熟度介绍,24个功能模块中只有7个可在生产环境中使用。
    dubbo-provider端的accesslog日志信息,明显不足,连耗时,执行是否成功等信息都没有,例如:一个请求异常,也会记录一条和正常请求类似的日志记录。
    
    二、我们参考当当dubbox,让dubbo支持rest,发现其性能比springmvc的rest至少低30%;且consumer端不支持注解方式引入。
    
    rest方式便于开发、联调和服务升级,在dubbo中性能并不比rpc差很多,具体可以参考 dubbo用户指南 中的测试结果。而且可以通过nginx一些插件,不强制客户端也使用dubbo,易于兼容老站点和推广。
    
     三、dubbo不是个完善的服务治理框架,尤其是监控这块【缺少hystrix|turbine、sleuth类似的分布式跟踪与分析工具】,当然主要原因是好多年没大版本更新了,也哟开源社区对dubbo支持不够的原因,很多服务治理的模块没有或不完善, 例如:服务网关、熔断器、分布式跟踪、分布式配置、分布式事务等。
    
    2021-03-18 16:31:51
    赞同 展开评论 打赏

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载