Java-分布式企业级架构系列
JAVA-SpringCloud-SpringBoot-SpringMVC-SpringAOP-SpringIOC-Mybatis
牵牛刘先生
曾任职于用友政务软件JAVA大数据工程师,目前任职于河南丰博计量创新研究院云平台部部长,河南丰博水联网研发部智慧水务项目负责人及产品经理,河南丰博智能水联网有限公司技术研发部部长。
展开
-
【JAVA企业级开发】Java List<>集合中泛型为对象时,使用containsAll方法来判断一个Llist<>集合是否包含另一个List<>集合会出现的问题
一containsAll方法今天上班的时候遇到一个坑,我把java list集合中存入对象,然后用containsAll 方法进行比较时,明明一个List集合包含另一个List集合的元素,但是结果总是返回 false。1部分代码块如下@Override @Transactional(rollbackFor = Exception.class) public boolean validate(Account account) { boolean flag = false;原创 2020-09-07 12:03:51 · 2364 阅读 · 0 评论 -
【JAVA企业级开发】Spring Cloud组件OpenFeign消费者采用POJO对象向对服务提供者传递表单的过程中,总结我们团队遇到很多关于OpenFeign传递参数的问题和坑。
一问题总结1消费者和原创 2020-09-04 15:43:06 · 807 阅读 · 0 评论 -
【JAVA企业级开发】Alibaba Java Coding Guidelines plugin:方法需要在Transactional注解指定rollbackFor或者在方法中显示的rollback。
这里写目录标题一级目录二级目录三级目录一 Alibaba Java Coding Guidelines plugin的提示二简单回顾Java Exception三 简单回顾 事务管理方式1、原子性(atomicity)2、一致性(consistency)3、隔离性(isolation)4、持久性(durability)四Spring框架Transactional注解的rollback属性介绍五 加入rollback属性之后的service代码一级目录二级目录三级目录一 Alibaba Java Co原创 2020-08-25 11:59:48 · 910 阅读 · 0 评论 -
【JAVA企业级开发】Alibaba Sentinel Dashboard1.6+ 实现对Spring Cloud Gateway的流量管理控制
这里写目录标题一级目录二级目录三级目录一. 前言二.Sentinel网关流控实现原理三Sentinel文档三Sentinel整合gateway模块实践测试1依赖2 配置3配置类4启动类5测试①使用网关访问服务若干次②打开Sentinel Dashboard1.7.0 ,可看到 Sentinel 对 gateway已经起到了监控作用③测试对Gateway 总流量接口 限流④测试对route ID 限流一级目录二级目录三级目录一. 前言2019年4月25号,Alibaba Sentinel Dash原创 2020-08-18 16:14:06 · 495 阅读 · 0 评论 -
【JAVA企业级开发】成功解决Gateway整合Sentinel会出现的Web依赖的问题:Error creating bean with name ‘servletRequestListener‘
这里写目录标题一级目录二级目录三级目录一 为什么要整合Gateway整合Sentinel二错误异常三我们都知道gateway项目不能同时依赖spring-boot-starter-web四 我们也知道Sentinel是基于传统的web框架的,依赖于spring-boot-starter-web。1 分析错误2解决错误2.1低于3.1版本的依赖:2.2无法解决问题2.3换成高于3.1版本的servlet依赖2.4成功解决问题,sentinel和gateway整合成功!一级目录二级目录三级目录一 为什么原创 2020-08-15 10:30:55 · 1437 阅读 · 1 评论 -
【JAVA企业级开发】给公司两个分布式技术组件Netflix-Eureka,SpringCloud-Config做零代码无痛人流迁移手术,并且技术组件更换为Alibaba-Nacos。
https://github.com/alibaba/nacos/releases/tag/1.3.2原创 2020-08-13 17:00:02 · 244 阅读 · 0 评论 -
【JAVA企业级开发】还在使用Netflix已经停止运维的Zuul网关么?看完这篇文章让你掌握Spring官方推荐的Zuul的替代品,第二代分布式微服务网关组件Gateway以及服务I/O,多线程原理
一Spring Cloud Gateway官网技术文档:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.3.RELEASE/reference/html/#glossary该项目提供了一个在Spring生态系统之上构建的API网关,包括:Spring 5,Spring Boot 2和Project Reactor。Spring Cloud Gateway旨在提供一种简单而有效的方法来路由到API,并为它们提供跨领原创 2020-08-07 10:47:32 · 1895 阅读 · 0 评论 -
【JAVA企业级开发】Sentinel的限流控制,熔断降级处理基于OpenFeign(Ribbon)统一Fallback处理的整合和 Sentinel的@SentinelResource注解的应用属性
二,实现服务降级有两种方案1.设置ribbon超时时间,调用超时后,自动会降级(如果不设置,自己测试了一下两个属性默认都是2秒,即不设置则自动使用2秒超时服务降级方案)ribbon: #连接服务超时时间为5秒 ConnectTimeout: 5000 #连接后,处理请求的超时时间为5秒 ReadTimeout: 5000 2.设置Sentinel降级配置,如设置超过平均响应时间则降级 下载Sentinel控制台jar,地址https://github.com/alibaba/.原创 2020-08-04 10:14:05 · 2286 阅读 · 1 评论 -
【JAVA企业级开发】全网最详细的一篇微服务雪崩效应治理组件Sentinel,Hystrix,Resilience4j各自应用过程和功能特点介绍以及微服务治理技术选型的更替,整合。
Hystrix停更消息原创 2020-07-30 17:47:12 · 537 阅读 · 1 评论 -
【JAVA企业级开发】SpringCloud微服务调用组件Feign,OpenFeign,Ribbon相互之间的区别,以及这三个微服务调用组件单独使用其中一种和两种相互组合一起使用的效果和特点
一Feign和OpenFeign在springcloud中,openfeign是取代了feign作为服务调用组件的,feign最早是netflix提供的,他是一个轻量级的支持RESTful的http服务调用框架,内置了ribbon,而ribbon可以提供负载均衡机制,因此feign可以作为一个负载均衡的远程服务调用框架使用。feign后来不升级了,被github的openfeign取代,openfeign在feign的基础上,又支持springmvc注解的功能。二Ribbon和OpenFeignOpe原创 2020-07-27 16:20:25 · 526 阅读 · 0 评论 -
【JAVA企业级开发】详解分布式系统中负责服务调用的Ribbon组件与Eureka组件的集成应用,通过配置类修改调用服务的负载均衡算法和自定义负载均衡规则的过程
这里写目录标题一级目录二级目录三级目录一 搭建自身带有负载均衡策略的消费者系统模块(首先参考我前几篇文章使用springboot实现的消费者的过程)1pom2启动类(相对于springboot实现)3配置文件1SpringBOOT的启动配置文件`application.properties`改成SpringCloud的启动配置文件`bootstrap..properties`2需要增加相关配置二整个用于测试的项目的整体结构1 三个相同的服务客户端模块2 三个不同的数据库对应三个相同的服务客户端3 三个eur原创 2020-07-24 18:19:48 · 142 阅读 · 0 评论 -
【JAVA企业级开发】Eureka,Hystrix,Feign开源流产对我们生产开发和学习真的有影响么?对于Springcloud全家桶版本升级迭代,依赖更新,技术组件停用和替换,我们学习该如何选择?
一SpringCloud-Springboot版本对应1版本对应springboot1.5.2.RELEASE springcloud-Dalston.RC1springboot1.5.9.RELEASE springcloud-Edgware.RELEASEspringboot2.0.2.RELEASE springcloud-Finchley.BUILD-SNAPSHOTspringboot2原创 2020-07-23 16:22:39 · 253 阅读 · 0 评论 -
【JAVA企业级开发】全网首篇最详细从源码出发探析Springcloud-eureka集群配置调优大全和Springcloud-eureka-server自我保护机制的源码解析和案例调试
六 关于Eureka的自我保护模式1引入自我保护模式首先对Eureka注册中心需要了解的是Eureka各个节点都是平等的,没有ZK中角色的概念, 即使N-1个节点挂掉也不会影响其他节点的正常运行。默认情况下,如果Eureka Server在一定时间内(默认90秒)没有接收到某个微服务实例的心跳,Eureka Server将会移除该实例。但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,而微服务本身是正常运行的,此时不应该移除这个微服务,所以引入了自我保护机制。2自我保护机原创 2020-07-23 08:56:57 · 165 阅读 · 0 评论 -
【JAVA企业级开发】详解在本机环境下构建高可用分布式Eureka server集群的配置过程,应用过程和测试监控面板变化过程
这里写目录标题一级目录二级目录三级目录一修改本机host,用于在单机情况下构建伪集群二 集群中各个eurekaserver的配置文件bootstrap.properties1eureka-server-12eureka-server-23eureka-server-3三依赖(三个server都一样)1eureka-server-12eureka-server-23eureka-server-3四集群间通信测试五 微服务提供者和集群之间通信测试1修改配置文件,将交互地址改写成三个集群服务器的地址2测试一级目原创 2020-07-22 14:59:54 · 190 阅读 · 0 评论 -
【JAVA企业级开发】通过一个基于REST的服务发现框架Euraka的开发,生产和运维案例,带你掌握SpringCloud微服务架构的微服务基础件Euraka的系统服务注册消费原理和应用过程
一SpringCloud能干什么Spring Cloud由众多子项目组成,如Spring Cloud Config、Spring Cloud Netflix、Spring Cloud Consul 等,提供了搭建分布式系统及微服务常用的工具,如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性token、全局锁、选主、分布式会话和集群状态等,满足了构建微服务所需的所有解决方案。服务发现——Netflix Eureka客服端负载均衡——Netflix Ribbon断路器——Netflix原创 2020-07-16 17:05:10 · 524 阅读 · 0 评论 -
【JAVA企业级开发】实际生产中Eureka(server,client,instance)的application.properties配置大全(Server,Client,Instance)
一SpringCloudSpringCloud是一个完整的微服务治理框架,包括服务发现和注册,服务网关,熔断,限流,负载均衡和链路跟踪等组件。SpringCloud-Eureka主要提供服务注册和发现功能。本文提供了该组件配置的全面说明。Eureka服务端:负责服务注册、发现并管理每项服务的中心Eureka实例:服务(如订单系统)部署多个服务器,每个服务器上提供的服务都是实例。Eureka服务:指提供特定服务功能的服务,例如:订单系统,同一服务可以提供多个实例;Eureka客户端:主要向服务中心原创 2020-07-16 11:08:30 · 783 阅读 · 0 评论 -
【JAVA企业级开发】在你学习Dubbo/SpringCloud/分布式系统/微服务架构之前,通过一个简单服务架构(SpringBoot+RestTemplate)理解消费者和生产者各自的含义和用途
一单体应用到分布式系统演变过程1、单应用架构早期的系统大部分都是单应用架构,所有的模块集成在一个应用里面,只需要一台应用服务器和一台数据库服务器,随着访问量的增加,服务器负载的慢慢提高,解决性能瓶颈的方案是不断提高服务器的配置。2、应用服务器集群随着访问量的继续增加,单台应用服务器已经无法满足需求,假设我们的数据库服务器还没遇到性能问题,我们可以通过增加应用服务器的方式来将应用服务器集群化,这样用户可以分流到各个应用服务器中,从而达到提升系统负载能力的目的。但是应用服务器集群会带来的问题:用原创 2020-07-15 17:29:52 · 378 阅读 · 0 评论 -
【JAVA企业级开发】关于maven中的dependency通过(type pom /type),(scope import /scope)的依赖方式解决POM单继承问题的思考理解
一在maven多模块项目中,为了保持模块间依赖的统一,常规做法是在parent model中,使用dependencyManagement预定义所有模块需要用到的dependency(依赖)<?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原创 2020-07-14 15:58:19 · 1101 阅读 · 0 评论 -
【JAVA企业级开发】教你如何快速的将前后端不分离以及难以处理的老旧SSM-War项目(Spring+Mybits+SpringMVC+JSP)改造成便于操作的SpringBoot-Jar项目
1·原创 2020-07-13 16:50:39 · 1183 阅读 · 0 评论 -
【JAVA企业级开发】Springboot通过url请求遍历访问服务器项目外部静态资源拒绝或者404?教你使用Java+Js实现运行在服务器的项目中遍历项目外部资源文件夹下所有文件并显示在客户端页面上
111原创 2020-07-07 22:13:35 · 979 阅读 · 0 评论 -
【JAVA企业级开发】在JAVA生产项目中的关于实现单文件上传功能模块,多文件上传功能模块的优化方法以及用户上传文件成功之后的自动给用户发送邮件提醒的实现过程
Java利用MultipartFile实现上传多份文件的代码 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="utf-8"></property> <property name="maxUploadSize" value=原创 2020-07-07 12:59:54 · 914 阅读 · 0 评论 -
【JAVA开发入坑记】开发一个当用户完成了某个操作,系统会自动向发送邮件的功能模块,项目本地开发测试有效,当部署上线linux测试的时候,系统在这个模块中的请求都会连接超时.
一原因竟是 没有开放 SMTP文件传输服务的25端口原创 2020-06-17 15:58:08 · 877 阅读 · 0 评论 -
【JAVA企业级开发】浅谈关于在WEB大前端已然降临的时代中,你是否还是在学习jsp、freemarker、velocity、themleaf等模板引擎么?
一在java领域,表现层技术主要有四种:jsp、freemarker、velocity,themleaf1jsp是大家最熟悉的技术优点:1、功能强大,可以写java代码2、支持jsp标签(jsp tag)3、支持表达式语言(el)4、官方标准,用户群广,丰富的第三方jsp标签库5、性能良好。jsp编译成class文件执行,有很好的性能表现缺点:jsp没有明显缺点,非要挑点骨头那就是,由于可以编写java代码,如使用不当容易破坏mvc结构。2velocity是较早出现的用于代替jsp的模板原创 2020-06-05 11:06:09 · 796 阅读 · 0 评论 -
【JAVA企业级开发】SpringBOOT篇--------SpringApplication类配置属性大全合集
SpringApplication类配置属性大全1 mvcspring.mvc.async.request-timeout设定async请求的超时时间,以毫秒为单位,如果没有设置的话,以具体实现的超时时间为准,比如tomcat的servlet3的话是10秒.spring.mvc.date-format设定日期的格式,比如dd/MM/yyyy.spring.mvc.favicon.enabled是否支持favicon.ico,默认为: truespring.mvc.ignore-default-mo原创 2020-05-24 21:22:25 · 558 阅读 · 0 评论 -
【JAVA企业级开发】SpringCloud篇--------教你解决在SpringCloud分布式/微服务架构系统中CAS单点登录和cookie跨域请求,session跨服的方法
一、什么是单点登录单点登录的英文名叫做:Single Sign On(简称SSO)。在初学/以前的时候,一般我们就单系统,所有的功能都在同一个系统上。后来,我们为了合理利用资源和降低耦合性,于是把单系统拆分成多个子系统。比如阿里系的淘宝和天猫,很明显地我们可以知道这是两个系统,但是你在使用的时候,登录了天猫,淘宝也会自动登录。二、回顾单系统登录在我初学JavaWeb的时候,登录和注册是我做得最多的一个功能了(初学Servlet的时候做过、学SpringMVC的时候做过、跟着做项目的时候做过原创 2020-05-22 15:12:10 · 1389 阅读 · 0 评论 -
【JAVA企业级开发】SSM篇--------用一个真实案例告诉你在使用SSM框架开发企业级Web项目中的登录注册业务时需要注意的问题
功能简介和项目最终成型效果预览:1滑块代替验证码来控制登录注册验证2全局拦截器:`1没有进去登录页面之前无法访问其他所有的页面(设置登录页面为主页)`,`2没有成功登录之前无法进入index页面(设置进入index页面的权限)`首先访问注册页面,被拦截器拦截,然后返回登录页面.返回login页面在返回login页面之后,再次点击免费注册进入注册页面就不会再被拦截器拦截...原创 2020-04-25 23:55:29 · 1249 阅读 · 0 评论 -
【JAVA企业级开发】SSM篇----Spring Mybitis SpringMVC 整合(完整精细版)
一 Spring Mybitis SpringMVC整合之xml配置文件1 整合spring,springmvc和mybitis的pom依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://ww...原创 2020-04-15 11:17:03 · 294 阅读 · 0 评论 -
【JAVA企业级开发】基于请求驱动的轻量型Web框架SpringMVC篇--------从基础到精通掌握SpringMVC框架
一SpringMVC入门Spring MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web 框架,即使用了MVC架构模式的思想,将web 层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。1、springmvc能做什么√让我们能非常简单的设计出干净的Web 层和薄薄...原创 2020-04-13 15:58:39 · 1398 阅读 · 0 评论 -
【JAVA企业级开发】Spring+Mybatis篇--------一站式轻量级开源框架Spring整合持久层框架Mybitis的两种方式xml配置文件与anno注解(完整精细版)
一Spring整合 Mybitis(配置文件版)原创 2020-04-08 13:38:25 · 148 阅读 · 0 评论 -
【JAVA企业级开发】一站式轻量级开源框架Spring------SpringJDBC事务管理(完整精细版)
一、数据库事务原理事务管理是企业级应用程序开发中必备技术,用来确保数据的完整性和一致性1事务的ACID特性以及实现原理概述原子性(Atomicity):事务中的所有操作作为一个整体像原子一样不可分割,要么全部成功,要么全部失败。一致性(Consistency):事务的执行结果必须使数据库从一个一致性状态到另一个一致性状态。一致性状态是指:1.系统的状态满足数据的完整性约束(主码,参照完整...原创 2020-04-03 15:02:24 · 263 阅读 · 0 评论 -
【JAVA企业级开发】 一站式轻量级开源框架Spring------SpringAOP(完整精细版)
传统java开发中,核心方法与横切关注点耦合案例:原创 2020-04-02 13:04:42 · 308 阅读 · 0 评论 -
【JAVA企业级开发】 一站式轻量级开源框架Spring------SpringIOC/DI(完整精细版)
一Spring简介1、Spring简介Spring是于2003 年兴起的一个轻量级(框架api与代码耦合很低)的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用...原创 2020-03-15 00:03:02 · 1407 阅读 · 0 评论 -
【JAVA企业级开发】开源持久层ORM(对象关系型映射)框架:Mybatis(完整精细版)
一、Mybatis简介1.开源项目:开放源代码的项目2.Mybatis是一个开源的持久层(操控库表技术与jdbc是同样功能)框架。3.历史MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。iBATIS一词来源...原创 2020-03-02 23:30:04 · 630 阅读 · 0 评论