热门标签 | 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。
关闭所有服务的启动时检查:(没有提供者时报错)
   
关闭某个服务的启动时检查:(没有提供者时报错)
   


推荐阅读
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 该平台旨在为大型企业提供一个高效、灵活且可扩展的分布式微服务架构解决方案。它采用模块化、微服务化和热部署的设计理念,结合当前最先进且无商业限制的主流开源技术,如Spring Cloud、Spring Boot2、MyBatis、OAuth2和Element UI,实现前后端分离的系统管理平台。 ... [详细]
  • 本文详细介绍了 Java 中 org.apache.xmlbeans.SchemaType 类的 getBaseEnumType() 方法,提供了多个代码示例,并解释了其在不同场景下的使用方法。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • This guide provides a comprehensive step-by-step approach to successfully installing the MongoDB PHP driver on XAMPP for macOS, ensuring a smooth and efficient setup process. ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • 本文探讨了 Spring Boot 应用程序在不同配置下支持的最大并发连接数,重点分析了内置服务器(如 Tomcat、Jetty 和 Undertow)的默认设置及其对性能的影响。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
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社区 版权所有