- 博客(938)
- 资源 (10)
- 收藏
- 关注
原创 Zookeeper与统一配置管理
比如我们现在有三个系统A、B、C,他们有三份配置,分别是,然后,这三份配置又非常类似,很多的配置项几乎都一样。此时,如果我们要改变其中一份配置项的信息,很可能其他两份都要改。并且,改变了配置项的信息很可能就要重启系统于是,我们希望把相同的配置项抽取出来成一份公用的配置common.yml,并且即便common.yml改了,也不需要系统A、B、C重启。做法:我们可以将common.yml这份配置放在ZooKeeper的Znode节点中,系统A、B、C监听着这个Znode节点有无变更,如果变更了,及时响应。
2022-10-17 09:57:13
28750
原创 ZooKeeper与集群与一致性协议总结
说白了就是 ZAB 协议是如何处理写请求的,上面我们不是说只有 Leader 能处理写请求嘛?那么我们的 Follower 和 Observer 是不是也需要 同步更新数据 呢?总不能数据只在 Leader 中更新了,其他角色都没有得到更新吧?不就是 在整个集群中保持数据的一致性 嘛?如果是你,你会怎么做呢?
2022-10-17 09:49:41
68156
原创 ZooKeeper基本概念总结
正式介绍 ZooKeeper 之前,我们先来看看 ZooKeeper 的由来,还挺有意思的。下面这段内容摘自《从 Paxos 到 ZooKeeper 》第四章第一节,推荐大家阅读一下:ZooKeeper 最早起源于雅虎研究院的一个研究小组。在当时,研究人员发现,在雅虎内部很多大型系统基本都需要依赖一个类似的系统来进行分布式协调,但是这些系统往往都存在分布式单点问题。所以,雅虎的开发人员就试图开发一个通用的无单点问题的分布式协调框架,以便让开发人员将精力集中在处理业务逻辑上。
2022-10-17 09:48:24
122215
原创 java 函数式接口与Lambda表达式
函数式接口:接口中只能有一个抽象方法,其他的可以有default、static、Object里继承的方法等。 作用:在Java中主要用在Lambda表达式和方法引用(想使用Lambda表达式, 接口必须为函数式接口)。只有确保接口中有且只有一个抽象方法,Java中的lambda才能顺利推导。 JDK8专门提供了@FunctionalInterface注解,用来进行编译检查。就是说一个接口有这个注解了,一定是函数式接口,必须满足函数式接口的要求,不然就编译出错!...
2022-08-10 16:23:09
602
原创 mysql性能监控与执行计划
MySQL的performance schema 用于监控MySQL server在一个较低级别的运行过程中的资源消耗、资源等待等情况。特点如下:1、提供了一种在数据库运行时实时检查server的内部执行情况的方法。performance_schema 数据库中的表使用performance_schema存储引擎。该数据库主要关注数据库运行过程中的性能相关的数据,与information_schema不同,information_schema主要关注server运行过程中的元数据信息。...
2022-08-08 18:21:12
495
原创 mysql服务器参数设置
服务器线程缓存,这个值表示可以重新利用保存再缓存中的线程数量,当断开连接时,那么客户端的线程将被放到缓存中以响应下一个客户而不是销毁,如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,这个线程将被重新请求,那么这个线程将被重新创建,如果有很多新的线程,增加这个值即可。主要控制innodb将log buffer中的数据写入日志文件并flush磁盘的时间点,值分别为0,1,2。Qcache_free_blocks:缓存中相邻内存块的个数,如果值比较大,那么查询缓存中碎片比较多。...
2022-08-08 18:20:24
678
原创 Drools基本介绍,入门案例,基本语法
Drools具有一个易于访问企业策略、易于调整以及易于管理的开源业务规则引擎,符合业内标准,速度快、效率高。业务分析师或审核人员可以利用它轻松查看业务规则,从而检验已编码的规则是否执行了所需的业务规则。其前身是Codehaus的一个开源项目叫Drools,后被纳入JBoss门下,更名为JBossRules,成为了JBoss应用服务器的规则引擎。编译和运行时。编译是将规则描述文件按ANTLR3语法进行解析,对语法进行正确性的检查,然后产生一种中间结构“descr”分别是。...
2022-07-27 23:32:24
8856
原创 Drools WorkBench的简介与使用
WorkBench是KIE组件中的元素,也称为KIE-WB,是Drools-WB与JBPM-WB的结合体。它是一个可视化的规则编辑器。WorkBench其实就是一个war包。WorkBench经过几次版本迭代,已经不提供tomcat启动的war包,综合考虑,本课程仍然采用tomcat版本作为演示。环境说明准备jar包需要放到tomcatlib中,否则启动失败。...
2022-07-27 23:32:12
5584
原创 ShardingJDBC使用总结
Hint分片策略(HintShardingStrategy)相比于上面几种分片策略稍有不同,这种分片策略无需配置分片健,分片健值也不再从SQL中解析,而是由外部指定分片信息,让SQL在指定的分库、分表中执行。读写分离的概念大家应该已经很熟练了,此处不在赘述,下面我们通过sharding-jdbc来实现读写分离,其实大家应该已经发现了,所有的操作都是配置问题,下面我们来讲一下具体的配置,关于读写分离的原理,以及如何配置mysql的主从复制,我们就不在多聊了,直接看sharding-jdbc的配置。...
2022-07-23 21:59:44
1003
原创 ShardingJDBC基本介绍
ApacheShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由JDBC、Proxy和Sidecar(规划中)这3款相互独立,却又能够混合部署配合使用的产品组成。它们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、云原生等各种多样化的应用场景。ApacheShardingSphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。...
2022-07-23 21:59:11
1650
原创 系统需求多变如何设计
在我之前的公司,使用的是Groovy脚本。大致的实现逻辑就是有专门后台对脚本进行管理,然后会把脚本写到「分布式配置中心」(实时刷新),客户端监听「分布式配置中心」所存储的脚本是否有改动。(脚本我这里指的是规则集,它可以是Drools的dsl,也可以是Groovy,也可以是aviator等等)在业务系统里使用「服务编排」的客户端,请求时只要传入「服务编排」的ID,就可以按「服务编排」的流程执行代码。这样做的好处就是业务链是在后台配置的,不用在系统业务上维护链,灵活性更高(写好的责任链节点可以随意组合)...
2022-07-18 09:12:30
295
原创 group by的工作原理和优化思路
目录引入group by 原理分析group by 的简单执行流程临时表的排序是怎样的呢?where 和 having的区别where + having 区别总结使用 group by 注意的问题group by一定要配合聚合函数使用嘛?group by 后面跟的字段一定要出现在select中吗?group by导致的慢SQL问题group by的一些优化方案group by 后面的字段加索引order by null 不用排序尽量只使用内存临时表
2022-05-28 01:04:05
1299
1
原创 Spring Cloud灰度发布方案
注意:本文参考Spring Cloud灰度发布方案----ribbon框架Spring Cloud灰度发布方案----自定义路由规则_易佰菜鸟的博客-CSDN博客_springboot灰度发布
2022-05-25 22:32:36
3456
原创 Spring Cloud Config使用总结
目录服务搭建基于GITHUB1.创建仓库2.新建微服务作为配置中心服务3.启动测试拉取匹配规则客户端配置刷新配置手动配置热更新自动刷新完整配置ConfigConsumer远程配置服务搭建基于GITHUB1.创建仓库登录GitHub创建仓库,并上传几个配置文件2.新建微服务作为配置中心服务依赖 <dependency> <groupId>org.springframework.clou
2022-05-25 22:32:12
264
原创 Sleuth,Zipkin,Admin使用总结
SleuthSleuth简介Sleuth是Spring cloud的分布式跟踪解决方案。1. span(跨度),基本工作单元。一次链路调用,创建一个span,span用一个64位id唯一标识。包括:id,描述,时间戳事件,spanId,span父id。span被启动和停止时,记录了时间信息,初始化span叫:root span,它的span id和trace id相等。2. trace(跟踪),一组共享“root span”的span组成的树状结构 称为 trace,trace也有一
2022-05-25 22:31:40
343
原创 Zuul使用总结
目录Zuul启用网关负载均衡路由端点配置指定微服务的访问路径忽略微服务前缀SleuthSleuth简介Sleuth单独使用ZipkinZipkin简介Zipkin使用SpringCloud Admin健康检查Admin服务器端微服务端邮件通知钉钉群通知Zuul启用网关新建项目引入依赖 <dependency> <groupId>org.springframework.cloud<
2022-05-25 22:28:05
673
原创 Feign和Hystrix使用总结
目录Feign声明式服务调用1.创建项目User-Provider2.创建项目User-API3.User-Provider 实现API4.Consumer调用5.测试Get和Post带参请求权限属性定义各种请求APIControllerProvider开启日志超时重试hystrixhystrix独立使用脱离spring cloud整合Resttemplate整合Feign使用fallbackFactory检查具体错
2022-05-25 22:27:20
850
原创 Ribbon和RestTemplate使用总结
目录RestTemplate依赖注入get 请求处理getForEntity返回一个Map返回对象传参调用返回对象post 请求处理postForLocation拦截器Ribbon自定义注解方式配置文件Ribbon脱离EurekaRestTemplate依赖注入 @Bean // 开启负载均衡 @LoadBalanced RestTemplate restTemplate() { return new RestTemp.
2022-05-25 22:26:51
1137
原创 eureka使用总结
目录Eureka常用配置Eureka 单节点搭建eureka多节点服务注册的配置选项Eureka单独使用Rest服务调用/eureka/status 服务状态注册到eureka的服务信息查看注册到eureka的具体的服务查看服务续约更改服务状态删除状态更新删除服务元数据EurekaClient多网卡选择Eureka 健康检查安全配置Eureka常用配置服务端配置eureka:instance:hostn...
2022-05-25 22:26:19
3428
原创 char、varchar和nvarchar的区别
注意:本文参考 mysql的nvarchar_MySQL中char、varchar和nvarchar的区别_路怜涯的博客-CSDN博客一、char和varchar的区别char是固定长度的,而varchar会根据具体的长度来使用存储空间,另外varchar需要用额外的1-2个字节存储字符串长度。1). 当字符串长度小于255时,用额外的1个字节来记录长度2). 当字符串长度大于255时,用额外的2个字节来记录长度比如char(255)和varchar(255),在存储字符串"he...
2022-05-12 23:24:57
515
原创 消息队列的消息大量积压怎么办
目录消息积压简介生产端消费端已经消息积压,如何处理总结注意:本文参考消息队列的消息大量积压怎么办?_JavaEdge.的博客-CSDN博客_消息队列积压了大量消息怎么处理消息积压简介系统出现性能问题,来不及处理上游发的消息,导致消息积压。消息积压是正常现象,但积压太多就需要处理了。就像水库,日常蓄水是正常的,但下游泄洪能力太差,导致水库水位一直不停上涨,就不正常!日常开发使用MQ时,如何避免消息积压?若线上已出现积压了,如何应急?性能优化主要在生产者和消费..
2022-05-12 12:21:16
1206
原创 缓存设计总结
主体结构hashmap结构,key是一个id,value可以直接是一个缓存的对象,也可以是一个map过期时间可以另外起一个map,key是id,value是过期时间也可以在主map的value里面也加入过期时间也可以是一个堆的结构,里面的node是过期时间和id。同时另起一个map,key是id,value是node。过期时间清理堆结构,另起一个线程,删除堆顶的node,并删除node对应的缓存。惰性删除,get缓存的时候,获取过期时间,如果已经过期了,就删除定期
2022-05-04 17:58:45
230
原创 幂等性和状态服务总结
注意:本文参考 java中接口幂等性解决方案总结_青朽_的博客-CSDN博客_java 接口幂等性知识积累:幂等性问题的思考和总结,防重、幂等,常用解决方案,解决方式_一张船票的博客-CSDN博客_幂等性和防重区别概念一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。防重和幂等的区别:防重设计主要为了避免产生重复数据,对接...
2022-05-04 17:57:04
8712
原创 微服务拆分策略和原则
注意:本文参考微服务拆分策略和原则 - 简书微服务拆分目的不忘初心方得始终。在介绍如何拆分之前,我们需要了解下拆分的目的是什么,这样才不会在后续的拆分过程中忘了最初的目的。拆分的本质是为了将复杂的问题简单化,那么我们在单体架构阶段遇到了哪些复杂性问题呢?首先来回想下当初为什么选用了单体架构,在很多项目刚启动的时候,我们只希望能尽快地将项目搭建起来,方便将产品更早的投放市场进行快速验证。在开发初期,这种架构确实给开发和运维带来了很大的便捷,主要体现在:1 开发简单直接,代码和项目集中...
2022-05-03 15:25:46
2475
原创 分布式事务 Seata总结
目录解决分布式事务的思路Seata基础Seata的架构部署TC服务微服务集成SeataSeata的4种事务模式XA模式AT模式TCC模式SAGA模式四种模式对比Seata的高可用高可用架构模型TC服务的高可用和异地容灾Seata in AT mode 的实现Seata in AT mode 工作流程概述Seata in AT mode 工作流程详述注意:本文参考1.4 w字,25 张图让你彻底掌握分布式事务原理分布式事务_...
2022-04-26 13:55:05
570
原创 分布式事务与最终一致性理论总结
目录单数据源事务 & 多数据源事务常见分布式事务解决方案分布式事务模型二将军问题和幂等性两阶段提交(2PC) & 三阶段提交(3PC)方案TCC 方案事务状态表方案基于消息中间件的最终一致性事务方案Seata in AT mode 的实现Seata in AT mode 工作流程概述Seata in AT mode 工作流程详述注意:本文参考 1.4 w字,25 张图让你彻底掌握分布式事务原理单数据源事务 & 多数据源事务如..
2022-04-26 13:54:57
682
1
原创 网关与分布式id
目录网关何为网关?为什么要网关?有哪些常见的网关系统?Netflix ZuulSpring Cloud GatewayKongAPISIXShenyu分布式 ID分布式 ID 介绍何为 ID?何为分布式 ID?分布式 ID 需要满足哪些要求?分布式 ID 常见解决方案数据库算法开源框架Leaf(美团)分布式 ID 生成方案总结注意:本文参考网关 | JavaGuide分布式 ID | JavaGuide网关.
2022-04-18 23:20:10
1193
原创 分布式理论与算法
注意:本文参考CAP & BASE理论 | JavaGuidePaxos 算法 | JavaGuideRaft 算法 | JavaGuideCAP理论CAP 理论/定理起源于 2000年,由加州大学伯克利分校的Eric Brewer教授在分布式计算原理研讨会(PODC)上提出,因此 CAP定理又被称作 布鲁尔定理(Brewer’s theorem)2年后,麻省理工学院的Seth Gilbert和Nancy Lynch 发表了布鲁尔猜想的证明,CAP理论正式成为分布式领..
2022-04-18 23:19:54
903
原创 高可用系统设计
目录什么是高可用?可用性的判断标准是啥?哪些情况会导致系统不可用?有哪些提高系统可用性的方法?1 注重代码质量,测试严格把关2 使用集群,减少单点故障3 限流4 超时和重试机制设置5 熔断机制6 异步调用7 使用缓存8 其他注意:本文参考docs/high-availability/high-availability-system-design.md · SnailClimb/JavaGuide - Gitee.com什么是高可用?可用性的判断标准..
2022-04-18 23:19:34
315
原创 Tomcat总结
目录Tomcat线程池原理线程池参数与ThreadPoolExecutor线程池工作原理Tomcat的线程模型BIO模式BIO定义BIO运行流程Tomcat中BIO的工作原理NIO模式NIO定义Tomcat设置NIO模式Tomcat中NIO的工作原理Tomcat与服务器WEB服务器Http服务器Application ServerTomcat工作原理Tomcat架构模块Tomcat运行流程Connector 组件Servl.
2022-04-18 23:14:30
446
原创 Hystrix 熔断器,超时,指标窗口总结
目录熔断器执行机制Hystrix 熔断器类结构Hystrix 熔断器状态代码视角如何判定开启熔断attemptExecutionmarkSuccess&markNonSuccessmarkNonSuccessmarkSuccess超时实现机制主入口:executeCommandAndObserve关键点: HystrixObservableTimeoutOperator匠心之巧回归文字指标窗口实现原理指标数据上传指标数据搜集..
2022-03-10 22:49:23
907
原创 SpringBoot 常用注解总结
目录@SpringBootApplicationSpring Bean 相关@Autowired@Component,@Repository,@Service,@Controller@RestController@Scope@Configuration处理常见的 HTTP 请求类型GET 请求POST 请求PUT 请求DELETE 请求PATCH 请求前后端传值@PathVariable和@RequestParam@RequestBody...
2022-03-06 13:22:34
473
原创 Spring扩展点
目录BeanDefinition与BeanFactory扩展BeanDefinitionRegistryPostProcessor接口BeanFactoryPostProcessor接口Bean实例化中的扩展InstantiationAwareBeanPostProcessor接口SmartInstantiationAwareBeanPostProcessor接口BeanPostProcessor接口MergedBeanDefinitionPostProcessorDes
2022-03-06 13:21:05
575
原创 Spring 通用理论总结
什么是 Spring 框架?Spring 是一款开源的轻量级 Java 开发框架,旨在提高开发人员的开发效率以及系统的可维护性。Spring 翻译过来就是春天的意思,可见其目标和使命就是为 Java 程序员带来春天啊!感动!题外话 : 语言的流行通常需要一个杀手级的应用,Spring 就是 Java 生态的一个杀手级的应用框架。我们一般说 Spring 框架指的都是 Spring Framework,它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发。比如说 Spring 自带
2022-03-06 13:16:30
302
原创 SpringBoot 理论总结
目录讲述一下 SpringBoot 自动装配原理?前言什么是 SpringBoot 自动装配?SpringBoot 是如何实现自动装配的?@EnableAutoConfiguration:实现自动装配的核心注解AutoConfigurationImportSelector:加载自动装配类如何实现一个 Starter总结注意:本文参考docs/system-design/framework/spring/spring-boot-auto-assembly-princ
2022-03-06 12:55:33
917
原创 SpringMVC理论总结
注意:本文参考docs/system-design/framework/spring/spring-knowledge-and-questions-summary.md · SnailClimb/JavaGuide - Gitee.com说说自己对于 Spring MVC 了解?MVC 是模型(Model)、视图(View)、控制器(Controller)的简写,其核心思想是通过将业务逻辑、数据、显示分离来组织代码。网上有很多人说 MVC 不是设计模式,只是软件设计规范,我个人更倾向于
2022-03-05 00:21:06
719
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅