![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
微服务
文章平均质量分 89
这是一条海鱼
这个作者很懒,什么都没留下…
展开
-
分布式高并发系统如何保证对外接口的幂等性
原文前言接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题。本文分享了一些解决这类问题非常实用的办法,绝大部分内容我在项目中实践过的,给有需要的小伙伴一个参考。不知道你有没有遇到过这些场景有时我们在填写某些form表单时,保存按钮不小心快速点了两次,表中竟然产生了两条重复的数据,只是id不一样。我们在项目中为了解决接口超时问题,通常会引入了重试机制。第一次请求接口超时了,请求方没能及时获取返回结果(此时有可能已经成功了),为了避免返回错误的结果(这种情况不可能直接返回失败吧?),于.原创 2022-04-05 23:13:21 · 243 阅读 · 1 评论 -
常见分布式事务解决方案
前言关于分布式事务,工程领域主要讨论的是强一致性和最终一致性的解决方案。典型方案包括:两阶段提交(2PC, Two-phase Commit)方案eBay 事件队列方案TCC 补偿模式缓存数据最终一致性一致性理论分布式事务的目的是保障分库数据一致性,而跨库事务会遇到各种不可控制的问题,如个别节点永久性宕机,像单机事务一样的ACID是无法奢望的。另外,业界著名的CAP理论也告诉我们,对分布式系统,需要将数据一致性和系统可用性、分区容忍性放在天平上一起考虑。两阶段提交协议(简称2PC)是实现分布式原创 2022-04-05 22:38:18 · 551 阅读 · 0 评论 -
网关gateWay
一、为什么微服务一定要有网关1.1 解决 API 放哪里的问题要知道,采用微服务架构的系统本身是由很多的独立服务单元组合起来的。而客户端要调用系统,则必须通过系统提供的各种对外开放的 API 来实现。问题来了,这些 API 要放在哪里呢?直接放在组成系统的服务单元上行不行?比如,在一套电商系统上,关于订单相关的 API ,放在组成订单服务的服务单元上;风控服务的 API ,放在组成风控服务的服务单元上。好,咱们假设有这么一个场景,有一位用户想在这套电商系统上查看下商品详情。那么,这个查看商品详情原创 2022-04-04 14:14:48 · 1151 阅读 · 0 评论 -
分布式事务seata
一、什么是事务事务是逻辑上的一组执行单元,要么都执行,要么都不执行.比如: 张三给李四转1000元钱, 涉及到二个操作 张三的账户-1000 李四的账户+1000 上诉二个步骤要么一起成功,要么一起失败. 不存在张三的钱扣了,李四 没收到转账。1.1 事物的特性(ACID)ACID是指数据库管理系统DBMS中事物所具有四个特性①:atomicity【原子性】 原子性表现为操作不能被分割,那么这二个操作 要么同时完成,要 么就全部不完成,若事务出错了,那么事务就会回滚, 好像什么都没有发生过②:原创 2022-04-04 14:09:38 · 907 阅读 · 0 评论 -
分布式流量防卫兵Sentinel
一、Sentinel的引入在我们日常生活中,经常会在淘宝、天猫、京东、拼多多等平台上参与商品的秒杀、抢购以及一些优惠活动,也会在节假日使用12306 手机APP抢火车票、高铁票,甚至有时候还要帮助同事、朋友为他们家小孩拉投票、刷票,这些场景都无一例外的会引起服务器流量的暴涨,导致网页无法显示、APP反应慢、功能无法正常运转,甚至会引起整个网站的崩溃。Sentinel为了解决上述这些问题,由此应运而生。它通过为秒杀、抢购、抢票、拉票等功能提供API接口层面的流量限制,让突然暴涨而来的用户访问受到统一的管控原创 2022-04-04 14:08:25 · 615 阅读 · 0 评论 -
@LoadBalanced注解的使用理解
在使用springcloud ribbon客户端负载均衡的时候,可以给RestTemplate bean 加一个@LoadBalanced注解,就能让这个RestTemplate在请求时拥有客户端负载均衡的能力: @Bean @LoadBalanced RestTemplate restTemplate() { return new RestTemplate(); }是不是很神奇?打开@LoadBalanced的注解源码,并没有什么特殊的东东package o转载 2022-03-30 17:26:37 · 1605 阅读 · 0 评论 -
微服务基本概念
CAP原则C:一致性( Consistency)节点1和节点2的数据是相同的A:可用性( Availability)P:分区容错性( Partition tolerance)节点1和节点2网络不通了,出现分区了对外依然要能提供服务,不能说分区了导致整个系统岩机无法对外提供服务。在满足P的前提下, client发一条数据给节点1因为分区产生这条数据暂时无法同步给节点2如果要保证整个分布式系统的数据一致性(C)肯定要栖牲掉可用性(A),也就是整个分布式系统对外暂时不可用,不然 client对节点1.原创 2022-03-30 16:15:02 · 2190 阅读 · 0 评论 -
Feign入门
一、Feign的引入1.1 什么是FeignFeign是Netflix开发的声明式、模板化的HTTP客户端,其灵感来自Retrofit、JAXRS2.0以及WebSocket。Feign 可帮助我们更加便捷、优雅地调用HTTP API。在Spring Cloud中,使用Feign非常简单——只需创建接口,并在接口上添加注解即可。Feign支持多种注解,例如Feign自带的注解或者JAXRS注解等。Spring Cloud对Feign进行了增强,使其支持Spring MVC注解,另外还整合了Rib原创 2022-03-28 22:04:56 · 1948 阅读 · 0 评论 -
负载均衡Ribbon入门
一、负载均衡的引入在微服务中,服务的调用很常见,比如有2个集群,A和B,如果A集群需要调用B集群的某个接口,但是B集群中有很多服务b,这时A集群就不知道调用哪个为了解决这个问题,大佬们引入了负载均衡器。负载均衡有2种类型一种是以Nginx为代表的服务端的负载均衡我们用户服务发送请求首先打到Ng上,然后Ng根据负载均衡算法进行选择一个服务调 用,而我们的Ng部署在服务器上的,所以Ng又称为服务端的负载均衡(具体调用哪个服务, 由Ng所了算)生活案例: 程序员张三 去盲人按摩, 前台的小姐姐接待了原创 2022-03-28 16:29:40 · 733 阅读 · 0 评论