- 博客(374)
- 资源 (9)
- 收藏
- 关注
原创 高可用性和双机热备浅析
在用户眼里,业务需要永远正常对外提供服务,这就要求应用系统的高可用(High availability,即 HA)。高可用主要是针对架构而言,第一步一般会采用分层的思想将一个庞大的应用系统拆分成应用层、中间件、数据存储层等独立的层,每一层再拆分成更细粒度的组件;第二步就是让每个组件对外提供服务,毕竟每个组件都不是孤立存在的,都需要互相协作,对外提供服务才有意义;第三步就是保证架构中所有组件以及对外暴露服务都要做到高可用,任何一个组件或其服务没做高可用,都意味着系统存在风险。
2023-05-30 20:30:00
198
原创 Redis之高可用方案浅析
redis集群是一种通过将多个redis节点连接在一起以实现高可用性数据分片和负载均衡的技术。根据搭建的方式和集群的特性,redis集群主要有三种模式:主从复制Master-Slave模式、哨兵Sentinel模式和集群Cluster模式。容灾恢复:在哨兵模式下,redis集群可以在主节点出现故障时,快速切换到从节点,实现业务的无缝切换;高可用性:在cluster模式下,redis集群可以在某个节点发生故障时,自动进行故障转移,保证服务的持续可用;
2023-05-29 22:25:30
315
1
原创 Mysql之高可用方案浅析
在工程项目中,系统应用的高可用性越来越重要,业主越来越重视。其实高可用可以分为应用层高可用和数据层高可用,数据层高可用中常见的有关系型数据库mysql的高可用、非关系型NoSQl数据库redis的高可用等,下面聊聊典型的关系型数据库mysql的高可用方案。
2023-05-27 22:05:06
428
1
原创 springboot+mybatis+redis实现二级缓存
Mybatis提供了对缓存的支持,分为一级缓存和二级缓存,其查询顺序为:二级缓存>一级缓存->数据库,最原始是直接查询数据库,为了提高效率和节省资源,引入了一级缓存,为了进一步提高效率,引入了二级缓存。Mybatis一级缓存是sqlSession级别的缓存,缓存的数据只在sqlSession内有效。Mybatis二级缓存是mapper级别的缓存,同一个namespace公用这一个缓存,对sqlSession是共享的。
2023-05-16 19:00:00
514
2
原创 springboot+mybatis搭建maven多模块工程
最近看了一篇博客,选定springboot+mybatis作为框架,在idea中搭建maven的多模块工程,下面也再温习一下,并将搭建过程分享出来,供小伙伴们参考。
2023-05-06 22:15:00
637
原创 springboot中统一功能处理浅析
在springboot工程中实现统一功能的处理,主要分析以下3个统一功能场景:1、统一用户登录权限验证2、统一数据格式返回3、统一异常处理。
2023-04-24 20:00:00
582
原创 springboot中生成csv文件浅析
实现万能的工具类生成csv文件,当不确定类的集合list时,通过反射取出里面的属性名,做第一行表格行标题;通过反射吧类全部字段属性作为key放到map里,同时把值放到value里。
2023-04-17 21:41:33
103
原创 ps -aux命令
ps命令是最基本的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等。ps是显示瞬间进程的状态,并不动态连续;如果想对进程进行实时监控应该用top命令。
2023-04-14 20:00:00
366
原创 springboot打包成jar和war浅析
问题1:一个springboot项目,用mvn install打包成jar,换一台有jdk的机器就直接可以用java -jar 项目名.jar的方式运行,没任何问题,为什么这里不需要tomcat也可以运行了?问题2:一个springboot项目,用mvn install打包成war,放进tomcat运行,发现端口号为什么变成tomcat默认的8080?(在server.port中设置端口8090),项目名称为什么也必须加上?
2023-04-11 22:12:00
437
原创 Kafka进阶(二)
Kafka控制器Controller即Broker,是Kafka的核心组件,其主要作用是在Zookeeper的帮助下管理和协调整个Kafka集群。集群中任意一台Broker都能充当控制器的角色,但是在运行过程中,只能有一个Broker成为控制器,来执行管理和协调的职责,也就是说每个正常运转的Kafka集群,在任意时刻都有且只有一个控制器。
2023-04-10 22:19:19
402
原创 Java中通过UDP协议传输文件
UDP协议本身并不支持大文件传输,因为UDP协议不保证数据的可靠性和顺序性,而且UDP数据包的大小也有限制。因此,在实现UDP传输大文件时,需要进行以下优化:分割文件、数据传输前协商、确认接收、重传机制。当传输文件大小小于65535字节时,可以采用下面方式传输,若文件大小超过65535字节时,则见本文的3种方式。
2023-03-31 21:30:00
304
原创 springboot+netty实现UDP的接收与发送
在springboot工程中集成netty框架实现UDP的接收与发送,话不多说,直接上代码。
2023-03-22 20:30:00
89
2
原创 Java中定时任务浅析
Java中有那些定时任务的实现方式,下面从java原生和spring封装对动态管理定时任务的实现简单的聊一聊,不涉及外部组件的实现方式。
2023-03-21 20:00:00
285
原创 Kafka进阶(一)
Kafka以高吞吐量、低延迟、高并发、高可扩展性而自称,并在越来越多的场景中应用。下面聊聊Kafka高可用、高性能、高并发的设计原理。
2023-03-15 19:00:00
271
原创 浅入浅出keepalived+mysql实现高可用双机热备
当数据库发生宕机的情况,如果配置了数据库主从同步模式或主主同步模式,则可以从从库中获取数据。当数据库发生宕机的情况,要求应用系统实现高可用,应用系统不会受到影响,需要对mysql进行双机热备实现数据库的高可用。实现双机热备的方式有Mycat组件方式、canel组件方式、keepalived组件方式,下面对keepalived实现mysql双机热备进行简单的分析。
2023-03-06 21:53:41
409
原创 Kafka入门(六)
在引入Kafka服务后,当consumer消费完数据后需要进行位移提交,那么提交的位移数据究竟存储到那里,有以何种方式进行存储?
2023-03-01 21:15:00
263
原创 代码名命规范浅析
日常开发编码中,代码的名命是个大学问,能快速的看懂开源代码的结构和意图,也是一项必备的能力。在java项目的代码结构中,采用长名命的方式来规范类的名命,能够自己表达其主要意图,配合高级IDE,可以减少编码攻城狮的记忆负担,靠模糊匹配就能找到所需的资源。借鉴最流行的java开源软件的源码,如netty、spring,guava等,以不同类的方式进行分析和归纳,希望能帮助搭建更好的理解名命的套路。
2023-02-23 21:00:00
293
原创 微服务架构中的缓存设计浅析
缓存在应用软件架构中是提高性能最直接的方式,如下假设应用程序将数据存储在Mysql中,众所周知Mysql会将数据存储在硬盘上以防止掉电造成数据丢失,但是受限于硬盘的物理设计,即使是性能最好的SSD硬盘,也比内存这种高速设备IO层面上差,而以京东、拼多多这种电商为代表的互联网应用,都是典型的读多写少的场景,隐藏需要在设计上进行数据的读写分离,在数据写入时直接落盘,而大部分的读取操作则从以Redis为代表的Nosql数据库中读取,利用内存的高吞吐瞬间完成数据的读取。
2023-02-22 20:00:00
289
原创 浅入浅出keepalived+nginx实现高可用双机热备
Keepalived是一个基于VRRP协议来实现的服务高可用方案。VRRP协议(虚拟路由冗余协议—— Virtual Router Redundancy Protocol,简称VRRP),是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议,1998年已推出正式的RFC2338协议标准。VRRP广泛应用在边缘网络 中,它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱,允许主机使用单路由器,以 及即使在实际第一跳路由器使用失败的情形下仍能够维护路由器间的连通性。
2023-02-14 20:00:00
1971
7
原创 Kafka入门(四)
生产者就是负责向Kafka发送消息的应用程序,消费者就是拉取Kafka消息的应用程序。基于Scala语言编写的客户端,称为旧客户端,已废弃;基于Java语言编写的客户端(从Kafka0.9.x开始),称为新客户端,它弥补了就客户端中存在的诸多设计缺陷;pom依赖。
2023-02-10 22:10:55
400
原创 Kafka入门(二)
下面了解一下Kafka的工作流程,Kafka集群会将消息存储在Topic中,每条记录会由一个Key、一个Value和一个Timestamp组成。Kafka中的消息是以Topic进行分类的,生产者生产消息,消费者消费消息,读取和消费的都是同一个Topic。Topic是逻辑上的概念,Partition是物理上的概念,每个Partition对应一个log文件,该log文件中存储的就是Producer生产的数据。
2023-02-07 20:34:20
295
原创 Kafka入门(一)
Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域(hadoop集群)、物联网领域。
2023-02-03 22:29:56
104
1
原创 springboot+mongodb初体验
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
2023-02-01 20:00:00
857
原创 MongoDB下载安装
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
2023-01-31 15:44:25
641
原创 springboot+mybatisplus实现分页
在日常开发中,多记录的列表查询可能会遇到分页处理的场景,在springboot项目中传统是引入mybatis组件进行持久化,然后通过pagehelper组件进行分页实现。下面体验一下在springboot项目中引入mybatisplus组件,通过其自带分页插件实现分页功能。
2023-01-17 14:47:45
3282
原创 springboot+sa-token-quick-login实现快速登录
试想一下,假如我们开发了一个非常简单的小系统,比如说:服务器性能监控页面, 我们将它部署在服务器上,通过访问这个页面,我们可以随时了解服务器性能信息,非常方便。然而,这个页面方便我们的同时,也方便了一些不法的攻击者,由于这个页面毫无防护的暴露在公网中,任何一台安装了浏览器的电脑都可以随时访问它!当你的项目需要一个登录认证功能,这个登录界面可以不华丽、可以烂,但是一定要有,同时你又不想花费太多的时间浪费在登录页面上, 那么你便可以尝试一下Sa-Token-Quick-Login。
2023-01-11 19:00:00
830
原创 springboot之webmvc和webflux浅析
webmvc是基于servlet的阻塞式模型,一个请求到达服务器后会单独分配一个线程去处理请求,如果请求包含IO操作,线程在IO操作结束之前一直处于阻塞等待状态,这样线程在等待IO操作结束的时间就浪费了。webflux内部使用的是响应式编程(Reactive Programming),以 Reactor 库为基础,基于异步和事件驱动,可以让我们在不扩充硬件资源的前提下,提升系统的吞吐量和伸缩性。webflux是一个异步非阻塞式的 Web 框架,它能够充分利用多核 CPU 的硬件资源去处理大量的并发请求。
2023-01-10 19:00:00
990
原创 springboot+xxl-job初体验
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;动态:支持动态修改任务状态、启动/停止任务,以及终止运行中任务,即时生效;调度中心HA(中心式):调度采用中心式设计,“调度中心”自研调度组件并支持集群部署,可保证调度中心HA;执行器HA(分布式):任务分布式执行,任务”执行器”支持集群部署,可保证任务执行HA;详细查看官网。
2023-01-09 20:00:00
631
原创 Mysql之常见可视化管理工具
mysql在日常开发中作为基础软件,对其数据的管理必不可少,除了系统自带的命令行管理工具之外,还有许多其他的图形化管理工具,下面介绍常见的mysql图形化管理工具。
2023-01-05 21:30:00
5686
4
原创 springboot+disruptor再体验
Disruptor 是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。disruptor在github网址为:https://github.com/LMAX-Exchange/disruptor。引用disruptor作为内部的高性能队列,应用于生产者-消费者模式中还是非常nice的,后面若有工程需求可以尝试一下。Disruptor是一个高性能队列,常见的还有kafka、rabbitmq等,下面体验一下~
2023-01-04 20:00:00
766
4
原创 CSDN官方猿如意工具体验
猿如意是一款面向开发者的辅助开发工具箱,包含了效率工具、开发工具下载,教程文档,代码片段搜索,全网搜索等功能模块。帮助开发者提升开发效率,帮你从“问题”找到“答案”。具体详细信息查看上面官网。
2023-01-03 17:16:46
2852
4
原创 springcloud+nacos+gateway+oauth2+jwt再相聚
在springcloud微服务架构下,如何进行统一的认证、鉴权,一直是大家非常关心的问题,下面对微服务架构下的认证和鉴权继续聊聊,一是自己的再次思考总结,二是希望对小伙伴有所帮助。在微服务中,不应该把重复校验认证和鉴权的功能集成到每个业务服务中,应该在认证服务做统一认证,在网关中做统一校验,这样才是优雅的微服务架构的安全解决方案。下面搭建网关服务,它将作为oauth2的资源服务、客户端服务使用,对访问业务服务的请求进行统一的校验认证和鉴权,校验通过进行动态路由。
2022-12-30 19:00:00
1191
13
原创 springboot+security自定义认证异常和授权异常
如果是springboot+security项目,并且定义了全局异常,那上面的授权异常AccessDeniedException及子类和认证异常AuthenticationException及子类都会优先被全局异常执行,导致security配置的异常处理不起作用,主要原因是执行先后的问题,spring请求中各组件执行顺序如下:Controller》Aspect》ControllerAdvice》Interceptor》Filter。1、Spring Security异常。2、自定义认证异常和授权异常。
2022-12-28 19:00:00
959
3
原创 kafka再浅析
通常可以使用kafka-console-consumer.sh和kafka-console-producer.sh脚本来测试 Kafka 生产和消费,kafka-consumer-groups.sh可以查看和管理集群中的 Topic,kafka-topics.sh通常用于查看 Kafka 的消费组情况。Kafka 有消费组的概念,每个消费者只能消费所分配到的分区的消息,每一个分区只能被一个消费组中的一个消费者所消费,所以同一个消费组中消费者的数量如果超过了分区的数量,将会出现有些消费者分配不到消费的分区。
2022-12-27 21:00:00
337
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人