分布式应用架构
文章平均质量分 97
流烟默
这个作者很懒,什么都没留下…
展开
-
分布式事务中的CAP和BASE理论详解
C(Consistency)强一致性、A(Availability)高可用性和P(Partitiontolerance)分区容错性。单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。满足一致性、分区容错性的系统,通常性能不是特别高。满足可用性、分区容错性的系统,通常可能对一致性要求低一些。......原创 2016-12-01 10:30:18 · 776 阅读 · 0 评论 -
聊聊分布式应用的分布式事务之消息最终一致性事务
聊聊分布式应用的分布式事务2PC/3PC聊聊分布式应用的分布式事务TCC聊聊分布式应用的分布式事务之最大努力通知型事务本文我们将学习到另一种常见的柔性事务解决方案:消息一致性事务方案。对于TCC型事务,跨系统的调用均是基于服务间的直接调用,即很大程度上是同步调用。基于TCC方案能够保证主子事务同时成功,同时失败。但实际开发中,由于多方面的考虑,我们会将服务拆分为异步方式,一般是基于MQ进......转载 2019-01-18 17:32:54 · 840 阅读 · 0 评论 -
聊聊高并发应用中电商秒杀场景的方案实现
秒杀场景需要考虑这些关键词:高并发、响应时效性、流程削峰、恶意流量攻击、秒杀原子操作与数据安全、服务高可用(应对雪崩)等。【1】秒杀业务场景分析① 秒杀/抢购业务场景比如商品秒杀、商品抢购、群红包、抢优惠券、抽奖等等。② 秒杀/抢购业务特点秒杀商品价格低廉、抢购商品很好|抢手、---------------------原创 2019-01-18 19:49:08 · 3818 阅读 · 0 评论 -
项目性能参数和概念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 · 1387 阅读 · 0 评论 -
MySQL单表膨胀优化之MyCat分库分表
MySQL的单表达到多少量级时性能会下降?宽表在千万量级,窄表要好一点在1200W左右。但是MySQL单表达到1500W时性能开始急剧下降!这里先抛出一道面试题:Q1:一亿的用户表,怎么做优化?Q2:两个实体,用户和订单,数据量都过亿要求:1.从用户角度快速查询订单2.从订单角度快速查用户怎么设计表?【1】常见数据库中间件分布式数据库中间件有TDDL、Sharding-JDBC...原创 2019-01-14 13:37:42 · 4341 阅读 · 3 评论 -
聊聊分布式高并发应用中的高可用性
面试题:高并发场景/接口被刷怎么办?【1】架构和细节首先参考上篇博文:聊聊高并发应用中秒杀场景的方案实现,其中限流,缓存等思想是一致的。这里需要注意的是,如果在现有集群环境下,负载压力仍然很大怎么办?观察上图最后一步—容器化技术。使用Docker+K8s(Kubernetes)构建Docker集群环境。当QPS超过阈值后,自动扩容。比如扩容两个虚拟机,将登录子系统从四节点扩容到6节点,然后...原创 2019-01-20 18:21:38 · 933 阅读 · 0 评论 -
聊聊分布式应用中的缓存方案(一)
【1】本地缓存本地缓存即缓存和应用在同一个进程里,是基于JVM的缓存,应用生则生,应用死则亡。常见产品有Guava、Caffeine和Ehcache。三者对比如下:对比项GuavaCaffeineEhcache是否开源Y(Google)Y(apache)Y(Terracotta)级别轻量轻量重量级知名度Java开发者必备Spring5Hi...原创 2019-01-15 11:34:38 · 1534 阅读 · 0 评论 -
聊聊分布式应用中负载均衡技术和Session一致性
【1】负载均衡技术F5HAProxyLVSNginx/Apache硬件设备,功能十分强大工作在第四/七层 Session保持 并发处理极佳 负载均衡算法多工作第四层 工作稳定 应用范围广 配置简单 不能做动静分离安装配置简单 占有内存少 并发处理能力强3W+ 优化下10W+ 功能强大 动静分离 反向代理 Lua 工作在第七层(支持的应用少) 不能保持session...原创 2019-01-16 15:12:28 · 514 阅读 · 0 评论 -
聊聊分布式应用中的缓存方案(二)
本篇是聊聊分布式应用中的缓存方案(一)的姊妹篇。【1】什么是静态数据这里静态数据是指不经常发生变化或者变化频率比较低的数据,比如车型库、用户基本信息、车辆基本信息等。车型库这种可能每个月会更新一次,用户和车辆基本信息的变化来源于用户注册、修改,这个操作的频率相对也是比较低的。另外这类数据的另一个特点是要求准确率和实时性都比较高,不能出现丢失、错误,以及过长时间的陈旧读。具体是不是应该归类为...转载 2019-01-22 14:12:57 · 490 阅读 · 1 评论 -
认真学习分布式应用中的分布式锁
分布式锁是控制分布式系统之间同步访问共享资源的一种方式。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要通过一些互斥手段来防止彼此之间的干扰,以保证一致性,在这种情况下,就需要使用分布式锁了。简而言之,分布式锁就是指在分布式的部署环境下,通过锁机制来让多客户端互斥的对共享资源进行访问。分布式锁要满足哪些要求呢?1、互斥性–在分布式系统环境下,一.........原创 2019-01-27 22:37:18 · 2817 阅读 · 0 评论 -
聊聊分布式高并发应用中请求幂等处理
【1】幂等概念和场景幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。在编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“getUsername()和setTrue()”函数就...转载 2019-01-23 11:21:19 · 2145 阅读 · 0 评论 -
聊聊分布式应用的分布式事务之最大努力通知型事务
TCC适用于公司内部对一致性、实时性要求较高的业务场景,而本文我们讲解的“最大努力通知型事务”是为解决跨网络、跨服务之间的柔性事务的另一种解决方案。首先看一下最大努力通知型的流程图,如下图:...转载 2019-01-18 16:42:08 · 627 阅读 · 0 评论 -
认真学习分布式应用的分布式事务TCC
TCC是try-confirm-cancel的单词首字母缩写,是一个类2PC的柔性事务解决方案,由支付宝提出后得到广泛的实践。补偿事务(TCC)有三个阶段:Try 阶段,对业务系统做检测和资源预留Confirm 阶段对业务系统做确认提交,默认:Try执行成功,Confirm一定成功Cancel 阶段在业务执行失败,需要回滚的情况下执行的业务取消,预留资源释放。首先我们看它的一个原理图.........转载 2019-01-18 16:34:17 · 903 阅读 · 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 · 1365 阅读 · 0 评论 -
SpringBoot整合SpringCloud基础实践入门
【1】什么是Spring CloudSpring Cloud是一个分布式的整体解决方案。Spring Cloud 为开发者提供了在分布式系统(配置管理,服务发现,熔断,路由,微代理,控制总线,一次性token,全局琐,leader选举,分布式session,集群状态)中快速构建的工具,使用Spring Cloud的开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。Spr...原创 2018-07-11 17:27:28 · 6976 阅读 · 7 评论 -
SpringCloud - Eureka服务注册与发现核心概念
【1】是什么SpringCloud Eureka是SpringCloud Netflix服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务治理功能。Netflix在设计Eureka时遵守的是AP原则。...原创 2018-07-18 16:34:20 · 1334 阅读 · 0 评论 -
分布式的微服务架构中的核心理念
【1】微服务是什么提到微服务,就没法不提到这位“大神”——马丁·福勒,他没有直接给微服务下一个精准的定义,而是给出了微服务特点的描述:根据业务模块划分服务种类。 每个服务可以独立部署并且互相隔离。 通过轻量的 API 调用服务。 服务需要保证良好的高可用性。就目前而言,对于微服务业界并没有一个统一的、标准的定义。但通常而言,微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用...原创 2018-07-15 11:14:27 · 3465 阅读 · 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 · 2932 阅读 · 2 评论 -
分布式架构与Dubbo基础入门与实践
【1】分布式系统① 什么是分布式系统《分布式系统原理与范型》定义:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”。分布式系统(distributed system)是建立在网络之上的软件系统。随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。② 架构发展演...原创 2018-11-07 14:43:02 · 767 阅读 · 1 评论 -
Dubbo - 配置示例使用详解
查看Dubbo完整配置示例,参考官方文档。【1】启动时检查Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认 check=“true”。可以通过 check=“false” 关闭检查,比如,测试时,有些服务不关心,或者出现了循环依赖,必须有一方先启动。另外,如果你的 Spring 容器是懒加载的,或者通过 ...原创 2018-11-13 14:19:57 · 1183 阅读 · 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 · 17819 阅读 · 5 评论 -
Dubbo中高可用的那些概念
【1】Zookeeper宕机与dubbo直连① zookeeper注册中心宕机,还可以消费dubbo暴露的服务注意,这里是注册中心全部宕机(比如做了Zookeeper集群配置)。那么消费者还是可以消费提供者暴露的服务的。因为消费者消费服务,其实就是从注册中心拿到服务地址(URL),这个URL消费者是有本地缓存的。② 不使用注册中心,能否消费服务?当然也是可以的!使用Dubbo直连— @Re...原创 2018-11-14 13:05:41 · 1188 阅读 · 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 · 613 阅读 · 0 评论 -
聊聊分布式应用中的消息中间件
消息队列已经逐渐成为企业应用系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能。当前使用较多的 消息队列 有 RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMQ 等,而部分 数据库 如 Redis、MySQL 以及 phxsql 也可实现消息队列的功能。【1】消息队列是什么消息队列 是指利用 高效可靠 的 消息传递...转载 2019-01-18 12:41:44 · 879 阅读 · 0 评论 -
分布式应用简单入门及SpringBoot整合Dubbo+Zookeeper
在分布式系统中,国内常用zookeeper+dubbo组合,而Spring Boot推荐使用全栈的Spring,Spring Boot+Spring Cloud。一个有意思的示例图:单一应用架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。垂直应用架构当访问量逐渐增大,单一应用增...原创 2018-07-11 10:20:44 · 3457 阅读 · 1 评论