分布式应用架构
文章平均质量分 94
流烟默
这个作者很懒,什么都没留下…
展开
-
分布式锁的最佳实践之MySQL
实现的复杂性或者难度角度:Zookeeper > redis > 数据库实际性能角度:redis > Zookeeper > 数据库可靠性角度:Zookeeper > redis = 数据库这三种方式都不是尽善尽美,我们可以根据实际业务情况选择最适合的方案:如果追求极致性能可以选择:reds方案如果追求可靠性可以选择:zk。原创 2024-07-23 17:35:51 · 368 阅读 · 0 评论 -
分布式锁的最佳实践之Redisson
本文接讲解Redisson在分布式锁的应用实践。Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。原创 2024-07-18 15:04:46 · 422 阅读 · 0 评论 -
从库存超卖问题分析锁和分布式锁的应用(二)
本文从一个经典的库存超卖问题分析说明常见锁的应用,假设库存资源存储在Redis里面。此时方法操作是先读后写,非原子性操作,是存在并发问题的。JVM本地锁的实现与优缺点在已经分析过了,这里不再赘述。原创 2024-07-15 16:02:44 · 258 阅读 · 0 评论 -
从库存超卖问题分析锁和分布式锁的应用(一)
本文从一个经典的库存超卖问题分析说明常见锁的应用。原创 2024-07-12 16:01:27 · 300 阅读 · 0 评论 -
分布式事务中的CAP和BASE理论详解
C(Consistency)强一致性、A(Availability)高可用性和P(Partitiontolerance)分区容错性。单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。满足一致性、分区容错性的系统,通常性能不是特别高。满足可用性、分区容错性的系统,通常可能对一致性要求低一些。......原创 2016-12-01 10:30:18 · 818 阅读 · 0 评论 -
MySQL单表膨胀优化之MyCat分库分表
MySQL的单表达到多少量级时性能会下降?宽表在千万量级,窄表要好一点在1200W左右。但是MySQL单表达到1500W时性能开始急剧下降!这里先抛出一道面试题:Q1:一亿的用户表,怎么做优化?Q2:两个实体,用户和订单,数据量都过亿要求:1.从用户角度快速查询订单2.从订单角度快速查用户怎么设计表?【1】常见数据库中间件分布式数据库中间件有TDDL、Sharding-JDBC...原创 2019-01-14 13:37:42 · 4399 阅读 · 3 评论 -
聊聊分布式高并发应用中的高可用性
面试题:高并发场景/接口被刷怎么办?【1】架构和细节首先参考上篇博文:聊聊高并发应用中秒杀场景的方案实现,其中限流,缓存等思想是一致的。这里需要注意的是,如果在现有集群环境下,负载压力仍然很大怎么办?观察上图最后一步—容器化技术。使用Docker+K8s(Kubernetes)构建Docker集群环境。当QPS超过阈值后,自动扩容。比如扩容两个虚拟机,将登录子系统从四节点扩容到6节点,然后...原创 2019-01-20 18:21:38 · 951 阅读 · 0 评论 -
分布式应用中的缓存方案总结
【1】本地缓存本地缓存即缓存和应用在同一个进程里,是基于JVM的缓存,应用生则生,应用死则亡。常见产品有Guava、Caffeine和Ehcache。三者对比如下:对比项GuavaCaffeineEhcache是否开源Y(Google)Y(apache)Y(Terracotta)级别轻量轻量重量级知名度Java开发者必备Spring5Hi...原创 2019-01-15 11:34:38 · 1583 阅读 · 1 评论 -
分布式应用中负载均衡技术和Session一致性详解
不仅包含负载均衡还包括应用交换、会话交换、状态监控、智能网络地址转换、通用持续性、响应错误处理、IPv6网关、高级路由、智能端口镜像、SSL加速、智能HTTP压缩、TCP优化、第7层速率整形、内容缓冲、内容转换、连接加速、高速缓存、Cookie加密、选择性内容加密、应用攻击过滤、拒绝服务(DoS)攻击和SYN Flood保护、防火墙过滤等功能。参考Tomcat官网:http://tomcat.apache.org/tomcat-9.0-doc/cluster-howto.html。原创 2019-01-16 15:12:28 · 543 阅读 · 0 评论 -
分布式架构中缓存应用的一些问题总结
当查询一个不存在的数据时,如果每次都去查询数据库,而数据库中确实没有该数据,这就会导致每次请求都直接打到数据库上,这种现象被称为缓存穿透。原创 2019-01-22 14:12:57 · 510 阅读 · 1 评论 -
认真学习分布式应用中的分布式锁
分布式锁是控制分布式系统之间同步访问共享资源的一种方式。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要通过一些互斥手段来防止彼此之间的干扰,以保证一致性,在这种情况下,就需要使用分布式锁了。简而言之,分布式锁就是指在分布式的部署环境下,通过锁机制来让多客户端互斥的对共享资源进行访问。分布式锁要满足哪些要求呢?1、互斥性–在分布式系统环境下,一.........原创 2019-01-27 22:37:18 · 2922 阅读 · 0 评论 -
分布式锁的最佳实践之Zookeeper
实现分布式锁目前有三种流行方案,分别为基于数据库、Redis、Zookeeper的方案。这里主要介绍基于zk怎么实现分布式锁。由于zookeeper获取链接是一个耗时过程,这里可以在项目启动时,初始化链接,并且只初始化一次。原创 2019-01-23 11:21:19 · 2201 阅读 · 1 评论 -
项目性能参数和概念QPS&TPS
并发量、吞吐量、并发用户数据、pv、 uv、平均停留时长、跳出率、 平均响应时间、QPS、RPS、TPS。。。① 并发量即系统同时处理事务的能力,通常我们用QPS(query per second 每秒查询)来表示,也有地方用RPS(request per second 每秒请求),TPS(吞吐量,准确来说应该是吞吐率)来表示.但其实我们拿到的qps/tps/rps等大多都是1s内的处理能力...原创 2019-01-08 16:51:51 · 1435 阅读 · 0 评论 -
聊聊高并发应用中电商秒杀场景的方案实现
秒杀场景需要考虑这些关键词:高并发、响应时效性、流程削峰、恶意流量攻击、秒杀原子操作与数据安全、服务高可用(应对雪崩)等。【1】秒杀业务场景分析① 秒杀/抢购业务场景比如商品秒杀、商品抢购、群红包、抢优惠券、抽奖等等。② 秒杀/抢购业务特点秒杀商品价格低廉、抢购商品很好|抢手、---------------------原创 2019-01-18 19:49:08 · 3868 阅读 · 0 评论 -
分布式的微服务架构中的核心理念
【1】微服务是什么提到微服务,就没法不提到这位“大神”——马丁·福勒,他没有直接给微服务下一个精准的定义,而是给出了微服务特点的描述:根据业务模块划分服务种类。 每个服务可以独立部署并且互相隔离。 通过轻量的 API 调用服务。 服务需要保证良好的高可用性。就目前而言,对于微服务业界并没有一个统一的、标准的定义。但通常而言,微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用...原创 2018-07-15 11:14:27 · 3510 阅读 · 0 评论 -
SpringBoot整合Dubbo和Zookeeper升级版
分布式架构与Dubbo基础入门与实践一文中初步介绍了分布式架构并使用xml配置方式进行了Dubbo和Zookeeper实践。分布式应用简单入门及SpringBoot整合Dubbo+Zookeeper一文中使用SpringBoot整合了Dubbo和Zookeeper但是并未抽取公共API项目。本文是上述两个项目的升级版。【1】创建SpringBoot项目① 使用Spring starter pp...原创 2018-11-09 17:08:32 · 2972 阅读 · 2 评论 -
分布式架构与Dubbo基础入门与实践
【1】分布式系统① 什么是分布式系统《分布式系统原理与范型》定义:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”。分布式系统(distributed system)是建立在网络之上的软件系统。随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。② 架构发展演...原创 2018-11-07 14:43:02 · 786 阅读 · 1 评论 -
Dubbo - 配置示例使用详解
查看Dubbo完整配置示例,参考官方文档。【1】启动时检查Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认 check=“true”。可以通过 check=“false” 关闭检查,比如,测试时,有些服务不关心,或者出现了循环依赖,必须有一方先启动。另外,如果你的 Spring 容器是懒加载的,或者通过 ...原创 2018-11-13 14:19:57 · 1217 阅读 · 0 评论 -
SpringBoot与Dubbo整合的几种方式
SpringBoot与Dubbo整合有几种方式,通常需要根据项目实际情况来进行选择。SpringBoot与dubbo整合的三种方式:1)导入dubbo-starter,在application.properties配置属性,使用@Service【暴露服务】使用@Reference【引用服务】,使用@EnableDubbo注解。2)保留dubbo xml配置文件,导入dubbo-starter...原创 2018-11-13 18:26:38 · 17915 阅读 · 7 评论 -
Dubbo中高可用的那些概念
【1】Zookeeper宕机与dubbo直连① zookeeper注册中心宕机,还可以消费dubbo暴露的服务注意,这里是注册中心全部宕机(比如做了Zookeeper集群配置)。那么消费者还是可以消费提供者暴露的服务的。因为消费者消费服务,其实就是从注册中心拿到服务地址(URL),这个URL消费者是有本地缓存的。② 不使用注册中心,能否消费服务?当然也是可以的!使用Dubbo直连— @Re...原创 2018-11-14 13:05:41 · 1204 阅读 · 0 评论 -
Dubbo的原理分析
【1】RPC原理首先看个图:一次完整的RPC调用流程(同步调用,异步另说)如下:1)服务消费方(client)调用以本地调用方式调用服务;2)client stub(可以理解为代理)接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体;3)client stub找到服务地址,并将消息发送到服务端;4)server stub收到消息后进行解码;5)server stub根据解...原创 2018-11-14 17:03:10 · 625 阅读 · 0 评论 -
认真学习分布式应用的分布式事务之2PC/3PC
[认真学习分布式应用的分布式事务2PC/3PC](https://blog.csdn.net/J080624/article/details/86538135)[聊聊分布式应用的分布式事务TCC](https://blog.csdn.net/J080624/article/details/86542491)[聊聊分布式应用的分布式事务之最大努力通知型事务](https://blog.csdn.net/J080624/article/details/86542689)[聊聊分布式应用的分布式事务之消息最转载 2019-01-18 12:58:58 · 1433 阅读 · 0 评论 -
认真学习分布式应用的分布式事务TCC
TCC是try-confirm-cancel的单词首字母缩写,是一个类2PC的柔性事务解决方案,由支付宝提出后得到广泛的实践。补偿事务(TCC)有三个阶段:Try 阶段,对业务系统做检测和资源预留Confirm 阶段对业务系统做确认提交,默认:Try执行成功,Confirm一定成功Cancel 阶段在业务执行失败,需要回滚的情况下执行的业务取消,预留资源释放。首先我们看它的一个原理图.........转载 2019-01-18 16:34:17 · 932 阅读 · 0 评论 -
聊聊分布式应用的分布式事务之最大努力通知型事务
TCC适用于公司内部对一致性、实时性要求较高的业务场景,而本文我们讲解的“最大努力通知型事务”是为解决跨网络、跨服务之间的柔性事务的另一种解决方案。首先看一下最大努力通知型的流程图,如下图:...转载 2019-01-18 16:42:08 · 657 阅读 · 0 评论 -
聊聊分布式应用的分布式事务之消息最终一致性事务
聊聊分布式应用的分布式事务2PC/3PC聊聊分布式应用的分布式事务TCC聊聊分布式应用的分布式事务之最大努力通知型事务本文我们将学习到另一种常见的柔性事务解决方案:消息一致性事务方案。对于TCC型事务,跨系统的调用均是基于服务间的直接调用,即很大程度上是同步调用。基于TCC方案能够保证主子事务同时成功,同时失败。但实际开发中,由于多方面的考虑,我们会将服务拆分为异步方式,一般是基于MQ进......转载 2019-01-18 17:32:54 · 857 阅读 · 0 评论 -
分布式应用简单入门及SpringBoot整合Dubbo+Zookeeper
在分布式系统中,国内常用zookeeper+dubbo组合,而Spring Boot推荐使用全栈的Spring,Spring Boot+Spring Cloud。一个有意思的示例图:单一应用架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。垂直应用架构当访问量逐渐增大,单一应用增...原创 2018-07-11 10:20:44 · 3492 阅读 · 1 评论