三、定时同步:如何保持数据一致性3.1为什么需要定时同步在Nacos集群模式下,它作为一个完整的注册中心,必须具有高可用特性。在集群模式下,客户端只需要和其中一个Nacos节点通信就可以了,但是每个节点其实是包含所有客户端信息的,这样做的好处是每个Nacos节点只需要负责自己的客户端就可以(分摊压力),而当客户端想要拉取全量注册表到本地时,从任意节点都可以读取到(数据一致性)。那么Nacos集群之间是如何通过Distro协...
2022-06-28 17:51:47 8059浏览 0点赞 0回复 0收藏
前言最近在折腾ELK日志平台,它是Elastic公司推出的一整套日志收集、分析和展示的解决方案。专门实操了一波,这玩意看起来简单,但是里面的流程步骤还是很多的,而且遇到了很多坑。在此记录和总结下。本文亮点:一步一图、带有实操案例、踩坑记录、与开发环境的日志结合,反映真实的日志场景。日志收集平台有多种组合方式:•ELKStack方式:Elasticsearch+Logstash+Filebeat+Kibana,业界最常见的架构。•Elasticsearch...
2022-06-28 17:49:32 5053浏览 0点赞 0回复 0收藏
三、部署logstash日志过滤、转换工具3.1安装JavaJDK$sudoaptinstallopenjdk8jdk修改etcprofile文件sudovimetcprofile添加如下的内容到你的.profile文件中:JAVAJAVAHOME"usrlibjdkjdk12"PATH"$PATH:$JAVAHOMEbin"再在命令行中打入如下的命令:sourceetcprofile查看java是否配置成功javaversion3.2安装logstash下载logstash安装包curlLOhttps:artifacts.elastic.codownloadslogstashlogstash7.7.1.tar.gz解压安装tarxzvflogstash...
2022-06-28 17:49:23 5852浏览 0点赞 0回复 0收藏
前言上篇我们讲解了如何使用Nacos作为注册中心和配置中心。6000字|20图|Nacos手摸手教程这次我们来聊下Nacos的注册服务的底层原理。Nacos作为注册中心,用来接收客户端(服务实例)发起的注册请求,并将注册信息存放到注册中心进行管理。那么一条注册请求到底会经历哪些步骤呢?知识点预告先上一张整体的流程图:•集群环境:如果是Nacos集群环境,那么拓扑结构是什么样的。•组装请求:客户端组装注册请求,下一步对...
2022-06-28 17:49:08 6010浏览 0点赞 0回复 0收藏
三、随机节点:平等的世界我们来看下客户端是如何随机选择一个节点的,流程图如下:那么如何找到这些代码逻辑呢?思路是怎么样的?我们之前讲过,RpcClient会发起request请求,用的是和Nacos建立currentConnection连接来发起调用,代码如下:发起调用responsethis.currentConnection.request(request,timeoutMills);这个currentConnection是客户端和Nacos集群中的某个节点建立的连接,我们找下它在哪里赋值的。代码如下:拿到Na...
2022-06-28 17:48:54 8301浏览 0点赞 0回复 0收藏
本文主要内容如下:ZAB协议的全称是ZookeeperAtomicBroadcase,原子广播协议。作用:通过这个ZAB协议可以进行集群间主备节点的数据同步,保证数据的一致性。在讲解ZAB协议之前,我们必须要了解Zookeeper的各节点的角色。Zookeeper各节点的角色Leader•负责处理客户端发送的读、写事务请求。这里的事务请求可以理解这个请求具有事务的ACID特性。•同步写事务请求给其他节点,且需要保证事务的顺序性。•状态为LEADIN...
2022-06-28 17:48:40 6449浏览 0点赞 0回复 0收藏
大家好,我是悟空呀。前言最近在倒腾RocketMQ消息队列,小卷了下RocketMQ的源码,本篇会带着大家一起看下如何配置好调试源码的环境。一、获取源码首先就是到Github网站上下载源码。源码地址:https:github.comapacherocketmqreleases我下载的是这个版本:rocketmqrocketmqall4.9.2。如果遇到Github网站的打开速度较慢,可以在公众号后台回复RocketMQ源码即可获取百度网盘链接。二、导入源码下载好了后,用IntelliJIDEA工具导入...
2022-06-28 17:48:09 8612浏览 0点赞 0回复 0收藏
大家好,我是悟空呀学习微服务和中台的必经之路就是DDD,这次我们来卷一波一、概述DDD是什么,DDD的英文全称是DomainDrivenDesign,翻译过来就是领域驱动设计。这种设计一般是用在微服务的系统中,当我们聊微服务的时候,争论最多的就是如何进行微服务的拆分,这也是最让人产生争议的地方。当我们聊微服务也必然会会聊到中台,中台又是什么呢?中台中台从2015年提出,就已经被我们熟知,但是每个人对中台的认识可能都千差万别,...
2022-06-28 17:47:44 7233浏览 0点赞 0回复 0收藏
大家好,我是悟空呀。上次我们讲解了OpenFeign的架构原理,这次我们要来进入Nacos帝国了,Nacos作为服务注册中心、配置中心,已经非常成熟了,业界的标杆,在讲解Nacos的架构原理之前,我先给大家来一篇开胃菜:讲解Nacos如何使用。涉及到如下两个话题:•用Nacos作为注册中心。•用Nacos作为配置中心。由于本篇是针对Nacos的使用和配置教程,可能会略显枯燥,建议大家快速浏览一遍,然后收藏转发下,以后说不定就会用...
2022-06-28 17:47:22 5565浏览 0点赞 0回复 0收藏
二、Nacos作为配置中心2.1传统配置方式•application.properties文件中定义两个配置:member.nickname"悟空聊架构"member.age"18"•示例控制器中定义私有变量nickname和age,value代表从配置中取值Value("${member.nickname}")privateStringnickname;Value("$member.age")privateIntegerage;•示例控制器中定义方法:获取nick和age的值RequestMapping("testlocalconfig")publicRtestLocalConfig(){returnR.ok().put...
2022-06-28 17:41:54 5166浏览 0点赞 0回复 0收藏
大家好,我是悟空。今天我们来看下微服务中非常重要的一个组件:Ribbon。它作为负载均衡器在分布式网络中扮演着非常重要的角色。本篇主要内容如下:在介绍Ribbon之前,不得不说下负载均衡这个比较偏僻的名词。为什么说它偏僻了,因为在面试中,聊得最多的是消息队列和缓存来提高系统的性能,支持高并发,很少有人会问负载均衡,究其原因,负载均衡的组件选择和搭建一般都是运维团队或者架构师去做的,开发人员确实很少接触到。...
2022-06-28 17:41:34 8668浏览 0点赞 0回复 0收藏
本篇将会通过三国中的赤壁之战来讲述周瑜、黄盖和诸葛亮是怎么把服务雪崩玩到极致的。本文已收录到我的Github,点击文末的阅读原文打开。给个Star吧https:github.comJackson0714PassJavaLearning赤壁之战话说东汉末年,曹操、孙权、刘备在赤壁市进行了一次争夺老大位置的大战,这就是有名的赤壁之战。一、还原赤壁之战曹操统一北方后,南下打败了刘备,占领荆襄之地后,还想干掉东边的孙权,于是刘备和孙权一起联合抗击曹军八十...
2022-06-28 17:41:15 5284浏览 0点赞 0回复 0收藏
大家好,我是悟空呀之前已经写过7篇Eureka注册中心的源码剖析和理论讲解相关的文章了,缺少一点实战。本篇会带大家做一个实战案例,涉及内容:•配置服务注册到Eureka注册中心。•服务之间通过注册的服务名来访问。•本地如何搭建Eureka集群。•本地如何搭建微服务集群。•如何用Ribbon实现负载均衡。目录之前的几篇Eureka文章也汇总下:领导让我研究Eureka源码启动过程领导“叕”让我研究Eureka源码:注册...
2022-06-28 17:39:34 7128浏览 0点赞 0回复 0收藏
五、组成Eureka集群修改本地hosts配置host文件添加两台Eurekaserver的地址映射,都为本地localhost地址127.0.0.1eurekaserver1127.0.0.1eurekaserver2修改EurekaServer配置两个服务互相向对方注册,第一个Eureka开放8761端口,注册到第二个Eureka的8762端口。第一个EurekaServer的配置并启动server:port:8761eureka:instance:hostname:eurekaserver1client:serviceUrl:defaultZone:http:eurekaserver1:8762eureka修改第二个Eure...
2022-06-28 17:39:11 5852浏览 0点赞 0回复 0收藏
16.MyBatis的功能架构是什么样的?MyBatis功能架构我们一般把Mybatis的功能架构分为三层:•API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。•数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。•基础支撑层:负责最基础的功能支撑,包括连接...
2022-06-28 17:39:01 5047浏览 0点赞 0回复 0收藏
10.Mybatis是否支持延迟加载?原理?•Mybatis支持association关联对象和collection关联集合对象的延迟加载,association指的就是一对一,collection指的就是一对多查询。在Mybatis配置文件中,可以配置是否启用延迟加载lazyLoadingEnabledtruefalse。•它的原理是,使用CGLIB创建目标对象的代理对象,当调用目标方法时,进入拦截器方法,比如调用a.getB().getName(),拦截器invoke()方法发现a.getB()是null值,那么就...
2022-06-28 17:38:19 5147浏览 0点赞 0回复 0收藏
基础1.说说什么是MyBatisMyBatislogo先吹一下:•Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。•MyBatis可以使用XML或注解来配置和映射原生信息,将POJO映射成数据库中的记录,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集...
2022-06-28 17:36:55 6193浏览 0点赞 0回复 0收藏
•什么是责任链•场景◆反例◆初步改造◆缺点◆责任链改造◆责任链工厂改造•聊聊其他最近,我让团队内一位成员写了一个导入功能。他使用了责任链模式,代码堆的非常多,bug也多,没有达到我预期的效果。实际上,针对导入功能,我认为模版方法更合适!为此,隔壁团队也拿出我们的案例,进行了集体codereview。学好设计模式,且不要为了练习,强行使用!让原本100行就能实现的功能,写了3000行!对错暂且不论,我们...
2022-06-28 17:36:00 5922浏览 0点赞 0回复 0收藏
前言大家好,我是捡田螺的小男孩。本文是后端思维专栏的第五篇哈,我的整个后端思维专栏都是跟日常工作相关的哈。今天跟大家聊聊什么是观察者模式,如何应用到工作实践中,以及如何抽取一个观察者模板。1.观察者模式定义2.观察者模式的应用场景3.如何实现一个简单的观察者模式4.工作中,如何使用观察者模式的5.Spring观察者模式原理6.基于spring观察者模式,抽取一个通用模板7.唠叨几句,总结一下1.观察者模式定义观察者模式,...
2022-06-27 17:31:28 5470浏览 0点赞 0回复 0收藏
1、线上实战环节遇到问题现在有一组数据,其中resultChar是keyword类型,但其中有数字也有字符串,请问怎么能在大于小于查询的时候将其中的数字按照数字的类型进行大于小于的查询,结构如下:{"lisCheckItemList":[{"resultChar":"1","itemName":"项目1"},{"resultChar":"2","itemName":"项目2"},{"resultChar":"11","itemName":"项目3"},{"resultChar":"22","itemName":"项目4"},{"resultChar":"25","itemName":"项目"},{"resultCha...
2022-06-27 17:30:32 5167浏览 0点赞 0回复 0收藏