背景

       针对RPC远程调用,都在使用dubbo、dubbox等,我们也是如此。由于社区暂停维护、应对未来发展,我们准备尝试新技术(或许这时候也不算什么新技术了吧),选择使用了spring cloud架构。在此期间使用spring boot项目尝试开发,结果良好。所以想重构原spring项目至spring cloud一步一步进行,因此开发中会出现各种问题。

 问题

问题总是伴随着开发一步一步显露出来,遇到问题总要去解决:

spring cloud相关问题:

1.跨系统调用,传参对象接收不到问题

解决:服务方在对象参数前@RequestBody即可(ps:public void saveUser(@RequestBody User user)),数据存在报文体中。

2.系统间重试问题,会多次调用是正常业务数据出现重复,造成垃圾数据

解决分为2步且所有都在调用方配置,第一步新增类:

return中是参照feign.Retryer,至于方法名字任意。

@Configuration
public class FeignConfig {
@Bean
public Retryer feignRetryer() {
return new Retryer.Default(100, SECONDS.toMillis(1), 0);
}
}

  第二步:

  # Max number of next servers to retry (excluding the first server)

        sample-client.ribbon.MaxAutoRetriesNextServer=1对于集群服务会随机选择下一个服务,有可能还是选择访问自己。不是集群设置为1会访问自己会造成2次访问。

  sample-client 对于多个服务端,sample-client可以删掉。

查看配置发现,针对配置部分请点击这里

    # Max number of retries on the same server (excluding the first try)
    sample-client.ribbon.MaxAutoRetries=1  发现没用

    3.部署服务器,注册中心服务均存在,但是无法访问获取数据,报服务拒绝连接

解决:其实这算是个注意点,平时开发都是SpringApplication启动项目,打包部署服务时tomcat端口与server.port(spring boot)配置不一致造成。猜测spring cloud访问从注册中心获取主机与端口,根据主机和端口访问服务但是服务tomcat设置端口与配置不一致,造成问题。

spring boot相关问题:

1.项目使用SpringApplication启动正常,但是访问不了页面

解决:@ComponentScan只扫描当前程序所在包结构(包含子包)中声明

      | - src
      | | - main
      | | | - java
      | | | | - com
      | | | | | - controller/service/dao
      | | | | - SpringApplication.java

2.请求url响应问题,不同后缀响应不同

解决:该场景是因为spring boot有多个视图解析器,ajax请求可以直接使用a/b,页面a/b.htm

spring相关问题:

1.spring调用spring cloud项目问题

解决:使用HttpClient设置请求头Content-Type:application/json访问spring cloud对外系统(gateway)即可,至于内网外网访问随意

异常问题:

spring cloud有Hystrix断路由,虽然好处多多,但是访问每个接口都要相应断路由接口,如果处理逻辑有区别还好,没有区别我就不说了。由于我们是统一返回,所以针对出现问题使用全局异常拦截记录日志返回失败,这有个缺点是访问通异常可以处理,至于超时这些没有访问通就要捕获。

讨论

      学艺不精,有些都是似懂非懂,希望大神能指点指点。其中有点疑惑,spring访问spring  cloud最后都打成war包部署发布,个人觉得spring应该也可以注册到注册中心,希望知道的可以分享。

spring/spring boot/spring cloud开发总结的更多相关文章

  1. 255.Spring Boot+Spring Security:使用md5加密

    说明 (1)JDK版本:1.8 (2)Spring Boot 2.0.6 (3)Spring Security 5.0.9 (4)Spring Data JPA 2.0.11.RELEASE (5)h ...

  2. 256.Spring Boot+Spring Security: MD5是加密算法吗?

    说明 (1)JDK版本:1.8 (2)Spring Boot 2.0.6 (3)Spring Security 5.0.9 (4)Spring Data JPA 2.0.11.RELEASE (5)h ...

  3. Spring Boot+Spring Security:获取用户信息和session并发控制

    说明 (1)JDK版本:1.8(2)Spring Boot 2.0.6(3)Spring Security 5.0.9(4)Spring Data JPA 2.0.11.RELEASE(5)hiber ...

  4. Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台

    Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台: https://gitee.com/leecho/cola-cloud

  5. 新书上线:《Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统》,欢迎大家买回去垫椅子垫桌脚

    新书上线 大家好,笔者的新书<Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统>已上线,此书内容充实.材质优良,乃家中必备垫桌脚 ...

  6. Spring Boot + Spring Cloud 实现权限管理系统 后端篇(三):搭建开发环境

    生成项目模板 登录Spring Initializr生成Spring Boot项目模板,保存到本地. 地址:https://start.spring.io/ 导入Maven项目 使用IDE导入生成的M ...

  7. spring Boot+spring Cloud实现微服务详细教程第二篇

    上一篇文章已经说明了一下,关于spring boot创建maven项目的简单步骤,相信很多熟悉Maven+Eclipse作为开发常用工具的朋友们都一目了然,这篇文章主要讲解一下,构建spring bo ...

  8. spring Boot+spring Cloud实现微服务详细教程第一篇

    前些天项目组的大佬跟我聊,说项目组想从之前的架构上剥离出来公用的模块做微服务的开发,恰好去年的5/6月份在上家公司学习了国内开源的dubbo+zookeeper实现的微服务的架构.自己平时对微服务的设 ...

  9. Spring Boot + Spring Cloud 实现权限管理系统 配置中心(Config、Bus)

    技术背景 如今微服务架构盛行,在分布式系统中,项目日益庞大,子项目日益增多,每个项目都散落着各种配置文件,且随着服务的增加而不断增多.此时,往往某一个基础服务信息变更,都会导致一系列服务的更新和重启, ...

随机推荐

  1. input type='file'上传控件假样式

    采用bootstrap框架样式 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> &l ...

  2. equals变量在前面或者在后面有什么区别吗?这是一个坑点

    我就不废话那么多,直接上代码: package sf.com.mainTest; public class Test { public static void main(String[] args) ...

  3. 【HTML】Html页面跳转的5种方式

    目录结构: // contents structure [-] html实现 javascript方式实现 结合了倒数的javascript实现(IE) 解决Firefox不支持innerText的问 ...

  4. ubuntu-14.04-server配置Jexus --安装步骤记录

    作者:郝喜路   个人主页:http://www.cnicode.com      博客地址:http://haoxilu.cnblogs.com 说明:我是Linux菜鸟,自己尝试配置Jexus服务 ...

  5. Linux1 在Linux(CentOS)上安装MySql详细记录

    前记:  毕业两年了,前两天换了份工作,由以前的传统行业跳到了互联网行业.之前的公司一直在用WinServer2003+Tomcat+SqlServer/Oracle这套部署环境.对于Linux+To ...

  6. Windows10自适应和交互式toast通知[1]

    阅读目录: 概述 toast通知的结构 视觉区域(Visual) 行为(Actions) 特定场景下的Toast通知 带多内容的通知 带行为的通知(例子1) 带行为的通知(例子2) 带文本输入框和行为 ...

  7. 利用AOP写2PC框架(一)

    并不是很想写这个系列,因为这个2pc单独写一个小架构有点鸡肋.不过也不知道写什么了,先写了再说吧. 整个流程如下图: 关于AOP系列的文章很多,我这里也再重复造一下轮子. 首先,我们定义了一个IAop ...

  8. ASP.NET Web API Selfhost宿主环境中管道、路由

    ASP.NET Web API Selfhost宿主环境中管道.路由 前言 前面的几个篇幅对Web API中的路由和管道进行了简单的介绍并没有详细的去说明一些什么,然而ASP.NET Web API这 ...

  9. rsync 笔记之 list

    通过 rsync --list-only 可以列出可用的 文件/目录或者 module 下面两者的含义是完全不同的: rsync --list-only root@192.168.4.140: 使用系 ...

  10. 解析大型.NET ERP系统 设计通用Microsoft Excel导入功能

    做企业管理软件很难避免与Microsoft Excel打交道,常常是软件做好了,客户要求说再做一个Excel导入功能.导入Excel数据的功能的难度不大,从Excel列数据栏位的取值,验证值,再导入到 ...