这个用户很懒,还没有个人简介
私信
主帖 57
回帖
视频
提问
回答 1
资源
专栏
大家好,我是不才陈某前面在介绍分布式链路追踪时讲过异步调用会丢失链路信息,最终的解决方案是使用对应的包装类重新包装一下,如下:RunnableWrapperCallableWrapperSupplierWrapper还有openFeign异步请求丢失上文的问题,这些问题追根究底都是ThreadLocal惹得祸。由于ThreadLocal只能保存当前线程的信息,不能实现父子线程的继承。说到这,很多人想到了InheritableThreadLocal,确实InheritableThreadLocal能够实现父子线程...
2022-07-13 15:18:56 219浏览 0点赞 0回复 0收藏
简单应用在SpringSecurity往往需要存储用户登录的详细信息,这样在业务方法中能够随时获取用户的信息。在前面的SpringCloudGateway整合OAuth2.0实现统一认证鉴权文章中笔者是将用户信息直接存储在Request中,这样每次请求都能获取到对应的信息。其实Request中的信息存储也是通过ThreadLocal完成的,在异步执行的时候还是需要重新转存,这样一来代码就变得复杂。那么了解了TransmittableThreadLocal之后,完全可以使用这个存储用...
2022-07-13 15:18:26 291浏览 0点赞 0回复 0收藏
所以,重点的核心逻辑应该是在TtlCallablecall()或者TtlRunnablerun()中。以下以TtlCallable为例,TtlRunnable同理类似。在分析call()方法之前,先看一个类TransmitterpublicstaticclassTransmitter{捕获当前线程中的是所有TransimittableThreadLocal和注册ThreadLocal的值。NonNullpublicstaticObjectcapture(){returnnewSnapshot(captureTtlValues(),captureThreadLocalValues());}捕获TransimittableThreadLocal的值,将holde...
2022-07-13 15:18:15 253浏览 0点赞 0回复 0收藏
大家好,我是不才陈某这是《SpringCloud进阶》第20篇文章,往期文章如下:五十五张图告诉你微服务的灵魂摆渡者Nacos究竟有多强?openFeign夺命连环9问,这谁受得了?阿里面试这样问:Nacos、Apollo、Config配置中心如何选型?这10个维度告诉你!阿里面试败北:5种微服务注册中心如何选型?这几个维度告诉你!阿里限流神器Sentinel夺命连环17问?对比7种分布式事务方案,还是偏爱阿里开源的Seata,真香!(原理+实战)SpringCloudG...
2022-07-13 15:18:06 252浏览 0点赞 0回复 0收藏
大家好,我是不才陈某无论多么复杂的业务场景,一条数据的一生都体现在CRUD操作上,正是创建、查询、修改、删除。正如人的生死轮回,数据亦是如此,一条数据随着时间的流逝,其价值也是在逐渐变小。数据存在的价值则是在于它被使用的程度,在不同的系统中,人们对于不同时期的数据有着不同的需求。比如12306、携程上的火车、机票订单,人们往往只关注30天之内的订单,而携程正是默认只保留30天的订单信息,超过30天的订单需要通...
2022-07-12 17:07:40 187浏览 0点赞 0回复 0收藏
数据库中的数据如下:productdb1productdb2“源码已经上传GitHub,关注公众号:码猿技术专栏,回复关键词:9532获取!”4.水平分表经过水平分库后,性能得到了提升,但是经过一段时间后,商品的单表数据量急剧增长,查询非常慢,那么此时就需要对单表进行水平拆分了,如下图:水平分表同样需要在ShardingJDBC中配置分表的规则,如下:分表策略,如何将一个逻辑表映射为多个实际表spring.shardingsphere.sharding.tables.<逻辑表...
2022-07-12 17:07:32 273浏览 0点赞 0回复 0收藏
3、主键生成策略ShardingJDBC支持配置主键生成策略,比如使用雪花算法或者UUID方式,配置如下:spring:ShardingJDBC的配置shardingsphere:分片的配置sharding:表的分片策略tables:productbase是逻辑表的名称productbase:主键生成策略keygenerator:主键column:productid生成算法type:SNOWFLAKEshop:主键生成策略keygenerator:主键column:shopid生成算法type:SNOWFLAKE“SNOWFLAKE:雪花算法”配置完成后,向productbase插入一条...
2022-07-12 17:07:27 204浏览 0点赞 0回复 0收藏
ShardingJDBC实战上述内容基本介绍了ShardingJDBC的基本知识点,下面通过SpringBoot+ShardingJDBC的方式实战演示一下。1.ShardingJDBC的pom依赖想要使用ShardingJDBC只需要添加一个maven依赖即可,如下:<dependency><groupId>org.apache.shardingsphere<groupId><artifactId>shardingjdbcspringbootstarter<artifactId><version>${shardingsphere.version}<version><dependency>“笔者这里使用的版本为:4.1.1”“源码已经上传...
2022-07-12 17:07:18 208浏览 0点赞 0回复 0收藏
ShardingJDBC介绍ShardingJDBC是当当网研发的开源分布式数据库中间件,从3.0开始ShardingJDBC被包含在ShardingSphere中,之后该项目进入进入Apache孵化器,4.0版本之后的版本为Apache版本。ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,由ShardingJDBC、ShardingProxy、ShardingSidecar(规划中)组成。“官网:https:shardingsphere.apache.org”目前我们只需要关注ShardingJDBC,后面的两种组件后文介...
2022-07-12 17:07:08 264浏览 0点赞 0回复 0收藏
大家好,我是不才陈某这是《SpringCloud进阶》第39篇文章,前面的文章中介绍了网关集成SpringSecurity实现网关层面的统一的认证鉴权。有不清楚的可以看之前的文章:实战干货!SpringCloudGateway整合OAuth2.0实现分布式统一认证授权!最近订阅了《SpringCloudAlibaba实战》视频专栏的读者经常问陈某两个问题,如下:鉴权放在各个微服务中如何做?feign的调用如何做到的鉴权?今天针对以上两个问题深入聊聊如何通过三个注解解决...
2022-07-12 17:07:01 218浏览 0点赞 0回复 0收藏
2、confirm方法confirm方法①处的代码从幂等工具类中根据当前类和全局事务ID获取值,由于try阶段执行成功会向其中添加值,confirm方法执行成功会移出这个值,因此在confirm开头判断这个值是否存在就起到了幂等效果,防止重试的效果。⑥处的代码从幂等工具类中移出try方法中添加的值。②处的代码是从BusinessActionContext中获取try方法中的入参。③处的代码是释放掉冻结的库存④处的代码是修改订单的状态为已完成。“注意:1.开...
2022-07-12 17:05:43 384浏览 0点赞 0回复 0收藏
3、悬挂事务协调器在调用TCC服务的一阶段Try操作时,可能会出现因网络拥堵而导致的超时,此时事务管理器会触发二阶段回滚,调用TCC服务的Cancel操作,Cancel调用未超时;在此之后,拥堵在网络上的一阶段Try数据包被TCC服务收到,出现了二阶段Cancel请求比一阶段Try请求先执行的情况,此TCC服务在执行晚到的Try之后,将永远不会再收到二阶段的Confirm或者Cancel,造成TCC服务悬挂。解决方案:解决逻辑很简单:在执行try方法操作...
2022-07-12 17:05:31 307浏览 0点赞 0回复 0收藏
TCC事务模式的落地实现在前面文章中介绍了Seata的AT模式,有不清楚的可以看:对比7种分布式事务方案,还是偏爱阿里开源的Seata,真香!(原理+实战)当然Seata支持的事务模式不局限于AT模式,还有TCC模式、SAGA模式、XA模式,下面整合一下TCC模式。1、演示场景就以电商系统中下订单为例,为了演示,直接去掉账户服务,以订单服务、库存服务为例介绍。具体的逻辑如下:客户端调用下订单接口扣库存创建订单请求完成根据上面的逻辑可...
2022-07-12 17:05:24 229浏览 0点赞 0回复 0收藏
TCC模式的三种类型?业内实际生产中对TCC模式进行了扩展,总结出了如下三种类型,其实从官方的定义中无此说法,不过是企业生产中根据实际的需求衍生出来的三种方案。1、通用型TCC解决方案通用型TCC解决方案是最经典的TCC事务模型的实现,正如第一节介绍的模型,所有的从业务都参与到主业务的决策中。通用型TCC适用场景:由于从业务服务是同步调用,其结果会影响到主业务服务的决策,因此通用型TCC分布式事务解决方案适用于执行...
2022-07-12 17:05:18 979浏览 0点赞 0回复 0收藏
大家好,我是不才陈某这是《SpringCloud进阶》第19篇文章,往期文章如下:五十五张图告诉你微服务的灵魂摆渡者Nacos究竟有多强?openFeign夺命连环9问,这谁受得了?阿里面试这样问:Nacos、Apollo、Config配置中心如何选型?这10个维度告诉你!阿里面试败北:5种微服务注册中心如何选型?这几个维度告诉你!阿里限流神器Sentinel夺命连环17问?对比7种分布式事务方案,还是偏爱阿里开源的Seata,真香!(原理+实战)SpringCloudG...
2022-07-12 17:05:08 273浏览 0点赞 0回复 0收藏
网关如何聚合Swagger?网关聚合的思想很简单,就是从路由中获取微服务的访问地址,然后拼接上v2apidocs即可。同样的还是要添加Swagger的两个依赖,如下:<!swagger><dependency><groupId>io.springfox<groupId><artifactId>springfoxbootstarter<artifactId><dependency><!swaggerui这里是用了一个好看一点ui界面><dependency><groupId>com.github.xiaoymin<groupId><artifactId>swaggerbootstrapui<artifactId><dependency>创...
2022-07-12 17:03:00 181浏览 0点赞 0回复 0收藏
2、自动配置类配置Swagger陈某是将每个服务的API信息抽离出一个属性类SwaggerProperties,后续只需要在每个服务的配置文件中指定即可。DataConfigurationProperties(prefixSwaggerProperties.PREFIX)ComponentEnableConfigurationPropertiespublicclassSwaggerProperties{publicstaticfinalStringPREFIX"spring.swagger";包privateStringbasePackage;作者相关信息privateAuthorauthor;API的相关信息privateApiInfoapiInfo;Datap...
2022-07-12 17:02:47 165浏览 0点赞 0回复 0收藏
大家好,我是不才陈某这是《SpringCloud进阶》第22篇文章,往期文章如下:五十五张图告诉你微服务的灵魂摆渡者Nacos究竟有多强?openFeign夺命连环9问,这谁受得了?阿里面试这样问:Nacos、Apollo、Config配置中心如何选型?这10个维度告诉你!阿里面试败北:5种微服务注册中心如何选型?这几个维度告诉你!阿里限流神器Sentinel夺命连环17问?对比7种分布式事务方案,还是偏爱阿里开源的Seata,真香!(原理+实战)SpringCloudG...
2022-07-12 17:02:40 242浏览 0点赞 0回复 0收藏
大家好,我是不才陈某实际生产环境中难免会涉及到配置的更新,而有些配置是否可行仅仅在本地、测试环境运行是很难保证生产环境不出错,此时就需要将配置变更到生产环境中进行测试。如何变更?直接修改使其全部生效吗?答案是:不行原因很简单:如果这个配置有问题,那么将使得整个集群服务瘫痪此时就要采用灰度配置:只针对某些服务做变更,一旦这些配置没问题,将作用于所有服务,这样能够使得服务平稳的运行,不至于整个集群...
2022-07-12 17:02:30 403浏览 0点赞 0回复 0收藏
因为不仅仅网关需要用到这个灰度发布策略,凡是涉及到OpenFeign调用的微服务如果需要配置灰度发布都需要用到,因此这里陈某定义了一个公用的graystarter。经过上述步骤网关的灰度发布则已经配置完成,此时只需要通过RibbonClients指定对应哪个服务灰度发布。openFeign透传灰度标记上面在介绍网关的灰度发布配置时,是将灰度标记(grayTagtrue)放在了请求头中,因此在下游服务中需要做的就只是从请求头中将灰度标记取出来,然后...
2022-07-12 17:02:20 212浏览 0点赞 0回复 0收藏