spring boot / cloud (二十) 相同服务,发布不同版本,支撑并行的业务需求 有半年多没有更新了,按照常规剧本,应该会说项目很忙,工作很忙,没空更新,吧啦吧啦,相关的话吧, 但是细想想,是真的么?,忙到这几个字都没时间打么?毕竟大家都很忙的,所以忙并不是啥理由. 那是因为啥呢?感觉就只有一个理由能站得住脚了,就是因为"懒". 哈哈.... 尬聊了一段,活跃下气氛,下面进入正题 场景 在实际工作中,大家可能也都遇到过这样的情况 : 一个正在更新迭代过程中项目,会收到大量业…
spring boot / cloud (二) 规范响应格式以及统一异常处理 前言 为什么规范响应格式? 我认为,采用预先约定好的数据格式,将返回数据(无论是正常的还是异常的)规范起来,有助于提高团队间接口对接的效率(前端和后端,后端和后端等). 思路 自定义统一的ResposeBody类 : 用于统一响应格式 自定义统一的Error类 : 用于统一异常格式 自定义异常 : 区分不同场景的异常 实现ExceptionHandler : 用于拦截处理异常 实现 1.创建ErrorResult类 p…
spring boot / cloud (十二) 异常统一处理进阶 前言 在spring boot / cloud (二) 规范响应格式以及统一异常处理这篇博客中已经提到了使用@ExceptionHandler来处理各种类型的异常,这种方式也是互联网上广泛的方式 今天这篇博客,将介绍一种spring boot官方文档上的统一处理异常的方式.大家可以在spring boot 官方文档查看介绍 在开始介绍新的方法之前 , 我们先来分析一下 , 以前的做法有那些地方是需要优化的 场景分析 通常我们需要…
spring boot / cloud (十六) 分布式ID生成服务 在几乎所有的分布式系统或者采用了分库/分表设计的系统中,几乎都会需要生成数据的唯一标识ID的需求, 常规做法,是使用数据库中的自动增长列来做系统主键,但是这样的做法无法保证ID全局唯一. 那么一个分布式ID生成器应该满足那些需求呢 : 全局唯一性 趋势递增 能够融入分库基因 本文将基于snowflake的算法来进行以下的讨论,当然,分布式ID的生成方案有很多, 不过在本文并不会分散开来讨论/比对,因为网上相关的文章实在太多,如…
spring boot / cloud (十四) 微服务间远程服务调用的认证和鉴权的思考和设计,以及restFul风格的url匹配拦截方法 前言 本篇接着<spring boot / cloud (八) 使用RestTemplate来构建远程调用服务>这篇博客来继续讨论微服务间接口调用的认证和鉴权的思考和设计 在上一篇文章中主要是偏实现方面,具体的实现思想没有过多讨论,本篇文章则是主要讨论一下设计的思路. 我们都知道,在微服务的架构设计中,一个大的系统会被按照不同的领域拆分成一个个小的微服务,…
前言 最近几篇文章将围绕消息中间件RabbitMQ展开,对于RabbitMQ基本概念这里不阐述,主要讲解RabbitMQ的基本用法.Java客户端API介绍.spring Boot与RabbitMQ整合. Spring Boot与RabbitMQ整合源码分析. RabbitMQ安装 在使用消息中间件RabbitMQ之前就是安装RabbitMQ. 安装erlang:yum install erlang 下载RabbitMQ安装包: https://www.rabbitmq.com/releases…
spring boot / cloud (十五) 分布式调度中心进阶 在<spring boot / cloud (十) 使用quartz搭建调度中心>这篇文章中介绍了如何在spring boot项目中集成quartz. 今天这篇文章则会进一步跟大家讨论一下设计和搭建分布式调度中心所需要关注的事情. 下面先看一下,总体的逻辑架构图: 分布式调度-逻辑架构示意 架构设计 总体思路是,将调度和执行两个概念分离开来,形成调度中心和执行节点两个模块: 调度中心 是一个公共的平台,负责所有任务的调度,以…
spring boot / cloud (十八) 使用docker快速搭建本地环境 在平时的开发中工作中,环境的搭建其实一直都是一个很麻烦的事情 特别是现在,系统越来越复杂,所需要连接的一些中间件也越来越多. 然而要顺利的安装好这些中间件也是一个比较费时费力的工作. 俗话说"工欲善其事,必先利其器",这篇文章,就跟大家一起分享一下使用docker在本地环境或者测试环境快速搭建我们常用的一些中间件容器的方法, (这里没有提及生产环境,并不是说生产环境不能使用docker,只是说要在生产环…
spring boot / cloud (八) 使用RestTemplate来构建远程调用服务 前言 上周因家里突发急事,请假一周,故博客没有正常更新 RestTemplate介绍: RestTemplate是spring框架中自带的rest客户端工具类,具有丰富的API,并且在spring cloud中,标记@LoadBalanced注解,可以实现客户端负载均衡的rest调用. 思路 RestTemplate虽然提供了丰富的API,但是这些API过于底层,如果不稍加控制,让开发人员随意使用,那…
spring boot / cloud (十九) 并发消费消息,如何保证入库的数据是最新的? 消息中间件在解决异步处理,模块间解耦和,和高流量场景的削峰,等情况下有着很广泛的应用 . 本文将跟大家一起讨论以下其中的异常场景,如题. 场景 在实际工作中,大家可能也都遇到过这样的需求 : 如 : 系统A中的某些重要的数据,想在每次数据变更的时候,将当前最新的数据备份下来,当然,这个备份的动作不能影响当前数据变更的进程. 也更不期望因为备份的操作,影响当前进程的性能. 分析 这是一个比较常见的,可以异…