互联网分布式架构设计
文章平均质量分 93
持续更新讲解基于高并发、高可用、高性能的互联网架构,使之具备安全、性能、伸缩性。扩展性、可用性。
Xd聊架构
CSDN博客专家,Java领域优质创作者,任大厂架构师,专注Java、云原生、大数据领域
展开
-
【Redis系列】缓存击穿、穿透、雪崩解决方案详解
众所周知,计算机的瓶颈之一就是IO,为了解决内存与磁盘速度不匹配的问题,产生了缓存,将一些热点数据放在内存中,随用随取,降低连接到数据库的请求链接,避免数据库挂掉。需要注意的是,无论是击穿还是后面谈到的穿透与雪崩,都是在高并发前提下,当缓存中某一个热点key失效。缓存击穿就是在处于集中式高并发访问的情况下,当某个热点 key 在失效的瞬间,大量的请求在缓存中获取不到。瞬间击穿了缓存,所有请求直接打到数据库,就像是在一道屏障上击穿了一个洞。......原创 2022-08-29 13:59:39 · 5629 阅读 · 2 评论 -
【Redis系列】分布式锁实现方案详解(SETNX、Lua、Redisson、Redlock等)
日常开发中,秒杀下单、抢红包等等业务场景,都需要用到分布式锁。根据前面的文章分布式锁-三种实现方式简述我们了解到,分布式锁可以采用Redis、Zookeeper、数据库等方式实现(还没有了解的同学,可以优先看一下前面的文章),下面我们详细讲解一下Redis的实现。.........原创 2022-08-25 15:04:40 · 5891 阅读 · 4 评论 -
分布式事务专题-基本理论(CAP、BASE)
基于微服务架构设计功能,总是绕不开分布式事务的问题,前面已经讲解了分布式事务的基本概念,这一篇文章,主要介绍一下分布式事务基本理论CAP和BASE理论,有了这些理论才能结合业务选择合适的方案。BASE 是 Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent (最终一致性)三个短语的缩写。......原创 2022-08-16 16:39:28 · 5567 阅读 · 17 评论 -
分布式事务专题-基本概念
事务想必大家并不陌生,至于什么是 ACID,也是老生常谈了。不过小编为了保证文章的完整性确保所有人都听得懂,我还是得先说说事务的基本概念,接下来以专题的形式介绍分布式事务的理论和解决方案什么是事务?举个生活中的例子:你去小卖铺买东西,“一手交钱,一手交货”就是一个事务的例子,交钱和交货必须全部成功,事务才算成功,任一个活动失败,事务将撤销所有已成功的活动。事务可以看做是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败。......原创 2022-08-16 13:42:54 · 5549 阅读 · 3 评论 -
微服务数据库分库设计解决方案(跨库关联查询、分布式事务处理)
现在互联网应用已经普及,数据量不断增大。对BAT等互联网业务来说,传统单实例数据库很难支撑其性能和存储的要求,所以数据库拆分势在必行。同时数据库分库后,又面临跨库关联查询、分布式事务等问题,如何解决?...原创 2022-08-05 15:48:56 · 9478 阅读 · 13 评论 -
SpringCloud微服务应用-config配置中心(介绍、搭建、动态刷新、测试)
在系统架构中,和安全、日志、监控等非功能需求同样,配置管理也是一种非功能需求。配置中心是整个微服务基础架构体系中的一个组件,如下图,它的功能看上去并不起眼,无非就是简单配置的管理和存取,但它是整个微服务架构中不可或缺的一环。另外,配置中心若是真得用好了,它还能推进技术组织持续交付和DevOps转型。配置中心实际上就是分布式系统中集中统一管理线上应用程序配置项的管理平台。在微服务架构中,当系统从一个单体应用,被拆分成分布式系统上一个个服务节点后,配置文件也必须跟着迁移(分割),这样配置就分散了。不仅如此,分原创 2022-07-08 13:24:22 · 7084 阅读 · 5 评论 -
Springboot集成Redis详细教程(缓存注解使用@Cacheable,@CacheEvict,@CachePut)
文章目录一、SpringBoot集成Redis1.Pom依赖2.Spring yml文件配置(以Cluster模式为例)3.Redis类配置二、@Cacheable注解使用1.Cache和CacheManager接口说明2.@Cacheable使用2.1.代码样例2.2.@Cacheable常用属性参数2.3.key spEL表达式3.@CacheEvict使用4.@CachePut使用5.@Caching使用结尾一、SpringBoot集成Redis Jedis和Lettuce是Java操作Redi原创 2022-05-01 00:15:00 · 12072 阅读 · 15 评论 -
RocketMQ详细安装教程(RocketMQ安装、RocketMQ修改默认端口、console管理后台安装)
文章目录前言一、MQ安装2.修改默认端口二、使用步骤结尾前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、MQ安装2.修改默认端口修改namesrv默认端口(默认9876)在rocketmq的conf目录下添加namesrv.properties文件,文件中添加端口配置listenPort=8876使用配置信息后台启原创 2022-04-19 17:05:18 · 37029 阅读 · 14 评论 -
DDD领域驱动设计:CQRS架构模式
文章目录前言一、 CQRS介绍1.什么是 CQRS2.为何要使用CQRS二、CQRS 架构1.单数据库 CQRS2.双数据库 CQRS3.事件源 (Event source) CQRS结尾前言DDD 作为一种系统分析的方法论,最大的问题是如何在项目中实践。而在实践过程中必然会面临许多的问题,「模式」是系统架构领域中一种常见的手段,能够帮助开发人员与架构师在遭遇某种较为棘手,或是陌生的问题时,参考已有的成熟经验与解决方案,从而优雅的解决自己项目中的问题。本篇介绍的是CQRS,中文名为命令查询职责分离。原创 2021-11-04 16:56:51 · 12195 阅读 · 11 评论 -
DDD领域驱动设计:四层架构应用
文章目录前言一、DDD四层与传统三层区别二、四层架构详解1.分层作用2.领域对象三、编码实践1.代码结构四、常见问题1.领域模型(充血模型)注入问题结尾前言分层架构是运用最为广泛的一种架构模式,几乎每个软件系统都需要通过分层来隔离不同的关注点,以应对不同需求的变化,并且使得这种变化可以独立进行。 对于分层架构来说,层次越往上其抽象层次就越面向业务和用户,层次越往下其抽象层次就越面向技术和设备。一、DDD四层与传统三层区别我们常用的三层架构模型划分为表现层,业务逻辑层,数据访问层等,在DDD分层结构原创 2021-12-17 10:28:43 · 15629 阅读 · 7 评论 -
DDD领域驱动设计:贫血模型和充血模型详解
文章目录前言一、贫血模型1.介绍2.优点3.缺点4.代码样例二、充血模型1.介绍2.优点3.缺点4.代码样例三、对比分析1.为什么基于贫血模型的传统开发模式如此受欢迎?2.什么项目应该考虑使用基于充血模型的 DDD 开发模式?结尾前言这两个概念是早些时候Martin Fowler总结出来的两种常见模型设计类型,没有说谁好谁不好,为不同的模型类别选择合适的场景是设计者的工作。一、贫血模型1.介绍贫血模型是指领域对象里只有get和set方法(POJO),所有的业务逻辑都不包含在内而是放在Busin原创 2021-10-27 17:39:03 · 15602 阅读 · 5 评论 -
RestFul资源架构设计详解
要理解RESTful架构,需要理解Representational State Transfer这个词组到底是什么意思,它的每一个词都有些什么涵义。下面我们结合REST原则,围绕资源展开讨论,从资源的定义、获取、表述、关联、状态变迁等角度,列举一些关键概念并加以解释。资源与URI统一资源接口资源的表述资源的链接状态的转移原创 2021-12-11 17:02:47 · 11302 阅读 · 9 评论 -
分布式锁-三种实现方式简述
目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项。所以,很多系统在设计之初就要对这三者做出取舍。在互联网领域的绝大多数的场景中,都需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证“最终一致性”,只要这个最终时间是在用户可以接受的范围内即可。原创 2021-07-19 20:23:33 · 10925 阅读 · 27 评论 -
【Redis系列】持久化机制详解(RDB和AOF)
我们已经知道对于一个企业级的redis架构来说,持久化是不可减少的,持久化主要是做灾难恢复,数据恢复,也可以归类到高可用的一个环节里面,比如你redis整个挂了,然后redis就不可用了,你要做的事情是让redis变得可用,尽快变得可用,重启redis,尽快让它对外提供服务。.........原创 2021-07-17 12:45:59 · 11526 阅读 · 21 评论