自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(204)
  • 收藏
  • 关注

原创 SpringCloud alibaba实战系列文章汇总

个人感觉这是全网比较齐全,写的比较好的SpringCloud alibaba系列教程了,推荐给大家!SpringCloud Alibaba微服务实战一 - 基础环境准备SpringCloud Alibaba微服务实战二 - 服务注册SpringCloud Alibaba微服务实战三 - 服务调用SpringCloud Alibaba微服务实战四 - 版本管理SpringCloud Alibaba微服务实战五 - 限流熔断SpringCloud Alibaba微服务实战六 - 配置隔离Sprin

2021-05-20 09:13:50 2952 14

原创 微服务中如何保证接口的安全性?[基于DDD和微服务的开发实战]

通常来说,要将暴露在外网的 API 接口视为安全接口,需要实现防篡改和防重放的功能。由于 HTTP 是一种无状态协议,服务端无法确定客户端发送的请求是否合法,也不了解请求中的参数是否正确。如果非法用户通过抓包获取接口参数并修改 user_id 或 amount 的值,就能为任意账户添加余额。防重放也叫防复用。简单来说就是我获取到这个请求的信息之后什么也不改,,直接拿着接口的参数去重复请求这个充值的接口。此时我的请求是合法的, 因为所有参数都是跟合法请求一模一样的。

2023-12-13 22:01:14 67

原创 接手了一个外包开发的项目,我感觉我的头快要裂开了~

网络上涌现着众多微服务开源脚手架,它们吸引用户的方式是将各种功能一股脑地集成进去。然而,它们往往只是告诉你“如何集成”却忽略了“为什么要集成”。尽管这些开源项目能够在学习微服务方面事半功倍,但在实际微服务项目中,我们不能盲目照搬,而应该根据项目的实际情况来有选择地裁剪或扩展功能。这样,我们才能更好地应对项目的需求,避免陷入不必要的复杂性,从而更加成功地实施微服务架构。最后,这个开源项目你们认识吗?

2023-11-29 09:00:38 308 2

原创 这款高性能分布式ID生成器,现在是你的了~

在软件开发过程中,我们经常会遇到需要生成全局唯一流水号的场景,例如各种流水号和分库分表的分布式主键ID。特别是在使用MySQL数据库时,除了要求流水号具有“全局唯一”性外,还需要具备“递增趋势”,以减少MySQL的数据页分裂,从而降低数据库IO压力并提升服务器性能。因此,在项目中通常需要引入一种算法,能够生成满足“全局唯一”、“递增趋势”和“高性能”要求的数据。关于全局分布式ID的生成,网上有很多相关文章。

2023-11-29 08:54:06 282

原创 SpringBoot中如何优雅的统一全局返回格式与处理系统异常?

大家好,我是飘渺! 今天带来DDD系列的第七篇,欢迎持续关注!在领域驱动设计(DDD)中,接口层主要负责处理与外部系统的交互,包括接收用户或外部系统的请求,调用应用层服务处理请求,以及将处理结果返回给请求方。我发现一些代码中,接口的返回值类型众多,有的直接返回数据传输对象(DTO),甚至直接返回数据对象(DO),还有的返回Result对象。在DailyMart项目中,为了简化客户端的处理流程,我们...

2023-06-27 08:33:01 594

原创 设计模式的综合妙用 - 系统如何支持多种登录方式?

欢迎回来,我是飘渺。今天继续更新DDD&微服务的系列文章。1. 理解DDD中的领域模型职责在我们开始今天的主题之前,让我们先回答一些读者的疑问。在上一篇文章 [[DailyMart05:通过用户注册呈现一个完整的DDD开发流程]] 发布以后,我收到不少粉丝的留言和私信。大家主要对我在文章中将一些用户行为放到应用层而非领域层的做法感到疑惑,他们的主要疑问是:“在DDD中,领域模型是充血模型...

2023-06-21 08:32:34 351

原创 DailyMart05 手把手教你使用DDD实现的用户注册流程!

欢迎回来,我是飘渺。今天继续更新DDD&微服务的系列文章。在前面的文章中,我们深入探讨了DDD的核心概念。我理解,对于初次接触这些概念的你来说,可能难以一次性完全记住。但别担心,学习DDD并不仅仅是理论的理解,更重要的是将这些理论应用到实践中,理解其设计原则和实施方法。就如同编程界的一句流行格言所说:“Don't talk, Show me the Code”。今天,我们将以实现用户注册流...

2023-06-14 08:32:50 525

原创 DailyMart04 新项目,不妨采用这种架构分层,很优雅!

大家好,我是飘渺。今天继续更新DDD&微服务的系列文章。在专栏开篇提到过DDD(Domain-Driven Design,领域驱动设计)学习起来较为复杂,一方面因为其自身涉及的概念颇多,另一方面,我们往往缺乏实战经验和明确的代码模型指导。今天,我们将专注于DDD的分层架构和实体模型,期望为大家落地DDD提供一些有益的参考。首先,让我们回顾一下熟悉的MVC三层架构。1. MVC 架构在传统应...

2023-06-06 08:46:24 397

原创 DailyMart03:如何基于DDD设计商城的领域模型?

大家好,我是飘渺。既然有人催更那今天咱们就继续更新DDD&微服务系列!在面向对象开发中,所有事物都可以看作是对象。然而,在日常开发中,我们通常从数据出发来设计对象的表现形式,这种做法侧重于数据属性的定义,而忽略了领域逻辑的处理过程。虽然这种做法很常见,但并不是DDD推荐的开发模式。在DDD中,我们关注的是领域数据对象,而非仅仅是数据本身。领域模型对象在本质上不同于数据,它包含了一系列的标识...

2023-05-30 08:32:19 428

原创 DailyMart02:DDD领域分解与微服务划分

大家好,今天咱们继续更新DDD&微服务系列!DailyMart是一个简单的购物商城,主要销售书籍,包括实体书和电子书。本文将使用领域驱动设计(DDD)对DailyMart的业务进行分析与优化,以提高系统的内聚性和降低耦合度。1. DailyMart核心业务流程DailyMart的核心业务流程如下:用户在DailyMart上注册并获得初始积分。购物时可获得积分奖励,1000积分可抵扣10元。...

2023-05-24 08:32:20 607

原创 Kuberntes云原生实战10 Kubernetes四大核心组件介绍

大家好,我是飘渺,今天咱们继续更新系列,欢迎持续关注。Kubernetes是很复杂的,对于我们这些应用开发者来说,开始时需要先抓住关键对象。一旦掌握了一些的概念,我们也就差不多可以高效的使用Kubernetes了。Kubernetes定义了许多类型的对象,从开发人员的角度来看,最重要、使用最频繁的组件有四个,分别是Pod、Deployment、Service、ConfigMap。

2023-05-23 21:29:26 576

原创 Kuberntes云原生实战11 部署一个Deployment

大家好,从今天开始我们将正式部署实际应用。上篇文章提到Kubenetes中有四大核心组件:Pod、Deployment、Service、ConfigMap,其中Pod是不会单独部署的,那接下来我会通过三篇文章带大家先熟悉如何部署这些基础组件,然后再通过真实项目进行部署。今天我们先从部署Deployment开始。部署组件的方式有两种:一种是通过编写资源文件进行部署,一种是通过KubeSphere平台进行部署。首先我们看如何通过资源文件部署。

2023-05-23 21:28:12 682

原创 Kuberntes云原生实战09 Kubernetes高可用安装小结

大家好,我是飘渺。今天咱们继续更新系列,本节文章是我们在安装过程中可能会遇到的问题以及解决方法。(都是我踩过的坑,你们大概率也会遇到~)

2023-05-21 20:05:21 873 1

原创 Kuberntes云原生实战08 Kubesphere 通过OIDC实现gitlab联合登录(全网唯一可用)

大家好,我是飘渺。今天咱们继续更新系列,本节文章将会打通公司用户体系,使用Gitlab中的用户完成登录认证。

2023-05-21 19:49:56 761

原创 DailyMart01:一起来玩DDD吧?

大家好呀,我是飘渺!截至目前,我已在公众号和知识星球上发布了多个系列文章,涵盖了SpringBoot老鸟系列、SpringCloud微服务系列、运维监控系列、分库分表系列和Kubernetes云原生系列。尽管每个系列的重点各有不同,它们都关注微服务架构的各个方面和技术要点。然而,随着时间的推移和技术版本的更新,一些曾推荐的技术组件和观点已经不再适用。 例如,Swagger接口管理工具已久未更新,S...

2023-05-19 08:32:00 557

原创 Kubernetes云原生实战07 安装可视化管理平台Kubesphere

大家好,我是飘渺。今天咱们继续更新系列,本节文章将会实现给Kubernetes集群安装容器化平台Kubesphere。

2023-05-13 21:29:26 674

原创 Kubernetes云原生实战05 一键安装三主三从高可用集群

大家好,我是飘渺。今天咱们继续更新系列,本节文章会使用Kubekey安装一个三主三从的高可用集群。在开始之前请分别登录kubernets集群节点,分别修改节点的主机名,跟第一章中提到的节点规划表保持一致。

2023-05-05 21:49:05 522

原创 Kubernetes云原生实战04 安装前置条件及Docker环境

今天咱们继续更新系列,本节文章主要是给集群安装一些前置环境已经安装容器运行时环境Docker。Kubernetes 已经成为事实上容器编排的标准,Docker已经没有跟Kubernetes叫板的资本了,所以Docker一定会去主动适配Kubernetes。这个系列并不会花时间去讲Docker,个人觉得Docker相对而言还是比较简单的,可以参考我之前写的几篇文章即可掌握基础用法。

2023-05-05 21:46:14 520 1

原创 SpringBoot整合RocketMQ,老鸟们都是这么玩的!

今天我们来讨论如何在项目开发中优雅地使用RocketMQ。本文分为三部分,第一部分实现SpringBoot与RocketMQ的整合,第二部分解决在使用RocketMQ过程中可能遇到的一些问题并解决他们,第三部分介绍如何封装RocketMQ以便更好地使用。1. SpringBoot整合RocketMQ在SpringBoot中集成RocketMQ,只需要简单四步:引入相关依赖<dependenc...

2023-04-10 08:32:30 4472 3

原创 这7种UML图的画法每个程序员都应该掌握~

大家好,我是飘渺。今天我们来探讨几种常见UML图的画法。众所周知,软件开发是一个分阶段进行的过程。不同的开发阶段需要使用不同的模型图来描述业务场景和设计思路,在不同的阶段输出不同的设计文档也是必不可少的,例如,在需求分析阶段需要输出领域模型和业务模型,在架构阶段需要输出物理架构设计,在详细设计阶段需要输出数据库设计等。这样做可以更好地实践软件开发,并提高软件开发的实用性。软件建模与设计过程可以分为...

2023-04-06 08:32:43 1733

原创 SpringBoot中如何实现限流,这种方式才叫优雅!

很早以前,我曾写过两篇介绍如何在SpringBoot中使用Guava和Redis实现接口限流的文章。具体包括:使用Guava实现单机令牌桶限流使用Redis实现分布式限流现在,一个问题摆在我们面前:如何将这两种限流机制整合到同一个组件中,以便用户随时切换呢?显然,我们需要定义一个通用的限流组件,将其引入到业务中,并支持通过配置文件自由切换不同的限流机制。举例而言,当使用limit.type=red...

2023-03-20 08:34:09 523

原创 SpringBoot中如何解决Redis的缓存穿透、缓存击穿、缓存雪崩?

大家好,我是飘渺!今天给大家介绍一下如何在SpringBoot中解决Redis的缓存穿透、缓存击穿、缓存雪崩的问题。缓存穿透什么是缓存穿透缓存穿透指的是一个缓存系统无法缓存某个查询的数据,从而导致这个查询每一次都要访问数据库。常见的Redis缓存穿透场景包括:查询一个不存在的数据:攻击者可能会发送一些无效的查询来触发缓存穿透。查询一些非常热门的数据:如果一个数据被访问的非常频繁,那么可能会导致缓存...

2023-03-15 08:32:43 375

原创 Kuberntes云原生实战04 安装前置条件及Docker环境

系列文章,欢迎持续关注!

2023-03-12 11:57:58 316

原创 面试官:给你一段有问题的SQL,如何优化?

大家好,我是飘渺!我在面试的时候很喜欢问候选人这样一个问题:“你在项目中遇到过慢查询问题吗?你是怎么做SQL优化的?”很多时候,候选人会直接跟我说他们在编写SQL时会遵循的一些常用技巧,比如:合理使用索引使用UNION ALL替代UNION不要使用select * 写法JOIN字段建议建立索引避免复杂SQL语句这里不能说完全错误,因为这些技巧确实可以提高SQL运行效率;但是也不能说完全正确,毕竟我...

2023-02-28 08:32:47 6657

原创 SpringBoot 如何保证接口安全?老鸟们都是这么玩的!

大家好,我是飘渺。对于互联网来说,只要你系统的接口暴露在外网,就避免不了接口安全问题。如果你的接口在外网裸奔,只要让黑客知道接口的地址和参数就可以调用,那简直就是灾难。举个例子:你的网站用户注册的时候,需要填写手机号,发送手机验证码,如果这个发送验证码的接口没有经过特殊安全处理,那这个短信接口早就被人盗刷不知道浪费多少钱了。那如何保证接口安全呢?一般来说,暴露在外网的api接口需要做到防篡改和防重...

2023-02-02 08:32:01 4762

原创 微服务上云后本地如何联调?

大家好,我是飘渺!今天给大家带来云原生实战系列的第三十五篇,微服务上云后本地如何联调?当我们将微服务上云以后在开发过程中会遇到这样的场景:生产者服务部署到了云上,消费者服务还处于开发阶段,现在开发人员想在本地启动消费者服务调用云上生产者服务进行接口调试,很显然由于生产者和消费者处于不同的网络区间无法互相访问,在应用层的表现就是:会出现服务调用超时的异常,如下所示此时为了联调不得不将本地服务也部署到...

2023-01-15 08:32:20 1842

原创 聊聊分库分表后非Sharding Key查询的三种方案~(建议收藏)

大家好呀,我是飘渺!通过上篇文章我们知道了一个结论:那就是对于toC的业务来说,需要选择用户属性如 user_id 作为分片键。那问题来了,对于订单表来说,选择了user_id作为分片键以后如何查看订单详情呢?比如下面这样一条SQL:SELECT*FROMT_ORDERWHEREorder_id=801462878019256325由于查询条件中的order_id不是分片键,所以需要...

2022-12-01 08:32:39 851

原创 SpringBoot中如何实现业务校验,这种方式才叫优雅!

大家好,我是飘渺。在日常的接口开发中,为了保证接口的稳定安全,我们一般需要在接口逻辑中处理两种校验:参数校验业务规则校验首先我们先看看参数校验。参数校验参数校验很好理解,比如登录的时候需要校验用户名密码是否为空,创建用户的时候需要校验邮件、手机号码格式是否准确。而实现参数校验也非常简单,我们只需要使用Bean Validation校验框架即可,借助它提供的校验注解我们可以非常方便的完成参数校验。常...

2022-11-30 08:31:11 593

原创 Kubernetes云原生实战03 搭建高可用负载均衡器(Keepalived 和 HAproxy)

今天咱们继续更新系列,本节文章主要是基于Keepalived 和 HAproxy实现负载均衡器的高可用。上图是我们的部署架构,包含三个主节点,三个工作节点,两个用于负载均衡的节点,以及一个虚拟 IP 地址,虚拟 IP 地址也可称为“浮动 IP 地址”。这意味着在节点故障的情况下,该 IP 地址可在节点之间漂移,从而实现高可用。

2022-11-21 10:49:25 716

原创 Kubernetes云原生实战02 对节点磁盘进行分区挂载

今天咱们继续更新系列,如何基于上篇文章中提到的部署架构进行磁盘分区、格式化、挂载目录。

2022-11-21 10:41:14 1270

原创 Kubernetes云原生实战01 Kubernetes高可用部署架构

Kubernetes中组件众多,要完全介绍清楚估计要写上厚厚一本书,我们实战系列主要记住几个核心组件就行,即两种节点,三种IP,四种资源。

2022-11-21 10:28:56 744

原创 Kubernetes云原生实战00 何为云原生?

新系列,何为云原生?

2022-11-21 10:16:02 436

原创 史上最详细的docker学习手册,请收藏!

大家好,我是飘渺,今天我们来学习一下Docker!一、docker入门docker的安装及入门示例环境准备:docker需要安装在centos7 64位系统上;docker要求系统内核在3.10以上查看系统内核:uname-r安装命令:yum-yinstalldocker-io安装完成后,启动命令servicedockerstart安装nginx体验dockerrun-p80:8...

2022-08-19 08:32:18 887

原创 数据权限就该这么实现(实践篇),yyds!

我的知识星球正式上线了(戳链接),期待你的加入,我们一起冲冲冲!大家好,在上一篇文章中我们详细介绍了在RBAC模型中如何集成数据权限,本篇文章我们将通过实际案例,从代码实战的角度来实现这样的一个数据权限。在开始阅读本文之前,建议先把上篇文章 读一遍,读一遍,读一遍!数据权限就该这么设计,yyds!数据权限模型上篇文章的数据模型是基于传统的RBAC模型来设计的,由于我们这里...

2022-08-04 08:32:25 2307

原创 数据权限就该这么设计,yyyds!

我的知识星球正式上线了(戳链接),期待你的加入,我们一起冲冲冲!大家好,我是飘渺!在项目实际开发中我们不光要控制一个用户能访问哪些资源,还需要控制用户只能访问资源中的某部分数据。控制一个用户能访问哪些资源我们有很成熟的权限管理模型即RBAC,但是控制用户只能访问某部分资源(即我们常说的数据权限)使用RBAC模型是不够的,本文我们尝试在RBAC模型的基础上融入数据权限的管理...

2022-07-25 08:32:48 934

原创 Kubernetes云原生实战06 使用Rook搭建Ceph集群

使用Rook搭建Ceph集群

2022-07-22 08:32:06 3038 2

原创 Oauth2协议中如何对accessToken进行校验

大家好,我是飘渺。今天我们来聊聊oauth2.0的accesstoken校验逻辑。概述本文来自球友Never Sett* 的提问看完这个问题,我感觉读者对于accesstoken的校验逻辑不太清楚,所以特意写了这篇文章解释一下。首先我们要知道Oauth2是一个授权协议,客户端访问某个被保护的资源之前,需要先通过认证服务器获取accesstoken,而后通过在请求头上带上a......

2022-07-04 08:37:52 3638

原创 面试拆解:系统上线后Cpu使用率飙升如何排查?

大家好,我是飘渺。上次面试官问了个问题:应用上线后Cpu使用率飙升如何排查?其实这是个很常见的问题,也非常简单,那既然如此我为什么还要写呢?因为上次回答的时候我忘记将线程PID转换成16进制的命令了。所以我决定再重温一遍这个问题,当然贴心的我还给大家准备好了测试代码,大家可以实际操作一下,这样下次就不会忘记了。模拟一个高CPU场景publicclassHighCpuT...

2022-07-01 08:32:14 761

原创 Java 结构化数据处理开源库 SPL使用手册

现代Java应用架构越来越强调数据存储和处理分离,以获得更好的可维护性、可扩展性以及可移植性,比如火热的微服务就是一种典型。这种架构通常要求业务逻辑要在Java程序中实现,而不是像传统应用架构中放在数据库中。应用中的业务逻辑大都会涉及结构化数据处理。数据库(SQL)中对这类任务有较丰富的支持,可以相对简易地实现业务逻辑。但Java却一直缺乏这类基础支持,导致用Java实现业务逻辑非常繁琐低效。结果,虽然架构上有各种优势,但开发效率却反而大幅下降了。如果我们在Java中也提供有一套完整的结构化数据处理和计算类

2022-06-20 11:45:37 2092 2

原创 聊聊服务器性能优化~(建议收藏)

大家好,我是飘渺。听多了架构优化,数据库优化,今天我们来聊聊服务器优化。我们开发的软件服务需要在服务器上运行,所以服务器性能代表了软件的性能上限,因此服务器性能调优是个十分重要的环节,然而大部分同学对服务器性能调优关注的较少,今天从3个部分对服务器性能调优进行介绍,分别是:服务器配置选择,服务器负载分析,服务器内核参数调优。服务器配置选择服务器一般是由CPU、内存、磁盘和...

2022-06-06 09:03:39 866 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除