热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

初学者遇到的dubbo设计架构问题及解决方法总结

本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。
其文档地址: http://dubbo.io/User+Guide-zh.htm 源码git地址: https://github.com/alibaba/dubbo.git
公司最近业务扩充从原先古老的spring架构SOA服务化,为分布式拆分,选了dubbo这个上手快的设计架构,刚毕业啥也没接触过,作为初学者在这中间遇到了很多问题,以下先简略的整理出来。 先引入项目依赖:
com.alibaba
dubbo
2.5.3


spring
org.springframework




org.apache.zookeeper
zookeeper
3.3.3


com.github.sgroschupf
zkclient
0.1

碰到的问题:

1.传输字节流限制:

代码质量不过关导致超出dubbo支持的最大传输字节,导致服务崩溃而关闭:

在项目中遇到使用 dubbo 进行服务间调用(provider-consumer),由于系统需要传输文件,于是使用字节流在provider 和 consumer间通信,但是在

使用 dubbo时,收到报错,提示 payload 过大,查阅资料发现,provider 和 consumer 之间的传输 有效载荷 不得大于 8兆  payload=88388608(=8M)

,而这个属性是可选属性,所以可以自己在配置文件中配置

 

2.分布式事务:

本地事务放在最先 ,远程事务按其本地事务一层层往下封装业务。

原先垂直式的业务调用,事务是基于本地内存管理的,因此要对其进行服务拆分,异常回滚能够保证事务的原子性。

3.序列化:

远程传输的数据模型(实体等)必须实现序列化

旧业务代码,以前是本地内存创建的实体对象,在做分布式网络拆分后,TCP/IP协议是基于二进制流的,因此原先这些实体必须实现序列化。

4.多点部署:

一个服务多服务器同个zk注册,多个zk注册(一个服务注册到多个注册中心,可只在其中一个中心订阅)

5.zk端口冲突:

按照ip+端口决定唯一性,开发阶段经常会遇到在一台机器启动同一个端口的服务,原来问题出在这。

6.服务失败请求3次机制:

dubbo遇到服务调用失败默认会共调用3次请求,如开发过程中遇到某一事务没控制好,会导致3次脏数据的入库

7.启动时检查

在刚进行拆分重构时建议关闭这个启动时检查,以方便开发,可以无序的启动相关服务。

缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止Spring初始化完成,以便上线时,能及早发现问题,默认check=true。
关闭所有服务的启动时检查:(没有提供者时报错)
   
关闭某个服务的启动时检查:(没有提供者时报错)
   


推荐阅读
  • Java项目分层架构设计与实践
    本文探讨了Java项目中应用分层的最佳实践,不仅介绍了常见的三层架构(Controller、Service、DAO),还深入分析了各层的职责划分及优化建议。通过合理的分层设计,可以提高代码的可维护性、扩展性和团队协作效率。 ... [详细]
  • ssm框架整合及工程分层1.先创建一个新的project1.1配置pom.xml ... [详细]
  • 深入解析Spring Cloud微服务架构与分布式系统实战
    本文详细介绍了Spring Cloud在微服务架构和分布式系统中的应用,结合实际案例和最新技术,帮助读者全面掌握微服务的实现与优化。 ... [详细]
  • NTP服务器配置详解:原理与工作模式
    本文深入探讨了网络时间协议(NTP)的工作原理及其多种工作模式,旨在帮助读者全面理解NTP的配置参数和应用场景。NTP是基于RFC 1305的时间同步标准,广泛应用于分布式系统中,确保设备间时钟的一致性。 ... [详细]
  • 深入解析Serverless架构模式
    本文将详细介绍Serverless架构模式的核心概念、工作原理及其优势。通过对比传统架构,探讨Serverless如何简化应用开发与运维流程,并介绍当前主流的Serverless平台。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
    Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ... [详细]
  • 本文详细介绍了Java中实现异步调用的多种方式,包括线程创建、Future接口、CompletableFuture类以及Spring框架的@Async注解。通过代码示例和深入解析,帮助读者理解并掌握这些技术。 ... [详细]
  • 本文详细介绍了如何在 Android 中使用值动画(ValueAnimator)来动态调整 ImageView 的高度,并探讨了相关的关键属性和方法,包括图片填充后的高度、原始图片高度、动画变化因子以及布局重置等。 ... [详细]
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
  • 解决Spring Boot项目创建失败的问题
    在尝试创建新的Spring Boot项目时遇到了一些问题,具体表现为在项目创建过程中的两个关键步骤出现错误。本文将详细探讨这些问题及其解决方案。 ... [详细]
  • Logback使用小结
    1一定要使用slf4j的jar包,不要使用apachecommons的jar。否则滚动生成文件不生效,不滚动的时候却生效~~importorg.slf ... [详细]
  • 深入解析Hadoop的核心组件与工作原理
    本文详细介绍了Hadoop的三大核心组件:分布式文件系统HDFS、资源管理器YARN和分布式计算框架MapReduce。通过分析这些组件的工作机制,帮助读者更好地理解Hadoop的架构及其在大数据处理中的应用。 ... [详细]
  • 烤鸭|本文_Spring之Bean的生命周期详解
    烤鸭|本文_Spring之Bean的生命周期详解 ... [详细]
  • 本文详细探讨了在微服务架构中,使用Feign进行远程调用时出现的请求头丢失问题,并提供了具体的解决方案。重点讨论了单线程和异步调用两种场景下的处理方法。 ... [详细]
author-avatar
jizi456
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有