大家好,我是不才陈某TiDB是一个分布式NewSQL数据库。它支持水平弹性扩展、ACID事务、标准SQL、MySQL语法和MySQL协议,具有数据强一致的高可用特性,是一个不仅适合OLTP场景还适合OLAP场景的混合数据库。TiDB是PingCAP公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理(HybridTransactionalandAnalyticalProcessing,HTAP)的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用...
大家好,我是不才陈某本文将从,Kafka、RabbitMQ、ZeroMQ、RocketMQ、ActiveMQ17个方面综合对比作为消息队列使用时的差异。1.资料文档Kafka:中,有kafka作者自己写的书,网上资料也有一些。rabbitmq:多,有一些不错的书,网上资料多。zeromq:少,没有专门写zeromq的书,网上的资料多是一些代码的实现和简单介绍。rocketmq:少,没有专门写rocketmq的书,网上的资料良莠不齐,官方文档很简洁,但是对技术细节没有过多的描述。...
大家好,我是不才陈某1为什么要拆分?先看一段对话:从上面对话可以看出拆分的理由:1)应用间耦合严重。系统内各个应用之间不通,同样一个功能在各个应用中都有实现,后果就是改一处功能,需要同时改系统中的所有应用。这种情况多存在于历史较长的系统,因各种原因,系统内的各个应用都形成了自己的业务小闭环;2)业务扩展性差。数据模型从设计之初就只支持某一类的业务,来了新类型的业务后又得重新写代码实现,结果就是项目...
大家好,我是不才陈某Cursor是集成了GPT4的IDE工具,目前免费并且无需APIKey,支持Win、Mac、Linux平台,可以按要求生成代码,或者让AI帮助优化代码,分析代码。Cursor目前已经集成了openai的GPT4,它或将彻底改变我们写代码的方式。以前程序员被调侃是“CV”工程师,以后我们恐怕要成为“KL"工程师,为什么叫”KL“工程师呢,因为只要K和L两个指令就可以直接生成代码、修改代码,哪行代码不会点哪里,他都给你解释得明明白白。...
大家好,我是不才陈某MybatisX是一款基于IDEA的快速开发插件,方便在使用mybatis以及mybatisplus开始时简化繁琐的重复操作,提高开发速率。使用MybatisX的好处节省大量持久层代码开发时间强大的功能为业务编写提供各类支持配置简单,告别各类复杂的配置文件如何使用MybatisX1.创建一个简单的数据库2.创建一个简单的Springboot工程3.在pom.xml文件中引入mybatisplus依赖<!mybatisPlus><dependency><groupId>com.baomidou<groupId...
2.2实现数据库的秒级平滑2N扩容扩容部署架构:2.2.1新增数据库VIP在Server2节点,增加VIP修改etckeepalivedkeepalived.confglobaldefs{routeridvip2}vrrpinstanceVI1{vrrp实例定义stateBACKUPlvs的状态模式,MASTER代表主,BACKUP代表备份节点interfaceens33绑定对外访问的网卡virtualrouterid112虚拟路由标示,同一个vrrp实例采用唯一标示priority100优先级,100代表最大优先级,数字越大优先级越高advertint1master与backup节...
大家好,我是不才陈某在项目初期,我们部署了三个数据库A、B、C,此时数据库的规模可以满足我们的业务需求。为了将数据做到平均分配,我们在Service服务层使用uid%3进行取模分片,从而将数据平均分配到三个数据库中。如图所示:后期随着用户量的增加,用户产生的数据信息被源源不断的添加到数据库中,最终达到数据库的最佳存储容量。如果此时继续向数据库中新增数据,会导致数据库的CRUD等基本操作变慢,进而影响整个服务的响应...
大家好,我是不才陈某面试官在面试候选人时,如果发现候选人的简历中写了在项目中使用了MQ技术(如Kafka、RabbitMQ、RocketMQ),基本都会抛出一个问题:在使用MQ的时候,怎么确保消息100%不丢失?这个问题在实际工作中很常见,既能考察候选者对于MQ中间件技术的掌握程度,又能很好地区分候选人的能力水平。接下来,我们就从这个问题出发,探讨你应该掌握的基础知识和答题思路,以及延伸的面试考点。案例背景以京东系统为例,用...
大家好,我是不才陈某这篇文章介绍下微服务中的一个重要角色:网关,对于网关如何选择,由于阿里系暂时未出网关,当然是选择了SpringcloudGateway,毕竟是亲儿子。已经阅读过该篇文章的朋友可以直接跳过文章目录如下:为什么需要网关?传统的单体架构中只有一个服务开放给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,那么作为客户端如何去调用这些微服务呢?如果没有网关的存在,只能在本地记录每个微服务的调...
大家好,我是不才陈某今天来聊聊微服务中一个重要的话题:如何设计微服务架构下的用户认证方案。今天主要涉及三个方面的内容:传统的用户认证方案;JWT与JJWT;基于网关的统一用户认证。关于微服务的认证、鉴权陈某前面也写过非常多的实战文章,收获了全网一致好评,文章如下,有需要的可以看看:妹子始终没搞懂OAuth2.0,今天整合SpringCloudSecurity一次说明白!OAuth2.0实战!玩转认证、资源服务异常自定义这些...
大家好,我是不才陈某最近知识星球的球友在学习星球中的《精尽SpringCloudAlibaba》专栏提到一个问题,相信也有很多人在线上环境遇到过,或许也因此被批过:一个集群中有某个服务突然下线,但是网关还是会去请求这个实例,所以线上就报错了,报错信息如下图:究其原因到底为何呢?有没有一种靠谱的解决方案呢?别着急,往下看产生原因Gateway中有个缓存CachingRouteLocator,而网关服务使用的是lb模式,服务在上线或者...
大家好,我是不才陈某在与知识星球的球友交流中,最近有很多小伙伴在面大厂,经常遇到下面的问题:3大redis客户端:Jedis、Redisson、Lettuce,如何选型?今天就来深入聊聊这个问题Redis的3大Java客户端组件Redis官方推荐的Java客户端有Jedis、lettuce和Redisson。客户端组件1:JedisJedis是老牌的Redis的Java实现客户端,提供了比较全面的Redis命令的支持、Jedis在线网址:http:tool.oschina.netuploadsapidocsred...
大家好,我是不才陈某前面介绍了SpringCloud中的灵魂摆渡者Nacos,和它的前辈们相比不仅仅功能强大,而且部署非常简单。今天介绍一款服务调用的组件:OpenFeign,同样是一款超越先辈(Ribbon、Feign)的狠角色。文章目录如下:这篇文章之前陈某发过,全网阅读10W+,时隔一年发出来让大家复习复习,部分读者看过可以直接跳过1、Feign是什么?Feign也是一个狠角色,Feign旨在使得JavaHttp客户端...
背景随着云原生、容器化、微服务、k8s等技术的发展,容器Docker也火了一把,同时也逐渐被软件开发者在实践中进行运用。个人在目前接手的项目、参与的项目或技术交流中,发现Docker已经非常普及。对于大多数开发者来说,Docker之所以被广泛使用,最主要的原因可能就是方便,它提供了一套标准化的解决方案,极大地提升了部署、发布、运维的效率。因此,如果你的项目中目前还没有使用Docker,或者想深入了解一下Docker,这篇文章值...
2022-09-13 17:37:01 3121浏览 0点赞 0回复 0收藏
背景在Linux系统操作时,通常不会直接采用root用户。但当某些命令需要root权限执行时,往往会通过sudo命令提升当前用户的执行权限来完成。如果普通用户并未进行配置相应的配置,则在使用sudo命令时会提示“xxx不在sudoers文件中。此事将被报告。“本篇文章就带大家实践一下如何对普通用户配置sudo命令执行的权限。sudo命令权限配置sudo的英文全称是superuserdo,即以超级用户(root用户)的方式执行命令。用户是否拥有sudo命令...
2022-09-13 17:36:44 3437浏览 0点赞 0回复 0收藏
背景越来越多的项目开始基于前后端分离的模式进行开发,这对后端接口的报文格式便有了一定的要求。通常,我们会采用JSON格式作为前后端交换数据格式,从而减少沟通成本等。这篇文章,就带大家了解一下基于SpringBoot框架来封装返回报文以及统一异常处理。报文基本格式一般报文格式通常会包含状态码、状态描述(或错误提示信息)、业务数据等信息。在此基础上,不同的架构师、项目搭建者可能会有所调整。但从整体上来说,基本上...
2022-09-13 17:36:34 1909浏览 0点赞 0回复 0收藏
背景老项目主要采用的POI框架来进行Excel数据的导入和导出,但经常会出现OOM的情况,导致整个服务不可用。后续逐步转移到EasyExcel,简直不能太好用了。EasyExcel是阿里巴巴开源插件之一,主要解决了poi框架使用复杂,sax解析模式不容易操作,数据量大起来容易OOM,解决了POI并发造成的报错。主要解决方式:通过解压文件的方式加载,一行一行地加载,并且抛弃样式字体等不重要的数据,降低内存的占用。在之前专门写过一篇文章《...
2022-09-13 17:36:20 6200浏览 0点赞 0回复 1收藏
背景计划把手头的项目逐步改造为基于Docker容器的方式发布,同时,项目中已经采用了云厂商提供的CICD自动化发布流水线。因此,为配合CICD操作,需要先针对项目构建一些发布的脚本,通过脚本来操作Docker镜像定制、Docker的启动和停止。在阅读和实践本篇文章之前,如果你还未搭建Docker的环境,可参考上篇文章《Linux安装Docker完整教程》,先把整个环境搭建起来,同时熟悉一下Docker的基本操作命令。这篇文章就配合具体的实践案...
2022-09-13 17:35:57 1763浏览 0点赞 0回复 0收藏
背景最近接手了几个项目,发现项目的部署基本上都是基于Docker的,幸亏在几年前已经熟悉的Docker的基本使用,没有抓瞎。这两年随着云原生的发展,Docker在云原生中的作用使得它也蓬勃发展起来。今天这篇文章就带大家一起实现一下在Linux操作系统下Docker的部署过程,收藏起来,以备不时之需。当然,如果对Docker感兴趣的话,可以直接根据本文的步骤操作起来。终有一天你会享受到Docker的便利与魅力的。Docker及系统版本Docker从...
2022-09-13 17:35:41 2637浏览 0点赞 0回复 0收藏
背景无论是前端工程师、运维工程师或后端开发,Nginx是必须掌握的一款组件。它提供了反向代理、负载均衡、动静分离、跨域等功能。在使用的过程中,Nginx的配置相对比较复杂,因此,很多同学基本上都是现搜索,现尝试,现配置。今天给大家推荐一款开源的、可视化的、在线生成Nginx配置的工具,让你的效率提升10倍。NginxConfig开源项目的名称叫nginxconfig,我们就暂且称该工具为nginxconfig吧。访问地址https:www.digitalocean....
2022-09-13 17:35:29 1142浏览 0点赞 0回复 0收藏