文章列表 | 月光中的污点

文章列表

分类: 后端

当前位置: 首页 / 分类 / 后端

Spring Cloud Alibaba 系列之 Sentinel(服务容错)

在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用,但是由于网络原因或者自身的原因,服务并不能保证服务的100%可用,如果单个服务出现问题,调用这个服务就会出现网络延迟,此时若有大量的网络涌入,会形成任务堆积,最终导致服务瘫痪。 由于服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的 “雪崩效应”,如下图:

带你了解 MyBatis 插件设计演化过程

之前写过一篇 《Mybatis 插件实现动态设置参数》 文章,介绍了 Mybatis 插件的扩展和使用。笔者在空闲时间梳理了一下 MyBatis 插件的工作原理,在此记录和分享其插件功能代码的演化过程。 我们简略 MyBatis 执行 SQL 的步骤,下边的原始代码是依靠 Executor 执行 SQL 语句。 假设,我们需要 Executor 在执行 SQL 语句的前后打印出当前时间戳(方法增强),那该如何操作?

ShardingSphere-JDBC 入门教程

上篇介绍了数据库 分库分表 的基本概念以及演化过程,同时分库分表带来的繁琐问题。本篇就上篇的问题,来介绍和讲解这些问题的解决方案。 本篇的主角为 ShardingSphere-JDBC。 Apache ShardingSphere 是一套开源的分布式数据库解决方案组成的生态圈,它由 JDBC、Proxy 和 Sidecar(规划中)这 3 款既能够独立部署,又支持混合部署配合使用的产品组成。 它们均提供标准化的数据水平扩展、分布式事务和分布式治理等功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。

Spring Cloud Alibaba 系列之 Ribbon(补充)

Ribbon 是基于 Netflix Ribbon 实现的一套客户端负载均衡器,它本身不属于 Spring Cloud Alibaba 提供的组件,而是 Spring Cloud 将其封装成 starter 供微服务使用。另外,笔者在之前的 文章 中也做过 Ribbon 相关的知识介绍,故本篇章只作为对 Ribbon 内容的补充。 Spring Cloud 底层对 Ribbon 做了二次封装,可以让我们使用 RestTemplate 的服务请求,同时搭配 @LoadBalanced 注解使用,从而实现客户端负载均衡的服务调用。 RestTemplate 提供两种方法 getForObject

Spring Cloud Alibaba 系列之 Nacos 篇(配置中心)

上一篇 Spring Cloud Alibaba 系列之 Nacos 篇(服务注册与发现) 介绍了 Nacos 的服务注册与发现,本篇接续介绍其另一个功能--配置中心。 Nacos 提供用于存储配置和其他元数据功能,为分布式系统中的外部化配置提供服务器端和客户端支持,使用 Spring Cloud Alibaba Nacos Config 就可以在 Nacos Server 集中管理 Spring Cloud 应用的外部属性配置。 不使用配置中心之前,我们在管理项目配置会遇到如下问题:

Spring Cloud Alibaba 系列之 Nacos 篇(服务注册与发现)

Nacos 是阿里巴巴于2018年7月推出来的一个开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 提供了一组简单易用的特性集,帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。 其关键特性如下:

Hexo Boot 博客系统默认主题美化教程

Hexo Boot 博客系统断断续续更新了好几个版本,除了新增后台管理系统的功能外,还对默认主题 UI 进行调整。但众口难调,并不是每次 UI 的修改都符合每个人的审美。故默认主题 UI 此后不再随后端代码进行同步美化和修改,本篇将介绍默认主题美化步骤。 要美化主题,首先得知道主题目录结构,这样才能针对性对代码进行修改和优化。 主题文件夹位于项目中的resources/templates/theme目录下:

XXL-JOB 基础教程

随着公司的产品项目活动的增加,活动进行过程中都需要用到大量定时器。为了能方便快捷的控制定时器的启动、执行和关闭,我们弃用了 Spring Boot 中自带的 @Scheduled 注解,采用开发、配置和操作更为灵活的 XXL-JOB。 XXL-JOB 是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 其特性非常丰富:

RabbitMQ 实现延迟队列

最近开发一个活动功能,需要在活动结束后给榜单 Top10 用户发放奖励。由于活动的榜单是通过 RabbitMQ 进行异步统计分值排名的,因此在活动结束时队列中可能还存在消息未消费完全,排名不准确,此时发放活动奖励必然会出错。 那么,如果解决这个问题呢? 与产品经理协商,允许延迟 10 分钟发放奖励。目前有 2 个方案: 因此,最终选定 RabbitMQ 的延迟队列实现方案。但是,RabbitMQ 没有直接提供延迟队列我们该如何实现呢?请继续阅读下文。

浅析 ThreadLocal

根据 Java 官方文档的描述,我们可知 ThreadLocal 类用于提供线程内部的局部变量,其在多线程环境下能保证各个线程内部变量的隔离性。 换言之,ThreadLocal 提供线程内的局部变量,不同线程之间不会相互干扰,该变量作用范围贯穿线程的生命周期,减少同一线程内多个方法或组件之间一些公共变量传递的复杂度。 需求:用 3 名画家在一个画布上各自绘制一种颜色,并打印出其绘制的颜色。