
分布式
ypp91zr
善于分享,提升自我!
展开
-
短链接生成
public Object getGoodsShortUrl(Integer userId, Integer goodsId) { String originUrl=domain.getSelf()+"/wx/auth/share/goods/auth?userId="+userId.toString()+"&goodsId="+goodsId.toString(); return getShortUrl(originUrl); } private.原创 2021-03-18 16:40:12 · 2841 阅读 · 2 评论 -
事务提交后发送异步任务
需求背景是在执行订单申请完毕之后需要发送通知,但可能存在速度过快的情况,当申请完毕之后发送一个id到另外一个系统,这边事务却还没有提交更新数据,导致另外一个系统获取不到数据解决方案:在事务提交之后发送异步任务,如果不是异步任务可能会存在接口耗时过长(本人业务测试一个接口可达5s多)方式1:比较简单的就是事务提交之后直接发送异步任务。也可以参考Spring的@Async注解结合使用,这里不作展示private final ExecutorService executorService = E原创 2021-01-24 20:58:52 · 788 阅读 · 0 评论 -
分布式唯一id 分布式唯一订单号生成
package org.com.rsmall.admin.init;import org.apache.commons.lang3.StringUtils;import org.com.rsmall.core.config.redis.RedisConstants;import org.com.rsmall.core.config.redis.RedisUtils;import org.com.utils.IPUtils;import org.com.utils.IdUtils;import.原创 2021-01-14 18:15:30 · 637 阅读 · 0 评论 -
redis分布式锁(redisson)的简单封装
项目用到了redisson分布式锁,但是每个地方的代码除了业务代码,其他都差不多一样的,如果要修改的话,就要修改很多,不只修改一个项目,其他项目也得该,地方多了容易出错,并且数据也对不上。起始的想法是封装起来,然后自定义一个spring boot starter。其他项目依赖即可,这样一来如果要修改只改这个starter模块就可以了。于是将项目分布式锁进行了简单封装,以前是下面代码这样的@Autowiredprivate RedissonClient redissonClient;public原创 2020-09-03 15:34:23 · 1604 阅读 · 0 评论 -
Hadoop启动报错org.apache.hadoop.io.nativeio.NativeIO$POSIX.stat(Ljava/lang/String;)Lorg/apache/hadoop/io
先贴下完整错误信息datanode的错误,原因是hadoop.dll文件的问题,由于是本地windows安装启动的hadoop,故需要hadoop.dll文件,但版本对应不上,hadoop是3.1.3的,但是hadoop.dll文件是3.0.0的,换了hadoop.dll文件就好了不排除其他问题,配置环境变量,bin 里是否有hadoop.dll 和winutils.exe 这两个文件,C: windows\System32 里是否有hadoop.dll 文件。记得重启电脑Hadoop...原创 2020-08-27 16:55:49 · 4391 阅读 · 1 评论 -
本地安装HDFS(Hadoop)
开发阶段本地远程请求服务器有点慢,于是自己本地安装一个HDFS下载地址https://hadoop.apache.org/releases.html 本人安装的3.1.3下载解压放到自己指定位置,Hadoop安装必须要安装JDK1.8以上,配置系统环境变量path中添加%HADOOP_HOME%\bin,和JAVA_HOME方式一致,自行安装JAVA_HOME安装目录不能有空格,不然启动hadoop会报错:Error: JAVA_HOME is incorrectly set.Please ..原创 2020-08-27 17:43:41 · 1664 阅读 · 0 评论 -
Twitter的雪花算法SnowFlake
SnowFlake算法是Twitter设计可以在分布式系统生成唯一ID的算法,可以满足Twitter每秒上万ID分配,这些消息ID是唯一的且有大致的递增顺序。使用Java语言实现。适合一些生成唯一ID的业务场景https://github.com/beyondfengyu/SnowFlake源码/** * twitter的snowflake算法 -- java实现 * * @...原创 2019-09-26 17:31:27 · 408 阅读 · 0 评论 -
高并发缓存穿透设计的一些思路
在目前的开发应用中,基本上缓存是标配,而使用的比较多的是redis、memercache等,也有一些本地缓存,比如hashmap、google guava包、spring cache等,或者更好一点的本地作为一级缓存,redis等作为二级缓存,本地缓存数据量较少@Override public OrderEntity selectById(Long id) { Object objec...原创 2019-06-12 21:58:36 · 559 阅读 · 0 评论 -
常见限流算法之漏桶算法、令牌桶算法
在大型的网站中,高并发往往不能避免,就会涉及到一定的限流限流在系统的每个API以及服务中,每个接口的访问都有一定的上限,当达到接口承受的范围的时候,就有必要采取一定的措施来保证服务的可用性和降级处理,防止超过预期系统压力过大导致瘫痪等。所以对每个服务或者接口进行访问限制,进行拒绝访问、排队等待服务以及引流等常见的限流算法有漏桶算法和令牌通算法漏桶算法从上图可见,一个漏...原创 2019-05-18 21:10:46 · 1349 阅读 · 0 评论 -
分布式事务之rabbitMQ最终一致性
一般的大型电商网站都会面临的问题:分布式事务,在面临分布式微服务等项目使用传统的单一事务已经无法满足,解决分布式事务的方案也比较多,有TCC事务补偿(基于2PC的实现)、2PC(两阶段提交)、3PC(三阶段提交)等,框架有JTA atomiks等。很多公司也有自己的分布式事务解决方案,比如最开始支付宝的XTS等像JTA atomiks等2PC的方案效率并不高,中间需要一个协调者,并且是同步的,...原创 2019-05-26 22:56:56 · 12477 阅读 · 6 评论 -
基于Redis的分布式锁实现
线程锁:大家都不陌生,主要用来给方法、代码块加锁。当某个方法或者代码块使用锁时,那么在同一时刻至多仅有有一个线程在执行该段代码。当有多个线程访问同一对象的加锁方法/代码块时,同一时间只有一个线程在执行,其余线程必须要等待当前线程执行完之后才能执行该代码段。但是,其余线程是可以访问该对象中的非加锁代码块的。 进程锁:也是为了控制同一操作系统中多个进程访问一个共享资源,只是因为程...原创 2019-05-04 20:08:59 · 771 阅读 · 0 评论 -
微服务分布式事务详解
在以前传统的web应用当中,一个项目基本一个war/jar包走天下,对于事务处理相信很多的项目基本是使用到的spring的事务处理。但是在当下流行的分布式微服务来说,普通的Spring事务处理已经无法满足场景,Spring事务也是基于jvm级别的,当多个服务系统之间进行调用,进行数据库操作,一旦失败就会发现事务会存在严重的问题,举个简单的例子在上图中,为了减轻数据库的压力等,将数据库分成了...原创 2019-05-05 23:43:49 · 1132 阅读 · 0 评论 -
XA resource 'XXXXdatasource': end for XID '' raised -7: the XA resource has become unavailable
今天把分布式事务弄好以后,后面一直报连接错误先来说这个错误:XA resource 'XXXXdatasource': end for XID '' raised -7: the XA resource has become unavailable这个算是mysql对于Atomikos的一个小bug 官方的解释: A possible workaround might be to ...原创 2018-11-12 16:51:22 · 6181 阅读 · 1 评论 -
spring boot+mybatis+druid 多数据源多库分布式事务
废话不多说,首先贴配置文件,需要引入pomxml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</versi...原创 2018-11-12 11:23:19 · 1742 阅读 · 0 评论 -
spring boot+mybatis+druid 多数据源配置
application.yml(application.properties)配置:spring: datasource: druid: type: com.alibaba.druid.pool.xa.DruidXADataSource driver-class-name: com.mysql.jdbc.Driver ...原创 2018-11-12 11:12:08 · 583 阅读 · 0 评论 -
CAP理论与BASE思想
分布式领域CAP理论,Consistency(一致性), 数据一致更新,所有数据变动都是同步的Availability(可用性), 好的响应性能Partition tolerance(分区容错性) 可靠性定理:任何分布式系统只可同时满足二点,没法三者兼顾。忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。关系数据库的ACID模型拥有转载 2017-04-28 16:11:43 · 237 阅读 · 0 评论