- 博客(18)
- 收藏
- 关注
原创 Seata分布式事务解决方案
seata介绍Seata是一款致力于高性能和简单易用的分布式解决方案。Seata主要提供了AT、TCC、SAGA 和 XA 事务模式,阿里首推的模式的AT。在Seata中存在三种角色,分别是:TC(事务协调者,维护全局和分支事务,解决分布式事务的提交/回滚)。TM(事务管理者,事务的执行者)。RM(资源管理者,管理分支事务的资源并于TM进行交互并上报当前事务的状态)。TC 为单独部署的Server服务,TM和RM嵌入到应用中(client端)。Seata设计分析Seata是对二阶段提交协
2021-09-03 15:26:48
220
原创 DTP模型与XA规范,2PC,3PC,分布式事务
本地事务介绍大多数场景下我们只需要操作一个数据库而不需要进行跨库处理。本地事务只需要依靠数据库自身的ACID事务特性即可完成。分布式场景介绍在互联网的发展过程中,大部分企业都基于以前的单体架构进行了服务化(SOA)和数据库拆分,所以在完成一些相较负责的业务时就时候操作多个服务多个数据库。在这种情况下我们就分布式事务来保证整个执行链路中的事务完整性,也就时保证我们调用每个服务时要保证要么全部成功/全部失败。我们可以理解为:分布式事务就是为了保证不同资源服务器(数据库)的数据一致性。跨库事务
2021-09-02 17:11:00
420
原创 Redis管道(Pipeline),Lua脚本
管道(Pipeline)管道的作用就是可以让客户端一次性发送多个请求,将所有的命令都放在一个缓冲区中最后一次性将所有命令打包发送到服务端。管道的作用就是降低我们与redis交互的网络开销,原本每次请求都需要建立一次连接,而现在将多次请求打包只需要建立一次连接。当然也不是打包的请求越多越好,因为redis必须要将所有的请求的结果进行缓存,请求越多所消耗的内存也自然越多。管道是不具备原子性的,有可能打包的多个命令中执行过程中有某一条请求执行失败,那也不会影响其他的命令继续执行的。管道代码演示pu
2021-09-01 09:49:49
1008
原创 Redis主从架构,哨兵高可用架构
Redis主从结构配置描述1、copy一份redis.conf文件。2、修改相关的配置:port 6381 #端口修改pidfile /var/run/redis_6381.pid # 把pid进程号写入pidfile配置的文件logfile “6381.log”dir /usr/local/redis‐5.0.3/data/6381 # 指定数据存放目录#bind 127.0.0.1 #内网一般可以不配置bind,注释掉即可3、配置主从复制replicaof 127.0.0.1 6
2021-08-31 16:57:44
98
原创 Redis持久化 RDB,AOF,混合持久化
redis基础概念描述Redis中的网络IO和键值对读写是单线程的,但是持久化,异步删除,集群数据同步是多线程的。因为数据都在内存中而且是单线程避免了线程上下文切换,所以redis性能很高,但是需要注意的是由于是单线程的需要我们慎用一些耗时的指令,比如keys还有大key问题,一般value不得超过1M,上限是4M。Redis的IO多路复用,将连接与事件放进队列中然后基于事件分派期转发到对应的事件处理器。redis持久化简述:redis的持久化机制有两种:RDB快照(条件触发),AOP(实时记
2021-08-26 15:23:29
299
原创 Dubbo架构分析,远程方法调用,服务注册与发现,集群容错,负载均衡,SPI机制
单体架构1.单体架构的话是所有的模块都放在一个项目中,部署的时候也是将整个项目部署到服务器中。2.单体架构的优点有小项目开发快,成本低、容易部署。3.存在的问题的是模块耦合严重,不易开发维护,沟通成本高。核心业务和边沿业务聚合在一起, 容易出问题。垂直架构1.根据业务把项目垂直切割成多个项目,因此这种架构称之为垂直架构。2.这种架构的方式存在的好处有:系统拆分实现了流量分担,解决了并发问题。 方便水平扩展,负载均衡,容错率高。系统相互独立,互不影响。3.存在的问题有:接口调用硬编码,
2021-07-20 11:06:59
550
原创 Zookeeper应用,ZAB协议奔溃恢复/消息广播,分布式锁分布式队列
Zookeeper概述1.ZooKeeper最为主要的使⽤场景,是作为分布式系统的分布式协同服务。2.分布式系统中每台服务器的算力和资源都是有限的,但是我们通过分布式系统组成集群 就可以对算力和资源进行无限扩张,但是分布式节点间的协调就成了问题。3.就像我们的开发团队之间的协作一样,我们需要同步任务情况,leader也需要对我们的 工作进度需要了解,然后根据情况进行协调。 4.分布式系统的协调工作就是通过某种方式,让每个节点的信息能够同步和共享。这依赖于服务进程之间 的通信。通信方式有两
2021-07-05 16:41:40
197
原创 NWR,Gossip,Paxos分布式一致性协议
两阶段提交协议(2PC)1.两阶段提交协议,简称2PC(2 Prepare Commit),是比较常用的解决分布式事务问题的方式,要么所 有参与进程都提交事务,要么都取消事务,即实现ACID中的原子性(A)的常用手段。 1)通俗一些的理解,存在2种角色(事务管理者),(事务参与者),分为两个阶段(准备和执行(回滚/提交)) 2)事务管理者向参与者进行事务可提交询问,在全部参与者都准备就绪的情况下进行第二阶段的commit操作, 如果其中有一个参与者响应No,则回滚事务。2.2PC存在的问
2021-07-01 18:41:40
406
原创 RPC远程通信,分布式系统
网络通信原理1.从计算机网络通信原理来看,网络通信就是将消息流从一台计算机传输到另一台计算机。2.消息流传输所依靠的便是TCP/UDP这些传输层协议和网络IO(BIO/NIO/AIO)。RPC远程通信1.远程过程调用。借助RPC可以做到像本地调用一样调用远程服务,是一种进程间的通信方式。2.当两个应用不在一个内存空间,不能直接调用,所以需要通过网络来表达调用的语义和传达 调用的数据。3.需要注意的是RPC并不是一个具体的技术,而是指整个网络远程调用过程。 RPC架构1.RPC架构里
2021-06-30 21:30:40
244
原创 粘包拆包,Netty源码解析
粘包和拆包简介1.TCP网络编程中当我们读取或者发送消息的时候,都需要考虑TCP底层的粘包/拆包机制,这种情况无法避免。2.TCP是个“流”协议,就是没有界限的一串数据。TCP底层并不了解上层业务数据的具体含义, 它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP拆分 成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题。3.粘包:可以通俗的理解为在缓冲区(无论发送数据还是接收数据我们都要经过操作系统的缓冲区)产
2021-06-25 17:48:30
161
原创 Netty核心APi,Reactor 线程模型,Netty线程模型,编解码器
Netty介绍1.Netty的作用就是为了简化NIO的开发,并且做了额外的扩展,如:断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常流的处理。2.解决JDK NIO的Bug:Epoll Bug,它会导致Selector空轮询,最终导致CPU100%。直到 JDK 1.7版本该问题仍旧存在,没有被根本解决。3.Netty 的强大之处:零拷贝、可拓展事件模型;支持 TCP、UDP、HTTP、WebSocket 等协议; 提供安全传输、压缩、大文件传输、编解码支持等等。4.提供阻塞和非阻塞
2021-06-24 21:24:34
158
原创 Socket,WebSocket, I/O模型, NIO编程
Socket1.Socket,套接字就是两台主机之间逻辑连接的端点。2.TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。3.Socket是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。4.它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议、本地主机的IP地址、 本地进程的协议端口、远程主机的IP地址、远程进程的协议端口。5.客户端(Socket)请求与服务器(ServerSocket)进行连接
2021-06-24 21:23:04
406
原创 分布式集群,Elastic-Job分布式任务调度,Session一致性
分布式和集群1.基本概念:分布式和集群是不一样的,分布式一定是集群,但是集群不一定是分布式。2.分布式是一个大系统拆分成多个小模块,而集群是实例的复制。一致性Hash算法1.有多种形式:除留余数法,开放寻址法,直接寻址法,线性构造Hash算法。2.Hash算法在很多分布式集群产品中都有应用,比如分布式集群架构Redis、 Hadoop、ElasticSearch,Mysql分库分表,Nginx负载均衡等小结:一致性Hash算法主要的应用场景归纳起来两个: 1.请求的负载均衡(比如ngi
2021-06-24 21:19:08
587
2
原创 Tomcat结构分析及优化,源码解读
浏览器访问服务器的流程1.用户发起请求,根据url或者链接,客户端发起TCP链接请求;2.服务器接收请求并创建连接,建立连接通道;3.客户端生成Http格式请求包,发送请求数据包到服务器;4.服务器解析Http请求数据包,并执行请求,生成HTTP格式请求数据包,发送响应数据包;5.客户端解析Http数据包(静态资源/动态资源)展现到客户端小结: 浏览器访问服务器使用的是Http协议,Http是应用层协议,用于定义数据通信的格式,具体的数 据传输使用的是TCP/IP协议。Tomcat基本主
2021-06-24 21:16:48
125
原创 Nginx负载均衡,动静分离,线程模型
Nginx基础回顾1.Nginx 是个高性能的HTTP和反向代理web服务器,核心特点是占有内存少,并发能力强。2.支持50000个并发连接数,不仅如此,CPU和内存的占用也非常的低,10000个没有活动 的连接才占用2.5M的内存。3.正向代理:在浏览器中配置代理服务器的相关信息,通过代理服务器访问目标网站,代理 服务器收到目标网站的响应之后,会把响应信息返回给我们浏览器的客户端。4.反向代理:浏览器客户端发送请求到反向代理服务器(比如Nginx),由反向代理服务器选择原始 服务器提供
2021-06-24 18:51:28
264
原创 SpringMvc应用,组件初始化解析
springMVC简介SpringMVC是基于MVC设计模型应用于表现层的轻量级web框架。是对于原生servlet的封装,原先我们有多少个业务就需要通过实现接口的方法实现多少个servlet,而现在SpringMVC对servlet做了封装,只需要由dispatcherServlet前端控制器和客户端进行交互,由dispatcherServlet前端控制器 根据规则转发请求到对应的控制器,然后返回结果由DispatcherServlet响应给客户端;执行基本流程定义dispatcherServl
2021-06-24 18:49:26
268
原创 Spring内容刨析 IOC容器,AOP切面,循环依赖
Spring框架Spring的简介:是分层全栈式轻量级(启动时加载资源较小,只需要一个基本环境,无需引用第三方)开源框架,以IOC和AOP为核心思想,提供了展现层Spring-mvc框架集成和业务层事务支持等应用,还能集成第三方开源框架;Spring的优势:方便解耦,简易开发:使用IOC容器管理管理bean以及对象依赖关系;解决了硬编码所带来的过度耦合;Aop编程支持:使用Aop面向且面编程,为业务提供横向扩展;声明式事务的支持(@Transactional)通过声明式方式灵活的进行事务的管
2021-06-24 18:41:21
100
原创 SpringBoot应用,自动配置源码刨析
SpringBoot约定优于配置思想又称按约定编程,是一种软件设计规范。本质上是对系统、类库或框架中一些东西假定一个大众化合理的默认值(缺省值)。只要不偏离默认配置,就不需要额外配置;SpringBoot基本概念1.springBoot是一种快速启动Spring的一种轻量级框架,可以让我们使用Spring的强大功能,又不需要像Spring那样进行大量配置;2.SpringBoot是基于Spring4.0版本设计,它解决了依赖包的一个冲突问题还有引用不稳定的问题;SpringBoot的相关特
2021-06-24 18:39:34
882
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人