- 博客(71)
- 收藏
- 关注

原创 Devops研究记录
Sonar Qube在7.9版本中已经放弃了对MySQL的支持,并且建议在商业环境中采用PostgreSQL,那么安装Sonar Qube时需要依赖PostgreSQL。为了让程序代码可以自动推送到测试环境基于Docker服务运行,需要添加Docker配置和脚本文件让程序可以在集成到主干的同时运行起来。如果搜出来的不对的话,下载对应的jar报,放到插件目录下也会生效。任务构建时,采用Shell方式构建,拉取指定tag版本代码。注意下载对应的sonarQube的版本,不同版本会不起作用。
2022-10-11 09:00:19
365

原创 Zookeeper
1、分布式协调服务,存储在内存中,实现高吞吐量和低延迟。2、非常重视高性能、高可用,可以被复制,使用主从(leader-follower)模式避免单点故障3、主挂掉后200毫秒内即可选出新主,恢复可用状态,速度极快4、使用目录树结构,每层称为节点(持久节点和临时节点,两者皆可序列化),节点可以存1M以内的数据5、不要当作数据库使用6、客户端访问时会创建session(临时节点),根据session是否过期可以实现setnx()的过期检查7、顺序一致性,写操作均需操作leader。......
2022-08-26 17:23:42
519

原创 mysql 主从复制的延迟问题
命令有几个参数比较重要:master_log_file: slave中的IO线程正在读取的主服务器二进制日志文件的名称read_master_log_pos: 在当前的主服务器二进制日志中,slave中的IO线程已经读取的位置relay_log_file: sql线程当前正在读取和执行的中继日志文件的名称relay_log_pos: 在当前的中继日志中,sql线程已经读取和执行的位置relay_master_log_file: 由sql线程执行的包含多数近期事件的主服务器二进制日志文件的名称。...
2022-08-10 10:54:29
2368

原创 springcloudalibaba 之seata模式之TCC和Sage模式
AT模式基于本地事务ACID的关系数据库具体使用案例:https://seata.io/zh-cn/blog/integrate-seata-tcc-mode-with-spring-cloud.htmlSaga模式是SEATA提供的长事务解决方案,在Saga模式中,业务流程中每个参与者都提交本地事务,当出现某一个参与者失败则补偿前面已经成功的参与者,一阶段正向服务和二阶段补偿服务(执行处理时候出错了,给一个修复的机会)都由业务开发实现。之前我们学习的Seata分布式三种操作模型中所使用的的微服务全部可
2022-07-06 21:06:00
1131

原创 springcloudalibaba 之seata模式之AT和XA模式
在一阶段中,Seata会拦截“业务SQL“,首先解析SQL语义,找到要更新的业务数据,在数据被更新前,保存下来"undo",然后执行”业务SQL“更新数据,更新之后再次保存数据”redo“,最后生成行锁,这些操作都在本地数据库事务内完成,这样保证了一阶段的原子性。相对一阶段,二阶段比较简单,负责整体的回滚和提交,如果之前的一阶段中有本地事务没有通过,那么就执行全局回滚,否在执行全局提交,回滚用到的就是一阶段记录的"undo Log",通过回滚记录生成反向更新SQL并执行,以完成分支的回滚。当然事务完成后会释
2022-07-05 22:05:23
511
原创 IK分词器 mysql热更新的方法
下载安装elasticsearch对应版本的安装包,本文安装的是elasticsearch7.17.0。
2023-02-08 13:48:13
1173
2
原创 springcache
这个注解一般用在查询方法上, @Cacheble注解表示这个方法有了缓存的功能,方法的返回值会被缓存下来,下一次调用该方法前,会去检查是否缓存中已经有值,如果有就直接返回,不调用方法。springcache只对读模式下的缓存实现进行了处理,对于写模式下的缓存失效没有进行相应的处理,需要我么自己采取其他方式来处理。使用了@CachePut注解的方法,会把方法的返回值put到缓存里面缓存起来,供其它地方使用。使用CacheEvict注解的方法,会清楚指定的缓存[一般是用在更新或者删除的方法上]
2023-01-12 14:52:37
578
原创 redisson分布式锁
该对象也可以用来将多个RLock对象关联为一个红锁,每个RLock对象实例可以来自于不同的Redisson实例。Redisson的RedissonMultiLock对象可以将多个RLock对象关联为一个联锁,每个RLock对象实例可以来自于不同的Redisson实例。在读写锁中,只有读读锁是共享锁,不管是先读锁后写锁还是先写锁后读锁,这个都是互斥锁(排他锁),只有等待写锁完成才能进行读锁。设置一个信号量的值,当这个值达到0的时候阻塞掉,只有在释放了信号量的时候,这个就又可以运行。
2023-01-11 16:31:01
570
原创 java分布式锁
数据库实现分布式锁方式比较多,如悲观锁(查询时增加for update)、乐观锁(通过version字段)、增加一个表记录锁信息等。因为依赖于数据库,比较好理解,但是也存在一些问题。如悲观锁在某些情况下可能会锁表而不是锁行,乐观锁可能需要多次重试,以及操作数据库的性能开销等等,所以基于数据库的分布式锁不做过多研究,因为我看来基本上不会用到。2.1.2 分布式锁实现2.2 基于Redission实现2.2.1导入redssion包2.1.2 创建配置类2.1.3 实际业务代码的实现
2022-12-06 11:25:36
919
原创 缓存的设计
一个读请求和一个写请求的并发,当写请求进来,把缓存删了,更新数据库这步操作还没完成,读请求进来,发现没缓存,往数据库中读取,这个时候数据库的数据还是老的数据,读请求把老的数据写入了缓存,然后写请求才把数据更新到数据库,这就造成了数据库和缓存的双写一致性问题。比方一个读操作,一个写操作的并发,读操作没有了删除缓存的操作,直接命中拿的是缓存中的数据,写操作更新了数据库中的数据,并删除了缓存,读操作读的就是老的数据。就是在更新晚数据库之后,sleep一段时间,再次进行删除缓存的操作,能极大的保证双写一致性。
2022-11-30 16:20:52
1323
原创 linux 链路聚合
交换机可以配置链路聚合,提供线路的冗余的同时提高带宽吞吐。服务器也可以通过bond/team技术做网口硬件层面的冗余,防止单个网口应用的单点故障以及提高带吞吐量。bond模式最多可以添加两块网卡,team模式最多可以添加八块网卡。
2022-11-29 15:11:14
1319
原创 pac自动代理
PAC,一个自动代理配置脚本,包含了很多使用 JavaScript 编写的规则,它能够决定网络流量走默认通道还是代理服务器通道,控制的流量类型包括:HTTP、HTTPS 和 FTP。本质是一段js}
2022-11-22 15:53:12
9213
原创 k8s之service
我们可以将 ipset 简单理解为一个 IP(段) 的集合,这个集合的内容可以是 IP 地址、IP 网段、端口等,iptables 可以直接添加规则对这个“可变的集合进行操作”,这样就可以大大减少 iptables 规则的数量,从而减少性能损耗。通过图示我们可以发现在 iptables 模式下,kube-proxy 只是作为 controller,而不是 server,真正服务的是内核的 netfilter,体现在用户态的是 iptables。,解析的IP是ns1命名空间里的pod的IP(请自行验证)
2022-11-09 17:14:25
533
原创 k8s 之存储卷
每次使用存储要先创建pv, 再创建pvc,真累!所以我们可以实现使用存储的动态供给特性。静态存储需要用户申请PVC时保证容量和读写类型与预置PV的容量及读写类型完全匹配, 而动态存储则无需如此.管理员无需预先创建大量的PV作为存储资源Kubernetes从1.4版起引入了一个新的资源对象StorageClass,可用于将存储资源定义为具有显著特性的类(Class)而不是具体的PV。用户通过PVC直接向意向的类别发出申请,匹配由管理员事先创建的PV,或者由其按需为用户动态创建PV,这样就免去。
2022-11-04 16:57:23
988
原创 Rocketmq
启动broker 启动不起来,原因是runbroker.sh 文件中,设置的内存过大,大于我虚拟机内存,实际生产环境要进行调优,这边我就改成了1G,在重启上一步命令即可。环境 4台虚拟机,node01~04 centos7。broker-a以此类推。
2022-09-13 11:03:52
769
原创 edumeet搭建过程
这个是事先域名绑定好的 本文 http://meeting2.dynabook.site/ 绑定了 192.168.2.103。和下图中的logs 相同就表示成功。
2022-09-09 11:48:21
1344
原创 redis 主从复制 cap paxos cluster分片
客户端可以将 Sentinel 看作是一个只提供了订阅功能的 Redis 服务器: 你不可以使用 PUBLISH 命令向这个服务器发送信息, 但你可以用 SUBSCRIBE 命令或者 PSUBSCRIBE 命令, 通过订阅给定的频道来获取相应的事件提醒。以下列出的是客户端可以通过订阅来获得的频道和信息的格式: 第一个英文单词是频道/事件的名字, 其余的是数据的格式。当从服务器加入到主服务器中的时候,从服务器首先会将自己的redis上面的数据进行清空,在同步主服务器上面的数据。当6379挂掉后执行以下操作。
2022-08-19 14:00:13
268
原创 redis 进阶
就是将大量的命令合并到一个请求中去,而不是每个请求一下,减少了IO一次请求/响应服务器能实现处理新的请求即使旧的请求还未被响应。这样就可以将多个命令发送到服务器,而不用等待回复,最后在一个步骤中读取该答复。...
2022-08-18 17:26:42
421
原创 lvs负载均衡
NAT(Network Address Translation)即网络地址转换,其作用是通过数据报头的修改,使得位于企业内部的私有IP地址可以访问外网,以及外部用用户可以访问位于公司内部的私有IP主机。VS/NAT工作模式拓扑结构如图2所示,LVS负载调度器可以使用两块网卡配置不同的IP地址,eth0设置为私钥IP与内部网络通过交换设备相互连接,eth1设备为外网IP与外部网络联通。......
2022-08-16 17:29:19
86
原创 Nacos 一致性协议:Distro协议
新加入的 Distro 节点会进行全量数据拉取。具体操作是轮询所有的 Distro 节点,通过向其他的机器发送请求拉取全量数据。在Distro集群启动之后,各台机器之间会定期发送心跳来保证数据一致性对于⼀个已经启动完成的 Distro 集群,在⼀次客户端发起写操作的流程中,当注册非持久化的实例的写请求打到某台 Nacos 服务器时,Distro 集群处理的流程图如下。步骤:1.前置filter拦截请求,根据请求中包含的IP和port信息计算所属的Distro的责任节点,请将请求转发到责任节点2. 责
2022-07-07 14:08:49
4016
1
原创 Nacos Config深入+原理
Nacos不仅仅可以作为注册中心来使用,同时它支持作为配置中心首先我们还是新建Model:cloudalibaba-config-3377 这里我们主要要引入的是此依赖,这个依赖依据在官网上可以找到:https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html#_an_example_of_using_nacos_discovery_for_service_registratio
2022-07-07 13:33:49
1858
原创 Sentinel整合GateWay
在微服务系统中,网关提供了微服务系统的统一入口,所以我们在做限流的时候,肯定是要在网关层面做一个流量的控制,Sentinel 支持对 Spring Cloud Gateway、Zuul 等主流的 API Gateway 进行限流。Sentinel 1.6.0 引入了 Sentinel API Gateway Adapter Common 模块,此模块中包含网关限流的规则和自定义 API 的实体和管理逻辑:其中网关限流规则 GatewayFlowRule的字段解释如下:resource:资源名称,可以是网关
2022-07-06 22:34:13
2876
3
原创 springcloudalibaba 之seata
基础概念:ACID原则A:原子性:构成事务的所有操作,要么全部执行,要么全部不执行C:一致性:在事务执行前后,数据库的一致性约束没有被破坏I: 隔离性:数据库的事务一般都是并发的,隔离性是指并发的两个事务的执行互不干扰,一个事务不能看到另一个事务的中间执行状态;通过配置事务的隔离级别可以避免脏读、重复读等问题D: 持久性:事务完成后,会持久化到数据库,并不会进行回滚CAP是无法同时存在的Base理论是Basically Avaiable(基本可用),Soft state(软状态),eventual
2022-07-04 22:52:17
491
原创 springcloudalibaba 之gateway
官网:https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#gateway-starterZuul 1.xNetflix开源的网关,基于Servlet框架构建,功能丰富,使用JAVA开发,易于二次开发 问题:即一个线程处理一次连接请求,这种方式在内部延迟严重、设备故障较多情况下会引起存活的连接增多和线程增加的情况发生。Zuul 2.xZuul2 采用了Netty实现异步非阻塞编程模型,每个 CPU 核一个线程,处理所
2022-07-04 21:36:56
352
原创 springcloudalibaba 之Sentinel持久化配置
我们首先需要知道:在Sentinel Dashboard中配置规则之后重启应用就会丢失,所以实际生产环境中需要配置规则的持久化实现,Sentinel提供多种不同的数据源来持久化规则配置,包括file,redis、nacos、zk。将限流规则持久化进Nacos保存,只要刷新8401某个接口地址,Sentinel控制台的流控规则就能感应到,同时只要Nacos里面的配置不删除,针对8401上Sentinel的流控规则就持续有效。其实就是实现Sentinel Dashboard与Nacos之间的相互通信通过Nac
2022-07-04 13:42:17
368
原创 微服务 springcloudAlibab之OpenFeign
它的宗旨是在编写Java Http客户端接口的时候变得更加容易,其底层整合了Ribbon,所以也支持负载均衡。之前我们使用Ribbon的时候,利用RestTemplate对Http请求进行封装处理,但是在实际开发中,由于对服务依赖的调用不可能就一处,往往一个接口会被多处调用,所以通常都会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用。所以OpenFeign在此基础之上做了进一步的封装,由它来帮助我们定义和实现依赖服务接口的定义,我们只需创建一个接口并使用注解的方式来配置它,即可完成对微服务提供方
2022-07-04 13:39:56
308
原创 SentinelResource的fallback属性
**概念:**fallback 函数名称,可选项,用于在抛出异常的时候提供 fallback 处理逻辑。fallback 函数可以针对所有类型的异常(除了 里面排除掉的异常类型)进行处理。fallback 函数签名和位置要求:其实通过官网上提供的概念,我们不难看出这个属性类似于blockHandler,但是各位一定要注意他们有本质的不同。**注意:**fallback属性和blockHandler属性的本质不同在于他们作用的异常不同:上节课我们已经完成环境的搭建,那我们就直接在8084项目的DemoCon
2022-07-04 09:16:51
390
原创 微服务 springcloudAlibab之Sentinel 系统规则 自定义限流
定义限流规则:资源名就是sentinelResource的value值测试结果
2022-07-03 17:01:45
328
原创 微服务 springcloudAlibab之Sentinel 熔断,热点规则
慢调用比例 ():异常比例 ():异常数 ()Sentinel在1.8.0版本对熔断降级做了大的调整,可以定义任意时长的熔断时间,引入了半开启恢复支持。下面梳理下相关特性。熔断降级规则包含下面几个重要的属性:官方文档网址: https://sentinelguard.io/zh-cn/docs/circuit-breaking.html设置熔断策略,1QPS>5 并且这些请求的RT>300 并且大于比例阈值触发熔断测试通过JMeter测试,1秒钟发起10个线程请求/testC,此时就会触发熔断效果
2022-07-03 11:31:36
464
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人