微服务&Spring
文章平均质量分 76
Spring和微服务相关记录
东皋长歌
花开堪折直须折,莫使无花空折枝
展开
-
响应式编程Spring Reactor探索
基本思想是将所有要处理的I/O事件注册到一个中心I/O多路复用器上,同时主线程阻塞在多路复用器上,通过轮询或者边缘触发的方式来处理网络I/O事件。Reactor设计模式和响应式编程类似,它们都不主动调用某个请求的API,而是通过注册对应接口,实现事件触发执行。创建Mono,设置超时时间为60秒,将任务交给service层去处理,请求会在这儿挂着,然后可以继续接收新的请求。Spring Reactor框架是响应式编程的一个很好的实践,能帮助开发者快速完成相关的需求,能很好的实现支持背压处理。原创 2024-05-08 11:44:53 · 513 阅读 · 0 评论 -
Canal+Springboot实现数据同步,全网唯一一个跑通了的案例
下面代码中的canalServerIp是上面部署了canal的那个服务器的IP,端口是默认的11111, destination就是上面dts(模式是example,也可以是你自己取的实例名)-- 查询是否开启了binlog的格式,需要是row,可以在show后面加一个global,查询全局变量。没想到的是,这玩意儿,号称社区活跃,技术成熟,竟然没找到一个博客写清楚了它的部署,全部是跑不起来的。于是,本着有困难上,没困难制造困难上的初心,决定还是挑战一下其他的方案,比如canal。原创 2024-04-28 17:51:17 · 1017 阅读 · 1 评论 -
规则引擎Drools+Nacos实现动态规则
在内部匹配队里里面,优先级越高的规则,执行顺序越靠前。默认的优先级的值是0,优先级的值可以是正数,也可以是负数。项目中有需要根据规则计算不同收费方费用的需求,后面还会有优惠券、满减、限时折扣之类的规则,同时需要配合不同运营活动动态配置,这些需求对计算的灵活性要求比较高。下面是在nacos中的配置: 格式是text, data-id是drools-rule(随意命名, 只要和项目启动文件里的data-id一致就可以)Drools是比较常用的规则引擎,可以自己定义计算规则,简化项目代码中的逻辑。原创 2024-04-16 08:54:43 · 238 阅读 · 0 评论 -
Spring单元测试+Mockito
单元测试基本上是开发逃不过的一个工作内容,虽然往往因为过于无聊,或者过于麻烦,而停止于项目的迭代之中,不了了之了。其实不是开发们懒,而是上头要求的测试覆盖率高,但是又没有好用的工具,导致工作积压,最后只能舍弃掉这部分。最近发现Spring+junit+mockito很好用,特别是对于DDD架构的项目,可以针对特定的代码层做单元测试,贼好用。2,使用mockito3,覆盖率检测三,实战1,新建测试类idea中在类里ctrl+shift+T注意:只有public方法才能生成原创 2024-03-19 14:56:21 · 666 阅读 · 0 评论 -
Spring 3升级指导
移除 mybatis-plus-boot-starter 中依赖的 mybatis-spring 2.1.1 版本,单独引入高版本 mybatis-spring 3.0.3 版本。Spring开源多年,已经经过了多次的升级迭代,最新的已经到Spring 6了,但是估计大家最常用的还是Spring 2.x。配置文件里,把spring.redis.xxx.xxx改成spring.data.redis.xxx.xxx。- 删除 log4j-api、slf4j-api 依赖,使用默认依赖和版本。原创 2024-03-19 14:03:09 · 980 阅读 · 0 评论 -
Springboot和Spring Cloud版本对应
Spring在不断地升级,各个版本存在一些不兼容的地方,为了避免出现问题,最好注意使用正确的版本。原创 2024-03-18 17:37:44 · 580 阅读 · 0 评论 -
分库分表面试必背
按照某些规则,比如说按照年份,对订单数据库进行划分,一年一个数据库,如db_order_2024,db_order_2025,下面的表和表结构完全一致,但是存储的数据不一样,分别归属于不同年份的订单数据。第三层:因为innodb的叶子节点,是直接包含整条mysql数据的,假设每条数据以1kb计算,那么第三层每个节点为16kb,那么每个节点是可以放16个数据的,所以最终mysql可以存储的总数据为。:对于存在逻辑主外键关系的表,如订单表和订单明细表,可以考虑将它们的数据物理上存储在一起,形成一个绑定表。原创 2024-02-19 15:57:57 · 934 阅读 · 0 评论 -
一次说全COLA应用架构
1,原版COLA 4.0:应用架构的最佳实践_cola实战_程序员万万的博客-CSDN博客2,不知道什么的版本COLA 架构_mob649e815da088的技术博客_51CTO博客3,另外一种不知道什么的版本COLA架构 入门-阿里云开发者社区关于定义确实各说各的,我们可以忽略,只要关注一个本质就好了,那就是大家都提到的分层简单来说,就是专一职责,专业的Layer做专业的事儿,解耦,避免臃肿。给 COLA 做减法:应用架构中的“弯弯绕设计”-阿里云开发者社区没有最佳,只有适合。如无必要,勿增实体!原创 2023-10-20 14:43:41 · 890 阅读 · 0 评论 -
分布式链路追踪系统Skywalking的部署和应用
通过对比可以看到,Pinpoint和Skywalking不相上下,各有优劣,从界面、操作,集成方式来说,Pinpoint更好, 不过因为种种不得已的原因,我们今天还是聚焦在Skywalking上,它的优点是部署难度低,监控范围广、维度多,对代码侵入少,系统性能损失低,还支持接入 ELK 进行存储展示。下图描述的是树结构的Span集合,表示一次完整的跟踪,从请求到服务器开始,服务器返回response结束,跟踪每次rpc调用的耗时,存在唯一标识trace_id。cat: 大众点评开发的实时应用监控平台。原创 2023-10-19 17:49:45 · 1385 阅读 · 0 评论 -
zookeeper可视化工具ZooInspector用法
最近在做银行的项目,用到了thrift,rpc和zookeeper,所有应用都是注册到zookeeper上的,想知道哪些应用注册上了,就用到ZooInspector这个可视化的工具。原创 2023-09-14 19:37:51 · 420 阅读 · 0 评论 -
git拉代码时提示账号密码错误问题解决记录
通常来说执行命令2就可以了,但是有的人本地git版本问题或者其他问题,导致并没有清掉,那么就用命令1,当然两个都执行也可以。Git是常用的代码管理工具,在拉取代码的时候需要配置账号密码信息,如果不对或者需要更换的时候,就需要重新配置一下。命令2:git config --system --unset credential.helper。这样设置之后,后面就只需要配置一次账号信息,不用每次操作git都输密码了。在各个操作的场景下都会触发,输入账号和密码就可以了。步骤二:设置保存账号信息。原创 2023-09-13 16:47:20 · 2567 阅读 · 0 评论 -
RESTful API 面试必问
RESTful API是一种基于 HTTP 协议的 API 设计风格,它提供了一组规范和约束,使得客户端(如 Web 应用程序、移动应用等)和服务端之间的通信更加清晰、简洁和易于理解。原创 2023-08-30 10:54:21 · 566 阅读 · 0 评论 -
一次讲清楚Linux Cron和 Spring Cron
定时任务是我们日常开发中经常用到的一个功能点,无论是Linux服务器上Crontab还是Spring task schedule,都会使用到cron表达式去实现定时任务的配置。不过,一定要注意,Linux cron表达式和Spring的cron表达式不一样,下面来一次讲清楚。原创 2023-08-29 17:46:19 · 330 阅读 · 0 评论 -
Java实现OTP二次验证
首先简单介绍一下OTP:简单就是说,一个时长30秒的动态密码,和账号绑定了,如果需要做身份验证的话,可以用这个动态码做二次验证。更简单说,就是一个安全要求更高的身份验证方式,一个字,牛!废话不多说,开干!原创 2023-08-21 17:46:12 · 1159 阅读 · 0 评论 -
Freemarker+thymeleaf应用实现打印银行小票
背景:最近项目里有个需求,需要动态配置一个模板,来打印各种不同银行或者其他行业的小票,下面小小记录一下实现过程。关键词:Springboot, thymeleaf, Freemarker,html2image。这里是关键,需要遍历数据,并判断数据中属性。2,组装成需要的数据结构。原创 2023-08-14 17:18:44 · 259 阅读 · 0 评论 -
Spring Gateway+Security+OAuth2+RBAC 实现SSO统一认证平台
内容:完整集成了Spring Gateway, Spring Security, Nacos, OAuth2, RBAC, 手机验证码登录等SSO统一认证平台,全平台唯一,全平台最全,全面细致,已经帮你踩了很多坑,一看就会,可以本地运行,或者直接作为认证平台。适合人群:准备搭建SSO平台的架构师,准备学习OAuth2和Spring Gateway结合的高级开发原创 2023-08-10 14:29:43 · 931 阅读 · 2 评论 -
Sentinel持久化规则
项目中有用到Sentinel,然后需要将Sentinel上配置的规则做持久化(或者初始化),通过改写Sentinel源码实现了需求,下面记录一下实现过程。原创 2023-07-31 11:25:39 · 505 阅读 · 0 评论 -
流控平台Sentinel搭建和接入教程
流量控制和限流是大型系统必不可少的组成部分,Sentinel是Alibaba提供的一款特别好用的专业工具,属于那种看起来很牛,用起来也很牛的工具原创 2023-07-31 10:21:32 · 828 阅读 · 0 评论 -
Jenkins搭建最简教程
纠结了一小会儿,到底要不要写这个,最终还是决定简单记录一下,因为Jenkins搭建实在是太简单了,虽然也有坑,但是坑主要在找稳定的版本。先学一个简称,LTS (属实是长见识了,oh yeah!下面是正文部分。原创 2023-07-28 16:28:23 · 894 阅读 · 0 评论 -
Jenkins集成SonarQube保姆级教程
Jenkins是自动化部署平台,一个粗眉大眼的糙汉子!SonarQube是代码扫描平台,一个眉目清秀的小女子!有一天,上天交给我一个任务,去撮合撮合他们!我抬头看了看天,不,天花板。这事儿有戏!原创 2023-07-28 15:05:49 · 1259 阅读 · 0 评论 -
代码扫描平台SonarQube搭建保姆级教程
代码扫描工具SonarQube,想必大家也有了解,就是那种不明觉厉的存在,最近刚好有需求,需要自己搭建,下面就给大家记录下搭建的过程。不了解的,可以先看看有一个初步认识。话不多说,开干!原创 2023-07-28 14:26:10 · 1275 阅读 · 0 评论 -
看完这篇,别再说不会Spring 分库分表了
Springboot + shardingsphere 实现分库分表的需求,比较简单,但是要想真正地投入实用,还有很多路要走,比如实现自定义分库分表规则的算法,自定义分布式表的主键ID,基于分库分表后的排序(默认已实现按分库分表的列进行排序)和分页等等等。t=N6B9Spring多数据源实现https://blog.csdn.net/wangerrong/article/details/131910740。原创 2023-07-26 11:12:53 · 376 阅读 · 0 评论 -
10分钟搭建链路追踪平台
随着项目越来越多,相互调用越来越复杂,搭建一个可视化的链路追踪平台显得尤为重要,今天给大家介绍的是zipkin,一个轻量级的零侵入的链路追踪平台,看我怎么10分钟给大家搭建出来。3, 在数据库建schema为zipkin的库,并在zipkin库下建相关的表。# zipkin要把sleuth产生的日志,抽取的比例,1.0即100%在服务器上建一个目录,通过下面命令下载zipkin.jar。5,在需要跟踪的项目里配置。4,启动zipkin应用。# zipkin的配置。启动项目,并正常使用。原创 2023-07-25 16:10:20 · 142 阅读 · 0 评论 -
10分钟实现任务调度平台搭建
powerjob是目前最灵活的一个可视化在线调度平台了,支持随时修改立即生效,可随时发起调度,支持告警配置。原创 2023-07-25 15:48:25 · 986 阅读 · 2 评论 -
Spring 多数据源方法级别注解实现
Spring框架提供了多种数据源管理方式,其中多数据源管理是其中之一。多数据源管理允许应用程序使用多个数据源,而不是只使用一个数据源,从而提高了应用程序的灵活性和可靠性。多数据源管理的主要目的是让应用程序能够在不同的数据库之间切换,以满足不同的业务需求。例如,如果应用程序需要访问一个高可用性的数据库,但是该数据库当前不可用,那么应用程序可以自动切换到备用数据库,以保证业务的连续性。在多数据源管理中,Spring框架通过使用JNDI(Java命名和目录接口)来管理数据源。JNDI允许应用程序在运行时动原创 2023-07-25 10:17:06 · 683 阅读 · 0 评论 -
Nacos搭建和使用保姆级教程
在/conf目录下的nacos-mysql.sql里。首先在解压后的目录 /conf下的application.properties文件修改数据库配置。往下拉,修改授权相关的配置,下图中设置为false之后,后面服务注册时可以不需要账号密码。其次,注册中心,可选的方案有Eureka, Zookeeper,都得单独部署。首先,配置中心,可选的方案有Apollo,但是得另外部署。3,运行sql,把nacos需要的数据库初始化。到/bin目录,./startup.sh。好用又省钱,简直绝了。原创 2023-07-25 09:38:41 · 645 阅读 · 0 评论 -
阿里云OSS上文件下载后文件名前带下划线前缀问题的解决
背景:最近项目中,一个新人说自己写的文件上传和下载有点儿问题,什么问题呢,就是一个文件上传到阿里云OSS后,文件名都是正常的,但是从阿里云上下载之后,文件名前面代了一个下划线(_),有点儿莫名其妙。如图: 研究了一下他的代码,之后,发现有点儿问题,具体说就是没有设置正确的contentType需要根据具体的文件类型来设置contentType,而不是全部设置为file设置之后,上传文件到阿里云OSS,再下载,完美解决!如果对你有帮助,记得点赞关注转发哦原创 2022-12-04 16:42:09 · 1546 阅读 · 1 评论 -
不允许你还不会OSS文件操作,看完一篇就够了
背景:目前各个公司常用的静态文件服务器是OSS,不管是哪一家云厂商,都会有OSS资源服务提供,在项目中通常会议基础组件的形式存在,很少人会关注,下面就以阿里云为例来介绍一下OSS的使用。原创 2022-09-04 09:22:57 · 1612 阅读 · 0 评论 -
为了给你省1千8,给你推荐这款免费的DTS工具
背景:DTS(Data Transfer Service)数据传输服务,是一个在各大厂比较常用的工具,除了常规的数据库主从复制之外,还有在跨地跨DC之间数据实时传输,都会经常会用到。原创 2022-08-15 22:43:03 · 1081 阅读 · 0 评论 -
直男最好理解的23种Java设计模式
Java里的设计模式是在程序架构和编码中最常使用的,熟练掌握设计模式,可以让你有更好的思路和更科学的编码结构,下面就用直男追MM的来作为例子,介绍23中设计模式,希望能起到抛砖引玉的作用,给大家学习Java设计模式提供帮助。01 工厂方法模式追 MM 少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是 MM 爱吃的东西,虽然口味有所不同,但不管你带 MM 去麦当劳或肯德基,只管向服务员说「来四个鸡翅」就行了。麦当劳和肯德基就是生产鸡翅的 Factory工厂方法模式:客户类和工厂类分开。消费者任.转载 2021-02-21 18:36:08 · 205 阅读 · 0 评论 -
一次学透Java8 Stream流操作[图]!
Stream流操作是JAVA8新增的特性,对于集合操作有较好的性能表现。首先了解一下操作符的概念。什么是操作符呢?操作符就是对数据进行的一种处理工作,一道加工程序;就好像工厂的工人对流水线上的产品进行一道加工程序一样。Stream的操作符大体上分为两种:中间操作符和终止操作符中间操作符对于数据流来说,中间操作符在执行制定处理程序后,数据流依然可以传递给下一级的操作符。中间操作符包含8种(排除了parallel,sequential,这两个操作并不涉及到对数据流的加工操作):...原创 2020-11-09 22:16:49 · 232 阅读 · 0 评论 -
MySql5.7主从同步配置|GTID模式
数据库主从同步配置是开发中比较常见的需求,在MySql里,主从同步主要有两种,bin-log和gtid。下面就主要总结一下使用GTID模式配置主从同步的过程。一,概念全局事务标识:global transaction identifiers; GTID是一个事务一一对应,并且全局唯一ID; 一个GTID在一个服务器上只执行一次,避免重复执行导致数据混乱或者主从不一致; GTID用来...原创 2019-11-19 22:48:15 · 1059 阅读 · 0 评论 -
FastDFS高可用集群架构配置搭建及使用
一,概述FastDFS 是一个开源的高性能分布式文件系统(DFS)。 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。FastDFS 系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)。Tracker Server: 跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的storage ...原创 2019-09-19 10:08:13 · 455 阅读 · 1 评论