分布式服务
文章平均质量分 52
hcmony
不积跬步,无以至千里;不积小流,无以成江海
展开
-
跨域问题 has been blocked by CORS policy: The request client is not a secure context
问题描述,前端请求后端接口出现了跨域,get请求是OK 的,POST 请求有问题。请求链路是前端请求接口先到服务端的网关系统,再由网关系统转发到其他业务系统中。第一步、首先看两个相关的服务是不是没有加跨域的配置。经检查发现两台服务都加了跨域代码,如下:业务系统解决跨域代码:@Configurationpublic class CorsConfiguration { @Bean public WebMvcConfigurer corsConfiguration() {原创 2021-10-21 14:20:52 · 17417 阅读 · 0 评论 -
时间窗口算法基于redis -zset 实现
时间窗口算法又名滑动时间算法,所谓的滑动时间算法指的是以当前时间为截止时间,往前取一定的时间,比如取1s的时间,在这1s时间内最大的访问数为1000。把这1秒分为1000格,每格是1毫秒。滑动时间窗口如下图所示:转存失败重新上传取消其中每一个小格子代表1ms,比如1s允许200次请求,那么就分成1000个小格。如何实现?借助Redis的有序集合ZSet来实现时间窗口算法限流,实现的过程是:第一步:先使用ZSet的key存储限流的ID,score用来存储请求的时间。第...原创 2020-08-12 17:43:50 · 1957 阅读 · 1 评论 -
通过redis生成分布式自增的订单编号
在我们电商交易系统里面经常会生成订单号,一般采用UUID直接生成字符串,理论情况下不会重复,但是还是有可能重复的,并且这种订单号可读性特别差,所以我们会选择用redis来生成订单号,具体代码如下:1,用DateHelper生成由年月日时分秒生成14位数,再通过redis生成6位数。这种可以用BigInteger存储,理论上可以支持1秒产生100万个订单,如果实际生产会更大,可以把倍数值调大。...原创 2019-10-24 19:51:39 · 2758 阅读 · 0 评论 -
idea创建springcloud项目图文教程(创建消费者)(八)
前期条件,已经创建好注册中心,如果没有,请看上一篇http://blog.csdn.net/hcmony/article/details/77855158。一,创建服务提供者springcloud项目创建参考http://blog.csdn.net/hcmony/article/details/778551581,pox.xml <?xml version="1.0" ...原创 2017-09-05 20:35:19 · 9864 阅读 · 10 评论 -
idea创建springboot项目图文教程(四)
用idea创建springboot项目。1,new -project 选择spring initializr 2,创建自己的包名,类名。 3,这一步默认 4,项目名 5,完成,最终项目结构。 下一篇会把具体的配置文件给出 springcloud 源代码 https://github.com/hcmony/sp...原创 2017-09-05 19:09:13 · 7965 阅读 · 0 评论 -
idea创建springcloud项目图文教程(Feign实现负载均衡)(九)
1,创建注册中心http://blog.csdn.net/hcmony/article/details/778551582,创建服务提供者http://blog.csdn.net/hcmony/article/details/77855843画重点,这里创建两个或者多个的服务。把application.properties 里面的server.port=8762...原创 2017-09-05 20:49:22 · 9523 阅读 · 2 评论 -
自定义注解拦截web请求对返回结果进行有针对的替换
目地:很多程序页面中会用到很多的静态资源文件(image/css/js),有些是页面中初始化加载的,有些是通过后台接口返回给页面动态加载的。这些静态资源文件的域名是写死的(www.xxx.com/ss.xxx.com),目前有些浏览器或平台会对这些域名封禁,我们需要一个能快速替换静态资源文件地址中域名的方案。方案:后台的接口,在返回结果时对有包含指定的域名进行替换。这里考虑使用AOP拦...原创 2019-01-24 20:52:11 · 876 阅读 · 0 评论 -
自定义注解通过aop拦截用户访问信息并存入到数据库中
目地:我们很多程序每天有大量用户访问,特别是一些增删改操作,如果每一笔操作都写一条SQL插入对程序的侵入太大了,但是这些操作又非常有必要保存。方案:这里考虑使用AOP拦截器,在接口请求时对@Logbefore的注解进行切面拦截,通过前置通知获取返回的对象,然后遍历对象中的请求的属性和参数进行记录。环绕拦截请看自定义注解通过aop拦截用户访问信息并存入到数据库中(二)前置拦截具体...原创 2019-01-24 21:05:28 · 944 阅读 · 0 评论 -
自定义注解通过aop拦截用户访问信息并存入到数据库中(二)
目地:我们很多程序每天有大量用户访问,特别是一些增删改操作,如果每一笔操作都写一条SQL插入对程序的侵入太大了,但是这些操作又非常有必要保存。方案:这里考虑使用AOP拦截器,在接口请求时对@LogAround的注解进行切面拦截,通过前置通知获取返回的对象,然后遍历对象中的请求的属性和参数进行记录。前置拦截与公共的3,4,5请看自定义注解通过aop拦截用户访问信息并存入到数据库中(-...原创 2019-01-24 21:09:59 · 500 阅读 · 0 评论 -
springboot org.apache.catalina.LifecycleException: A child container failed during start
springboot org.apache.catalina.LifecycleException: A child container failed during start严重: A child container failed during startjava.util.concurrent.ExecutionException: org.apache.catalina.Lifecy...原创 2019-01-29 14:52:43 · 16735 阅读 · 2 评论 -
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid charact
最近公司升级框架,把之前基于springboot 1.x 的springcloud 升级到基于springboot2.x 的springcloud遇到一个问题:一个接口请求报400错误查看日志错误信息:[2019-03-22 16:29:29.210] [INFO] 22312 --- [io-18501-exec-1] [o.apache.coyote.http11.Http...原创 2019-03-22 16:35:01 · 4063 阅读 · 0 评论 -
17 个方面,综合对比 Kafka、RabbitMQ、RocketMQ、ActiveMQ 四个分布式消息队列
链接:https://www.zhihu.com/question/43557507/answer/370979636 一、资料文档 二、开发语言 三、支持的协议 四、消息存储 五、消息事务 六、负载均衡 七、集群方式 八、管理界面 九、可用性 十、消息重复 十一、吞吐量TPS 十二...转载 2019-05-09 09:31:43 · 445 阅读 · 0 评论 -
淘宝千万级并发分布式架构的14次演进
淘宝千万级并发分布式架构的14次演进一、概述本文以淘宝作为例子,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。二、基本概念在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍:1)分布式系统中的多个模块在不同服务器...转载 2019-08-07 19:32:27 · 600 阅读 · 0 评论 -
idea创建springcloud项目图文教程(创建服务提供者)(七)
前期条件,已经创建好注册中心,如果没有,请看上一篇http://blog.csdn.net/hcmony/article/details/77855158。一,创建服务提供者springcloud项目创建参考http://blog.csdn.net/hcmony/article/details/778551581,pom.xml<?xml version="1.0" ...原创 2017-09-05 20:32:06 · 24599 阅读 · 17 评论 -
idea创建springcloud项目图文教程(bus 消息总线)(十二)
1,pom.xml的配置文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:/..原创 2018-09-19 20:44:36 · 1667 阅读 · 3 评论 -
关于如何回答springMVC原理
面试时,不少求职者被问到springMVC流程,不知道如何回答,大多数在工作中只会使用,但具体工作流程完全不清楚。之前面试三年的工作经验的求职也没有多少能够回答清楚,如果回答不好,会大大降低面试机会,下面结合精通spring+4.x这本书,给大家一个好的回答。springMVC完整工作流程图 实在不知道,能把上面7条记下来就算差不多了。 下面给出原创 2017-08-10 10:24:45 · 845 阅读 · 0 评论 -
SpringMvc之参数绑定注解详解
SpringMvc之参数绑定注解详解引言:前段时间项目中用到了REST风格来开发程序,但是当用POST、PUT模式提交数据时,发现服务器端接受不到提交的数据(服务器端参数绑定没有加任何注解),查看了提交方式为application/json, 而且服务器端通过request.getReader() 打出的数据里确实存在浏览器提交的数据。为了找出原因,便对参数绑定(@转载 2017-08-10 12:37:59 · 571 阅读 · 0 评论 -
Spring事务管理与传播机制详解以及使用实例
写这篇博客之前我首先读了《spring in action》,之后在网上看了一些关于Spring事务管理的文章,感觉都没有讲全,这里就将书上的和网上关于事务的知识总结一下,参考的文章如下:Spring事务机制详解Spring事务配置的五种方式Spring中的事务管理实例详解1 初步理解理解事务之前,先讲一个你日常生活中最常干的事:取钱。 比如你去ATM机取100转载 2017-09-05 12:53:44 · 26909 阅读 · 5 评论 -
项目启动时,控制台不停的输出log日志。
项目启动时不停的打印日志,却没有提示哪里错了,通过各种排查原来是这里的String 后面加上了一个空格,所以在不停的打印日志一般出现这样的问题,都是配置mybatis 配置文件出现了问题,仔细对照查找问题的关键点。原创 2017-07-06 19:20:26 · 11535 阅读 · 1 评论 -
idea创建maven,spring,springmvc,mybatis,项目(二)
用idea创建maven,spring,springmvc,mybatis,项目。前期准备工作:看上一篇,创建maven项目。http://blog.csdn.net/hcmony/article/details/77769278一,目录结构。 1,web.xml <?xml version="1.0" encoding="UTF-8"?><web-a...原创 2017-09-04 19:39:12 · 4095 阅读 · 0 评论 -
idea创建maven,spring,springmvc,mybatis,项目(三)
接上篇 idea创建maven,spring,springmvc,mybatis,项目(二) http://blog.csdn.net/hcmony/article/details/778408911,UserController package com.hcmony.controller;import com.hcmony.model.User;import co...原创 2017-09-04 19:46:40 · 2326 阅读 · 4 评论 -
idea创建springboot项目图文教程(配置文件)(五)
接上篇http://blog.csdn.net/hcmony/article/details/77854948 1,pom.xml <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.o...原创 2017-09-05 19:20:45 · 9545 阅读 · 0 评论 -
idea创建springcloud项目图文教程(EurekaServer注册中心)(六)
上一篇:idea创建springboot项目图文教程(配置文件)(五) http://blog.csdn.net/hcmony/article/details/77854999idea创建springcloud项目图文教程(EurekaServer注册中心)(六)1,new -project 选择spring initializr、2,创建自己的包名...原创 2017-09-05 19:33:15 · 73003 阅读 · 21 评论 -
Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection问题排查
一,我用的数据库访问错误### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Cannot create Po原创 2017-09-01 17:54:59 · 5499 阅读 · 0 评论 -
IDEA中Spring Boot项目MyBaits提示Invalid bound statement (not found)错误
该错误提示没有找到相对应的XML文件,找了很长时间发现在编译后的classes路径下并没有相应的XML文件,这是因为IDEA在编译的时候忽略掉了XML文件解决办法是在pom.xml文件里面加上以下的代码 <build> <resources> <resource> <directory>src/main/resoureces</原创 2017-12-01 11:29:59 · 6464 阅读 · 2 评论 -
idea创建springcloud项目图文教程(zuul实现api网关服务)(十)
1,新建一个SpringBoot项目,这里命名gateway,然后导入相关依赖: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId> &l...原创 2018-08-13 20:44:58 · 5248 阅读 · 0 评论 -
idea创建springcloud项目图文教程(config 实现配置中心)(十一)
1,先创建config-server 项目配置如下package com.hcmony;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.clou...原创 2018-09-19 20:43:42 · 5492 阅读 · 4 评论 -
详解web.xml 中的listener、 filter、servlet 加载顺序
在项目中总会遇到一些关于加载的优先级问题,刚刚就遇到了一个问题,由于项目中使用了quartz任务调度,quartz在web.xml中是使用listener进行监听的,使得在tomcat启动的时候能马上检查数据库查看那些任务未被按时执行,而数据库的配置信息在是在web.xml中使用servlet配置的,导致tomcat启动后在执行quartz任务时报空指针,原因就是servlet中的数据库连接信息未转载 2017-05-02 19:17:41 · 370 阅读 · 0 评论