微服务
从0到1了解分布式
绅士jiejie
理想的生活,就是生活的理想!
展开
-
一个订单系统拆分为了很多服务,那么每个服务每秒接收的并发请求是QPS还是TPS?
这里首先要了解一下什么是QPS,什么是TPS?QPS:表示数据库每秒可以处理多少个请求,可以简单的把一次请求理解为一条sql语句,所以也可以理解为数据库每秒能执行多少条sql语句。TPS:表示数据库每秒能处理的事务,而一个事务可以包含多条sql语句,TPS衡量的是数据库每秒处理的事务量,事务提交和回滚都算执行完事务了,所以也可以说数据库每秒会处理多少事务的提交或回滚。而如果一个订单系统拆分为了很多服务,那么每个服务每秒接收的并发请求是QPS还是TPS?对于每个服务来说,它每秒的并发请求量就是.原创 2020-11-13 12:02:47 · 815 阅读 · 0 评论 -
简单了解下base理论
前言首先Base理论是由于CAP定理中一致性和可用性不可兼得而权衡出来的结果,其来源于对大型互联网分布式实践的总结,是基于CAP定理逐步演化而来的。Base理论的核心思想是牺牲数据的强一致性来换取高可用性,想起强一致性,是不是就会想到传统事务的ACID,有意思的是,这两个模型理论合在一起,就是“酸碱中和”这个词语,如下:Base理论说的是什么?Basically Available(基本可用):在分布式系统出现故障时,允许牺牲一部分功能的可用性,来保证核心功能的高可用,这里可以类似熔断降级机制.原创 2020-10-27 18:45:47 · 1236 阅读 · 0 评论 -
理解下网络分区
CAP定理中的P指的就是网络分区 ,当不同节点分布在不同的子网络中时,在内部子网络正常的情况下,由于某些原因导致这些子节点之间出现网络不通的情况,导致整个系统环境被切分成若干个独立的区域,就形成了网络分区,然后就需要在C(一致性),A(可用性)之间做权衡了。...原创 2020-10-27 18:44:29 · 1675 阅读 · 0 评论 -
怎么理解业务幂等
从数学上理解幂等的话,是表示对一个函数或者方法,使用相同的参数执行多次,数据的结果是一致的。但是业务幂等并不要求每次调用的结果都得一致,比如查询资源的操作,由于资源经常会被修改,那么可能上一秒的查询结果和下一秒的查询结果是不同的。但是查询资源的操作依旧还可以被认为是幂等的。因为查询操作不会改变资源状态,所以可以这样理解,只要操作不会影响资源本身,那么就可以说该操作实现了业务幂等。...原创 2020-10-27 12:02:47 · 372 阅读 · 0 评论 -
一个系统被拆分成了很多服务后,QPS和TPS怎么理解?
此时每个服务每秒接收的请求就是QPS。此时一个完整的请求链,例如一整个支付流程要在好多个服务间流转,所以每秒能完成多少笔支付,就可以理解成TPS。原创 2020-10-22 11:56:22 · 301 阅读 · 0 评论 -
分布式锁可以怎么优化,来扛住更高的并发量?
假设现在华为手机有10万库存,大促期间,电商平台的请求量大增,为了保证扣减库存的准确,不超卖,加入了基于Redis的分布式锁方案。目前所有请求发送过来都会请求同一把分布式锁,只有拿到锁的请求才能下单成功,扣减库存。一般来说,为了保持高可用,Redis都会做集群。设想下现在所有请求都请求同一把分布式锁,Redis可能扛不住,或者是处理耗时变长了,那么怎么优化这把锁?首先可以做分段加锁,先把华为的库存分段,分成10个库存字段,每个字段里放10000个库存,接着把一把分布式锁平均分成10把锁,每把锁锁住1原创 2020-10-22 07:48:56 · 500 阅读 · 0 评论 -
分布式环境下,能够做到CA么?
首先分布式环境下,由于网络本身就是无法做到100%的可靠,所以出现分区是一个必然的现象。那么P(分区容错型)就是一个必须要选择的一个要素。如果放弃了使用P,而选择CA,那么当分布式环境出现分区现象时,如果各个节点都分别操作一下数据,就很可能出现数据不一致的情况,而为了保证C(一致性),系统就得禁止写入操作,,所以这就和A(可用性)冲突了,因为A要求非故障的节点要能在合理的时间返回正常的响应,因此分布式环境下,是做不到CA的,同时由于P是必然要素,所以可以根据业务,选择CP或者AP类型。...原创 2020-08-19 12:11:15 · 706 阅读 · 0 评论 -
设计微服务接口时,尽量考虑接口兼容性
设计微服务接口时,尽量考虑接口兼容性,这话怎么理解,比如有以下的一个微服务接口,一开始定义的参数只要userName以及id:void sayHello(String userName, String id);但是之后需要再加个参数age,就变成接下来这样了:void sayHello(String userName, String id, String age);这时候,由于接口被改变了,该接口所对应的微服务模块就要重新编译发布,同时有调用该接口的微服务也需要修改接口对应的参数,否则参数不对应原创 2020-08-01 00:40:35 · 1171 阅读 · 0 评论 -
有限的存储空间,哪些类型的数据适合缓存?
一旦生成就基本不会变的数据计算代价很大的数据频繁访问的热点数据原创 2020-08-01 00:32:47 · 528 阅读 · 0 评论 -
什么样的分布式系统可以称为微服务架构?
每个服务都是由多个独立的进程组成的,这些进程可以部署在不同的物理机上,这样除非所有物理机都宕机,否则总能保证至少有一个进程能对外提供该服务。系统不再是一个巨大的单体系统,而是有多个微服务有机组成,统一对外提供服务的分布式系统。...原创 2020-07-31 12:11:20 · 294 阅读 · 0 评论 -
进程一定要分布在不同主机上,才能叫做分布式系统么?
不管多个进程是不是部署在同一台机器上,只要这多个独立的进程逻辑上组成一个系统,一起对外提供服务,就能叫做分布式系统。原创 2020-07-30 20:57:33 · 401 阅读 · 0 评论 -
如何保证操作的幂等性
使用数据库的唯一键进行过滤重复数据,拒绝重复的请求使用状态流转的方向性来过滤重复数据,一般使用数据库的行级锁来实现把操作变成幂等,比如把数据1加上2,直接定义成把数据更新成3,这样不管操作几次,结果都会一样使用分布式表来过滤重复请求...原创 2020-07-13 12:29:51 · 427 阅读 · 0 评论 -
使用缓存最好只保持弱一致性
使用缓存就是为了提高性能,如果要求缓存喝数据库的数据是强一致的,那么就违背了使用缓存的初衷了,所以建议数据库和缓存数据只需要保持弱一致性。原创 2020-07-13 12:29:03 · 244 阅读 · 0 评论 -
不要在本地事务中调用远程服务
如果在本地事务中调用远程服务,那样本地该事务的操作就与提供远程服务的接口强依赖了,如果远程服务出现了问题,那么就会拖长事务,事务长时间没有提交,数据库连接就不会被释放,随着太多的数据库连接被占用,可能会导致数据库崩溃。...原创 2020-07-09 21:59:58 · 2859 阅读 · 1 评论 -
可靠性和可用性
可用性:在给定的时刻,系统随时都能正常的运行可靠性:在给定的时刻,系统可以无故障的持续运行下面举个例子加深理解如果系统在每小时中崩溃的时间为1ms,那么它的可用性就超过99.9999%,不过它还是不可靠的,因为出现了故障。如果系统从来不崩溃,但是要在每年6月固定停机两个星期,那么它的可用性是96%,不过它却是可靠的。可靠性的量化指标是周期内系统平均无故障运行时间,可用性的量化指标是周期内系统无故障运行的总时间。下面举个例子加深理解假设系统A每年因故障中断十次,每次恢复平均要30分钟,系原创 2020-07-09 11:59:03 · 1898 阅读 · 0 评论 -
了解三种不同类型的过程调用
本地过程调用:被调用的函数和调用过程处于同一进程中同主机间的远程过程调用:被调用的函数与调用过程处于同一主机的不同进程中不同主机间的远程过程调用:一台主机上的某个客户调用另一台主机上的某个服务器的过程...原创 2020-07-08 21:14:52 · 249 阅读 · 0 评论 -
设计分布式系统时,需要考虑哪些问题?
设计分布式系统的本质就是将一个系统合理的拆分成多个子系统,然后部署到不同的机器上。如何合理的拆分出子系统子系统之间需要通信才能合作一起对外提供服务,所以要规划子系统之间如何进行通信通信过程的安全需要怎么保证子系统如果要扩展的话,应该怎么设计子系统的可靠性如何保证多个子系统之间相互通信交换数据,那么如何保证数据的一致性...原创 2020-07-08 12:03:35 · 3996 阅读 · 3 评论 -
什么是分布式系统?
若干个计算机组合成一个整体对外提供服务,对用户来说,访问这个组合成整体的服务就像是访问单个系统一样。原创 2020-07-08 12:02:27 · 188 阅读 · 0 评论