什么是XA规范XA规范是XOpen组织定义的分布式事务处理(DTP,DistributedTransactionProcessing)标准。XA规范描述了全局的事务管理器与局部的资源管理器之间的接口。XA规范的目的是允许多个资源(如数据库,应用服务器,消息队列等)在同一事务中访问,这样可以使ACID属性跨越应用程序而保持有效。XA规范使用两阶段提交来保证所有资源同时提交或回滚任何特定的事务。关于两阶段提交事务模式不清楚的可以看之前的文章:七种...
2023-04-20 14:35:52 2707浏览 0点赞 0回复 0收藏
上周知识星球中的球友问了一个关于websocket的问题,大致如下:简单的概括一下:如果我们的项目是分布式环境,登录的用户被Nginx的反向代理分配到多个不同服务器,那么在其中一个服务器建立了WebSocket连接的用户如何给在另外一个服务器上建立了WebSocket连接的用户发送消息呢?今天就来解答一下球友的问题:其实,要解决这个问题就需要实现分布式WebSocket,而分布式WebSocket一般可以通过以下两种方案来实现:将消息(<用户id...
2023-04-19 15:48:29 3979浏览 0点赞 0回复 0收藏
ShardingJDBC目前还整合其他分布式事务模式来解决事务问题,今天就来介绍一下两阶段事务XA是如何解决分布式事务什么是XA规范XA规范是XOpen组织定义的分布式事务处理(DTP,DistributedTransactionProcessing)标准。XA规范描述了全局的事务管理器与局部的资源管理器之间的接口。XA规范的目的是允许多个资源(如数据库,应用服务器,消息队列等)在同一事务中访问,这样可以使ACID属性跨越应用程序而保持有效。XA规范使用两阶段...
2023-04-19 15:48:02 3085浏览 0点赞 0回复 0收藏
上周知识星球中的球友问了一个关于websocket的问题,大致如下:简单的概括一下:如果我们的项目是分布式环境,登录的用户被Nginx的反向代理分配到多个不同服务器,那么在其中一个服务器建立了WebSocket连接的用户如何给在另外一个服务器上建立了WebSocket连接的用户发送消息呢?今天就来解答一下球友的问题:其实,要解决这个问题就需要实现分布式WebSocket,而分布式WebSocket一般可以通过以下两种方案来实现:将消息(<用户id...
2023-04-19 15:47:38 2385浏览 0点赞 0回复 0收藏
SpringSecurityOAuth2的授权码模式一直是个难点,如果你对底层的原理不太理解的话很难去定位到其中的问题今天这篇文章就针对这位朋友提出的问题做个解答,分为如下三个部分:授权码模式的登录页面重定制授权码模式的授权页面重定制授权码模式的异常页面重定制关于OAuth2的授权码模式有不理解的可以看陈某之前文章:妹子始终没搞懂OAuth2.0,今天整合SpringCloudSecurity一次说明白!授权码模式的登录页面重定制下面就以...
2023-04-19 15:47:12 3524浏览 0点赞 0回复 0收藏
今天这篇文章介绍一下RPC中如何使用时钟轮实现定时任务,比如调用端的超时处理、定时心跳....定时任务带来了什么问题?在讲解时钟轮之前,我们先来聊聊定时任务。相信你在开发的过程中,很多场景都会使用到定时任务,在RPC框架中也有很多地方会使用到它。就以调用端请求超时的处理逻辑为例,下面我们看一下RPC框架是如果处理超时请求的。在讲解Future的时候说过:无论是同步调用还是异步调用,调用端内部实行的都是异步,而调用...
2023-04-19 15:46:17 2204浏览 0点赞 0回复 0收藏
前言微服务开发涉及了一些数据处理模块的开发,每个处理业务都会开发独立的微服务,便于后面拓展和流编排。学习了SpringCloudDataFlow等框架,感觉这个框架对于我们来说太重了,维护起来也比较麻烦,于是根据流编排的思想,基于我们目前的技术栈实现简单的流编排功能。简单的说,我们希望自己的流编排就是微服务可插拔,微服务数据入口及输出可不停机修改。准备工作Nacos安装及使用入门自己学习的话推荐使用docker安装,命令如...
2023-04-19 15:38:17 3180浏览 0点赞 0回复 0收藏
这篇文章就来解答介绍一下权限系统的设计以及主流的五种权限模型。权限管控可以通俗的理解为权力限制,即不同的人由于拥有不同权力,他所看到的、能使用的可能不一样。对应到一个应用系统,其实就是一个用户可能拥有不同的数据权限(看到的)和操作权限(使用的)。主流的权限模型主要分为以下五种:ACL模型:访问控制列表DAC模型:自主访问控制MAC模型:强制访问控制ABAC模型:基于属性的访问控制RBAC模型:基于角色的权限访问...
2023-04-19 15:35:38 2362浏览 0点赞 0回复 0收藏
今天这篇文章介绍一下数据库的版本管理、迁移工具Flyway什么是Flyway要解决什么问题?Flyway是一款数据库迁移(migration)工具。简单点说,就是在你部署应用的时候,帮你执行数据库脚本的工具。Flyway支持SQL和Java两种类型的脚本,你可以将脚本打包到应用程序中,在应用程序启动时,由Flyway来管理这些脚本的执行,这些脚本被Flyway称之为migration。“PS:本质上和liquibase机制一致。”按照verion的顺序(和数据库中的更新记...
2023-04-19 15:35:06 4426浏览 0点赞 0回复 0收藏
细心的朋友应该会发现,最近,继新浪微博之后,头条、腾讯、抖音、知乎、快手、小红书等各大平台陆陆续续都上线了“网络用户IP地址显示功能”,境外用户显示的是国家,国内的用户显示的省份,而且此项显示无法关闭,归属地强制显示。作为技术人,那!这个功能要怎么实现呢?HttpServletRequest获取IP下面,我就来讲讲,Java中是如何获取IP属地的,主要分为以下几步:通过HttpServletRequest对象,获取用户的「IP」地址通过IP地...
2023-04-19 15:24:47 2479浏览 0点赞 0回复 0收藏
毫不夸张的说咱们后端工程师,无论在哪家公司,呆在哪个团队,做哪个系统,遇到的第一个让人头疼的问题绝对是数据库性能问题。如果我们有一套成熟的方法论,能让大家快速、准确的去选择出合适的优化方案,我相信能够快速准备解决咱么日常遇到的80%甚至90%的性能问题。从解决问题的角度出发,我们得先了解到问题的原因;其次我们得有一套思考、判断问题的流程方式,让我们合理的站在哪个层面选择方案;最后从众多的方案里面选择...
2023-04-19 15:24:20 2403浏览 0点赞 0回复 0收藏
今天这篇文章聊一聊接口安全问题,涉及到接口的加密、解密和产品、前端同学对外需求后,梳理了相关技术方案,主要的需求点如下:尽量少改动,不影响之前的业务逻辑;考虑到时间紧迫性,可采用对称性加密方式,服务需要对接安卓、IOS、H5三端,另外考虑到H5端存储密钥安全性相对来说会低一些,故分针对H5和安卓、IOS分配两套密钥;要兼容低版本的接口,后面新开发的接口可不用兼容;接口有GET和POST两种接口,需要都要进行加解密...
2023-04-19 15:23:28 2800浏览 0点赞 0回复 0收藏
什么是责任链责任链模式是一种行为设计模式,允许你将请求沿着处理者链进行发送。收到请求后,每个处理者均可对请求进行处理,或将其传递给链上的下个处理者。使用场景责任链的使用场景还是比较多的:多条件流程判断:权限控制ERP系统流程审批:总经理、人事经理、项目经理Java过滤器的底层实现Filter如果不使用该设计模式,那么当需求有所改变时,就会使得代码臃肿或者难以维护,例如下面的例子。反例假设现在有一个闯关游戏,...
2023-04-18 16:51:22 2567浏览 0点赞 0回复 0收藏
在我们平常的编码中,通常会将一些对象保存起来,这主要考虑的是对象的创建成本。比如像线程资源、数据库连接资源或者TCP连接等,这类对象的初始化通常要花费比较长的时间,如果频繁地申请和销毁,就会耗费大量的系统资源,造成不必要的性能损失。并且这些对象都有一个显著的特征,就是通过轻量级的重置工作,可以循环、重复地使用。这个时候,我们就可以使用一个虚拟的池子,将这些资源保存起来,当使用的时候,我们就从池子里...
2023-04-18 16:50:29 2694浏览 0点赞 0回复 0收藏
对于一些用户请求,在某些情况下是可能重复发送的,如果是查询类操作并无大碍,但其中有些是涉及写入操作的,一旦重复了,可能会导致很严重的后果,例如交易的接口如果重复请求可能会重复下单。重复的场景有可能是:黑客拦截了请求,重放前端客户端因为某些原因请求重复发送了,或者用户在很短的时间内重复点击了网关重发….本文讨论的是如何在服务端优雅地统一处理这种情况,如何禁止用户重复点击等客户端操作不在本文的讨论范...
2023-04-18 16:50:11 3007浏览 0点赞 0回复 0收藏
今天来聊聊分布式锁的最强实现:Redisson从分布式锁到Redisson实现非常详细,适合慢慢咀嚼1.Redisson概述什么是Redisson?Redisson是一个在Redis的基础上实现的Java驻内存数据网格(InMemoryDataGrid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。Redisson的宗旨是促进使用者对Redis的关注分离(SeparationofConcern),从而让使用者能够将精力更集中地放在处理业务逻辑上。一个基于Redis实现的分布...
2023-04-18 16:50:00 3069浏览 0点赞 0回复 0收藏
今天这篇文章给大家分享一下灰度发布系统的架构设计,内容非常干关于微服务中如何实现全链路的灰度发布在陈某的SpringCloudAlibaba实战视频专栏中有具体的介绍和代码的实现,从网关灰度到微服务之间灰度发布。灰度发布的定义互联网产品需要快速迭代开发上线,又要保证质量,保证刚上线的系统,一旦出现问题可以很快控制影响面,就需要设计一套灰度发布系统灰度发布系统的作用,可以根据配置,将用户的流量导到新上线的...
2023-04-18 16:49:20 3935浏览 0点赞 0回复 0收藏
今天分享一篇大数据量Excel导入如何优化的文章,非常不错。需求说明项目中有一个Excel导入的需求:缴费记录导入由实施用户将别的系统的数据填入我们系统中的Excel模板,应用将文件内容读取、校对、转换之后产生欠费数据、票据、票据详情并存储到数据库中。在接手之前可能由于之前导入的数据量并不多没有对效率有过高的追求。但是到了4.0版本,预估导入时Excel行数会是10w+级别,而往数据库插入的数据量是大于3n的,也就是说10w...
2023-04-18 16:48:34 3572浏览 0点赞 0回复 0收藏
SpringBoot是最流行的用于开发微服务的Java框架。在本文中,我将与你分享自2016年以来我在专业开发中使用SpringBoot所采用的最佳实践。这些内容是基于我的个人经验和一些熟知的SpringBoot专家的文章。在本文中,我将重点介绍SpringBoot特有的实践(大多数时候,也适用于Spring项目)。以下依次列出了最佳实践,排名不分先后。1、使用自定义BOM来维护第三方依赖这条实践是我根据实际项目中的经历总结出的。SpringBoot项目本身使...
2023-04-18 16:48:10 2562浏览 0点赞 0回复 0收藏
从软件开发早期(1960年代)开始,应对大型软件系统中的复杂性一直是一项令人生畏的任务。多年来为了应对软件系统的复杂性,软件工程师和架构师们做了许多尝试:DavidParnas的模块化和封装(1972),EdsgerW.Dijkstra(1974)的关注点分离以及SOA(1988)他们都是使用分而治之这项成熟的传统技术来应对大型系统的复杂性。自2010年开始,这些技术被证实无法继续应对Web级应用或者现代大型企业级应用的复杂性。因此架构师和工程师...
2023-04-18 16:47:55 1842浏览 0点赞 0回复 0收藏