分布式
诸般世界
这个作者很懒,什么都没留下…
展开
-
015 springboot自动装配(中台:ElasticJob基础组件封装案例)
spring在进行扩展的时候,最常用的就是@Autowired 自动装配或Module-wired模块装配(@EnableXXX),Module-wired是将模块整体引入工程中,然后通过几个自定义注解完成应用;step1. 创建springboot工程rabbit-task引入依赖pom.xml<properties> <java.version&...原创 2019-11-04 22:29:24 · 865 阅读 · 0 评论 -
014 分布式定时任务-ES-JOB_高级应用
将上文中https://blog.csdn.net/zxylwj/article/details/102782972的代码稍作修改,然后部署到分布式环境中进行定时任务演示;step1. 修改application.properties中es-job的simpleJob.cron配置:根据实际需要来修改cron表达式step2.打包上传到两台虚拟机:通过ftp用户上传,拷贝到可运行用户,...原创 2019-10-30 22:41:35 · 910 阅读 · 0 评论 -
013 分布式定时任务-ES-JOB_基础使用
Elastic-Job是一个分布式调度解决方案,2.x版本后由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。Elastic-Job-Lite定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务;Elastic-Job-Cloud采用自研Mesos Framework的解决方案,额外提供资源治理、应用分发以及进程隔离等功能。...原创 2019-10-29 18:29:52 · 5798 阅读 · 0 评论 -
007 zookeeper基础组件封装-核心原理测试
1.创建测试项目,注入pom依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependen...原创 2019-07-23 10:07:52 · 174 阅读 · 0 评论 -
006 zookeeper基础组件封装-常用接口定义
一、常用接口定义1.构建zookeeper常用功能封装接口ZookeeperClient:package com.cc.zookeeper.api;import org.apache.curator.framework.CuratorFramework;import org.apache.zookeeper.data.Stat;/*** zookeeper常用功能封装接口...原创 2019-07-22 17:57:37 · 185 阅读 · 0 评论 -
005 zookeeper基础组件封装-SpringBoot
实现自定义封装zookeeper基础组件为jar包,引入其他工程直接调用;自动装配逻辑构建:1.创建springboot工程,删除src下自动创建的入口类及test下的测试类,工程作为jar被引入不需要启动入口;2.在pom.xml中引入依赖:<!-- 添加依赖curator依赖,要对应自己使用zookeeper版本添加 --> <dependen...原创 2019-07-22 13:13:55 · 262 阅读 · 0 评论 -
012 分布式统一ID生成策略-统一ID生成服务的架构设计思路
在实际的工作中,尤其在高并发的场景下,我们一定要对任何外部服务做好兜底策略,也就是说,如果我们调用外部的统一ID生成服务失败,那么我们也要有一个自己服务内部的ID生成策略用来进行最终的兜底(唯一ID生成方式及机器码+时间戳+自增)。很显然,在高并发巨大的流量冲击下,任何的服务都不可能保障100%高性能,低延迟的提供服务,我们的统一ID生成服务也是如此,那么我们要尽最大的努力保障ID...原创 2019-07-25 14:05:53 · 1107 阅读 · 0 评论 -
011 分布式统一ID生成策略-预加载方式和节点生成方式
统一ID生成服务,不是那么好去构建的,需要更深入的去进行思考,包括使用Redis生成ID,在高并发下多个服务去访问,读写分离的情况下如果延迟导致读写不一致,会不会出现其他的问题等等。第一种:业界比较主流的分布式ID生成器的策略是提前加载,也就是预加载的机制,我们可以预先生成一批唯一的ID,然后直接放到内存里,由服务的调用方直接获取就好,获取之后就直接进行删除,当ID使用过半的时...原创 2019-07-25 13:50:07 · 449 阅读 · 0 评论 -
010 分布式、高并发统一ID生成方式分析、zookeeper与redis分布式锁不适合
•对于ID的生成,在我们日常开发里应该是一个最基本的问题,我们先来说说最基础的ID的生成策略:简单生成策略: 最简单的就是利用java.util.UUID工具类进行生成,ID没有排序策略,这种方式的问题就是比如我要查询一批数据,进行入库时间做数据排序的时候,只能够自己在表里设置一个create_time ,给这个字段添加索引然后进行排序。(比如雪花算法、数据库自增主键、seq...原创 2019-07-25 13:16:23 · 489 阅读 · 0 评论 -
004 实际工作中分布式事务与一致性问题解决方案
最佳实战-分布式一致性解决方案 接触了业界一些针对于分布式服务的一致性解决方案后,接下来总结下自己在面对一致性问题的一些方案和思路,其实很多时候我理解分布式服务的一致性一定要以可靠性为基础、简洁性为目标去考量方案,当然前提是满足我们的分布式需求、高并发高性能以及吞吐量为前提。总结了几种比较高效的处理模式。•主动查询模式:所有的操作都提供一个查询接口,用于向外部输出操作执行的状...原创 2019-07-20 15:07:48 · 481 阅读 · 0 评论 -
003 分布式事务解决方案存在的问题
分布式系统一致性解决方案 CAP和BASE理论为基础,我们回过头来再去看看Q1的问题,针对订单表和库存表,我们可以对每一个步骤都去记录其状态,有问题时可以根据所记录的状态来继续执行任务,最终达到一致性,这种方法比如使用定时任务来捞取未知的状态进行处理即可,而下游服务只需满足幂等性就可以达到目的。所以还要一种理论就是酸碱平衡理论,就是说我们可以使用数据库的强一致性和BASE理论的弱...原创 2019-07-19 14:29:12 · 200 阅读 · 0 评论 -
Paxos算法
分布式系统中只存在“一种”一致性算法,那就是Paxos算法。前面提到的一致性看起来很容易实现,但是这都是建立在无故障或者允许无限等待或恢复的基础上。比如2PC就是无限等待协议,投票需要所有人都在。显然,这种方式在容错方面表现不好。Paxos是容错的分布式一致性算法,尽管节点可能会出错,网络会发生故障或者延迟,但所有节点都会同意相同的值。一致性的要求正确性:满足一致性的定义;容错:少部分节...转载 2019-07-19 11:40:49 · 153 阅读 · 0 评论 -
002 分布式核心概念-CAP帽子理论分析及BASE理论分析
分布式事务、一致性的主流解决手段互联网的ACID、CAP、Base理论:ACID:数据库的四个特性(原子性,隔离性,一致性,持久性) 首先要很清楚的认知什么是ACID,一般关系型数据库都会保证ACID这个特性,那么ACID对于一致性来说,就是一种最直接且最有效的强一致性。001中所看到的Q1,关于订单和库存的问题,如果在数据量较小的情况下,可以利用关系型数据库的强一致性解...原创 2019-07-19 11:34:05 · 1068 阅读 · 0 评论 -
001 微服务、分布式系统的5个经典问题说明
•订单与库存场景 •同步调用超时 •异步调用超时 •掉单场景•缓存与数据库不一致问题面向高并发、高可用、依赖治理、持续SRE 这些概念性专业术语,在真正工作中,或者面试的过程中,经常会有被面试官问道,你们之前的系统如何处理和解决高并发的?你们之前的服务如何保障高可用性?你说你们使用的RPC框架(如Dubbo、Thrift、ZeroCICE),那么你们的服务...原创 2019-07-19 09:39:58 · 617 阅读 · 0 评论 -
008 高并发服务依赖与治理-降级、动态开关、灰度发布
在高并发场景下,由于超时或者异常导致服务之间的RPC调用失败,及时的对服务进行补偿、兜底、降级或者熔断,可以有效避免整个调用链路不可用,保障业务的正确执行!场景:最常见的app端用户登录访问服务; app端通过访问userCenter(用户中心)获取token,然后访问ServiceA实际服务,ServiceA通过拦截器拦截用户,去userCenter验证to...原创 2019-07-23 15:54:15 · 824 阅读 · 0 评论