随笔分类 - 分布式专题
记录关于分布式相关的问题,包括分布式事务,分布式任务调度,分布式锁等。
摘要:Logstash 实现ES 与数据库同步: 使用定时器(使用sql 定时的去查询数据进行同步)、实现方式比较简单。 MQ 实现 ES 与数据库同步: 实时性,消息放到MQ中,消费者会自动的消费,复杂性更高。 MQ方式保持数据一致性比较强,因为MQ能够自动重试、补偿。而logstash无法实现补偿、重
阅读全文
摘要:kafka简介与应用场景 Apache Kafka是分布式发布-订阅消息系统,在 kafka官网上对 kafka 的定义:一个分布式发布-订阅消息传递系统。 它最初由LinkedIn公司开发,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。Kafka是一种快速、可扩展的、设
阅读全文
摘要:RabbitMQ解决分布式事务思路: 案例: 经典案例,以目前流行点外卖的案例,用户下单后,调用订单服务,让后订单服务调用派单系统通知送外卖人员送单,这时候订单系统与派单系统采用MQ异步通讯。 RabbitMQ解决分布式事务原理:采用最终一致性原理。 需要保证以下三要素 1、确认生产者一定要将数据投
阅读全文
摘要:1.如图第一个是erlang语言的安装包,第二个是rabbitmq的安装包。 2.配置erlang语言环境,因为rabbitmq由erlang语言编写的,所以需要配置erlng语言环境。 erlang环境的配置跟我们配置JDK环境一样,如图。变量名:ERLANG_HOME。变量值:erlang安装报
阅读全文
摘要:1.什么是RabbitMQ RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现。AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多公开标准(如 COBAR的 IIOP ,或者是 SOAP 等),但是在异步消息处
阅读全文
摘要:1.分布式session一致性 :指服务器集群情况下session共享的问题。 2.session的作用:保存服务器(tomcat)与客户端(浏览器)整个通讯的会话基本信息。 3.session应用场景:记录用户信息。登录场景(账号密码登陆成功之后,获取到userid,存放在session中,下次登
阅读全文
摘要:lcn集群原理图: 1.实现原理: 1.1 LCN获取tm协调者注册地址 1. LCN客户端项目启动的时候,首先会注册到事务协调者中去,然后读取配置文件tm事务协调者的注册地址。 2. 向该事务协调者注册地址发送一个请求,获取对应的lcn底层协议ip和端口号(底层是netty协议通讯)。 3. 会向
阅读全文
摘要:二段提交协议 第一阶段: 准备阶段:协调者向参与者发起指令,参与者评估自己的状态,如果参与者评估指令可以完成,则会写redo或者undo日志,让后锁定资源,执行操作,但并不提交。 第二阶段:如果每个参与者明确返回准备成功,则协调者向参与者发送提交指令,参与者释放锁定的资源,如何任何一个参与者明确返回
阅读全文
摘要:CPA理论: 由于对系统或者数据进行了拆分,我们的系统不再是单机系统,而是分布式系统,针对分布式系统的CAP原理包含如下三个元素。 C:Consistency,一致性。在分布式系统中的所有数据 备份,在同一时刻具有同样的值,所有节点在同一时刻读取的数据都是最新的数据副本。 P: Partition
阅读全文
摘要:1.分布式事务产生的原因 来源于微服务、分布式系统之间跨数据库产生的问题,数据库做垂直分割(按照业务需求划分数据库、分库),分为多个不同的数据源(JDBC连接),会产生分布式事务的问题。 在微服务环境下,因为会根据不同的业务会拆分成不同的服务,比如会员服务、订单服务、商品服务等,让专业的人做专业的事
阅读全文
摘要:1.传统配置文件与分布式配置文件区别 传统配置文件:如果修改了配置文件,需要重新打包发布,重新发布服务,而且每个环境的变更配置文件,比较繁琐。 分布式配置文件:将配置文件注册到配置中心上去,可以使用分布式配置中心实时更新配置文件,统一管理配置文件,不需要重新打包发布。 2.常用的分布式配置中心框架有
阅读全文
摘要:xxl-job-Admin是一个服务调度中心,管理所有的任务的触发。 1、如果xxl-job-Admin平台如果宕机了,该如何处理? 需要搭建集群。 2、xxl-job-Admin 如何搭建集群? 使用Nginx搭建集群进行处理。 3、如何避免job被执行2次? 使用Ngix搭建集群,效果类似于 一
阅读全文
摘要:定时任务调度:在某个时间点触发执行操作(CURD)。 分布式任务调度平台的使用场景:数据同步、交易信息(对账)、清除过期用户信息、定期发送报表、消息推送。 传统的定时任务与分布式定时任务的区别? 传统的定时任务特征:单点系统(job没有集群) 思考:如果job在高并发的情况下,导致job服务器宕机之
阅读全文
摘要:1.分布式锁解决方案 1.采用数据库 不建议 性能不好 jdbc 2.基于Redis实现分布式锁(setnx)setnx也可以存入key,如果存入key成功返回1,如果存入的key已经存在了,返回0. 3.基于Zookeeper实现分布式锁 Zookeeper是一个分布式协调工具,在分布式解决方案中
阅读全文
摘要:什么是分布式锁? 分布式锁是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。 分布式锁解决方案:
阅读全文
摘要:1.使用UUID生成全局id UUID是一个字符串而且没有顺序,所以不适合做主键,可以 做 token 使用。 利用全球唯一UUID生成订单号 UUID基本概念: UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。 UUID组成部分:当前日期和时间+时钟序列+随机数+全局
阅读全文
摘要:1.使用jsonp解决网站跨域问题(不推荐,因为只支持get请求,不支持post请求)。 2.设置响应头允许跨域(小公司、小项目中使用,能快速解决问题)。 response.setHeader(“Access-Control-Allow-Origin”,”*”); 3.使用httpclient进行转
阅读全文
摘要:1.使用cookie代替session(不安全,不推荐使用) 2.使用数据库存储session(效率低,不推荐使用) 3.使用nginx反向代理ip绑定方法,同一个ip只能在同一台服务器上进行访问(不推荐,相当于没有集群)。 4.使用Spring-Session框架,相当于把session缓存到re
阅读全文