
微服务
当时的那个女孩
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
使用中间件的优劣分析以及实现
为什么要引入中间件:1.系统解耦:多个系统去请求一个系统A获取同样数据的时候,系统A将数据发送给中间件,由中间件进行转发.2.异步调用:将用时较多的系统调用,交给中间件来办.3.流量削峰:所有机器前面部署一层MQ,平时请求少的时候轻松接受消息,一旦到了瞬时高峰期,将消息积压在MQ里面,慢慢消费.引入中间件的问题:1.系统可用性降低:MQ中间件可能挂掉.2.系统稳定性降低:消...转载 2019-10-17 14:39:39 · 466 阅读 · 0 评论 -
ZooKeeper分布式锁的实现原理
zookeeper的应用:分布式应用配置管理,统一命名服务,状态同步服务,集群管理.Curator开源框架对Zookeeper分布式锁的实现.举个栗子:zookeeper里面有一把锁,这个锁就是Zookeeper上的一个节点,然后,两个客户端都要来获取这个锁:假设客户端A抢先了一步,对Zookeeper发起了加分布式锁的请求,这个加锁请求是用到了Zookeeper中的一个特殊概念:"临...转载 2019-10-17 13:56:58 · 148 阅读 · 0 评论 -
每秒上千订单场景下的分布式锁高并发优化
库存超卖:加锁解决库存超卖:分布式锁一旦加了之后,对同一商品的下单请求,会导致所有客户端都必须对同一商品的库存锁key进行加锁,这样会导致对同一商品的下单请求是串行化,一个接一个处理.解决方案:分段加锁把数据分成很多个段,每个段是一个单独的锁,所以多个线程过来并发修改数据的时候,可以并发的修改不同段的数据.不至于说,同一时间只能有一个线程独占修改ConcurrentHash...转载 2019-10-17 10:41:05 · 250 阅读 · 0 评论 -
Redis分布式锁的实现原理
一、Redisson实现Redis分布式锁的底层原理(1)加锁机制现在某个客户端要加锁,如果该客户端面对的是一个redis cluster集群,首先会根据hash节点选择一台机器(仅仅只是选择一台机器).紧接着会发送一段lua脚本到redis上,lua脚本如下:为什么要用lua脚本呢:因为一大坨复杂的业务逻辑,可以通过封装在lua脚本中发送给redis,保证这段复杂业务逻辑...转载 2019-10-16 11:34:29 · 319 阅读 · 0 评论 -
TCC分布式事务
场景假设:在商城中,我们对订单步骤进行研究:1.更改订单的状为"已支付" 2.扣减商品库存 3.给会员增加积分 4.创建销售出库单通知从库发货.实现一个TCC分布式事务的效果:上述的步骤,要么一起失败,要么一起成功,必须是一个整体性的事务....转载 2019-10-15 16:55:39 · 120 阅读 · 0 评论 -
每秒上万并发下的SpringCloud参数优化实战
第一步对数据库就执行简单的单表查询和更新,复杂的业务逻辑全部放在java内部进行运行,比如一些关联,运算之类的工作.第二步对于ribbon和hystrix的超时时间,一般超时定义在1秒以内,因为一个接口,理论的最佳响应速度应该在200ms以内.第三步如果因为网络的问题,接口调用偶然超时到1.5秒,开启重试功能,SpringCloud中的Feign+Ribbon组合,在进行服务调...转载 2019-10-15 15:53:56 · 338 阅读 · 0 评论 -
Spring Cloud底层原理
SpringCloud是一个全家桶技术栈,其中包括:Eureka,Ribbon,Feign,Hystrix,Zuul.一、业务场景介绍先来给大家说一个业务场景,假设咱们现在开发一个电商网站,要实现支付订单的功能,流程如下: 创建一个订单之后,如果用户立刻支付了这个订单,我们需要将订单状态更新为“已支付” 扣减相应的商品库存 通知仓储中心,进行发货 给用户...转载 2019-10-11 11:43:05 · 173 阅读 · 0 评论 -
微服务注册中心如何承载大型系统的千万级访问
本文衔接上一篇文章:SpringCloud 底层原理一、问题:Spring Cloud架构体系中,Eureka是一个重要的组件,它扮演着微服务注册中心的角色,所有的服务注册与服务发现,都是依赖Eureka的.我们在生产环境部署时,会有以下的问题: Eureka Server到底要部署几台机器? 我们的系统那么多服务,到底会对Eureka Server产生多大的访问压力?...转载 2019-10-11 16:01:19 · 139 阅读 · 0 评论