架构设计方法论-编程思维

本系列文章教你怎么样成为一名架构师,本篇文章目的是让你掌握一套架构方法论,掌握规范的设计方法,设计出更好、更稳定的架构设计。 概念解析 在文章开始之前需要先理解几个概念: 什么是方法论? 我们拿到一个输入,然后根据这个输入预期一个输出,把中间这个过程描述出来就是方法论。 所以我们本篇讲的架构师方法论就是架构师先拿到经过需求分析出来的输入,然后完成架构设计,这个过程就是架构设计方法论。 什么是设

SpringBoot开发秘籍 - 集成Graphql Query-编程思维

概述 REST作为一种现代网络应用非常流行的软件架构风格受到广大WEB开发者的喜爱,在目前软件架构设计模式中随处可见REST的身影,但是随着REST的流行与发展,它的一个最大的缺点开始暴露出来: 在很多时候客户端需要的数据往往在不同的地方具有相似性,但却又不尽相同。 如同样的用户信息,在有的场景下前端只需要用户的简要信息(名称、头像),在其他场景下又需要用户的详细信息。当这样的相似但又不同的地

架构师之路 - 业务领域建模-编程思维

领域模型的概念及作用 领域模型是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、分析对象模型。它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。概念比较深奥,其实说白了就是我们把基于对业务的理解画成一个类图,并画出这些类之间的关系(面向对象)。 领域模型可以整理业务中的概念以及关系,帮助团队中的成员对业务的理解保持一致,往后可以指导数据库设

基于SkyWalking的分布式跟踪系统 - 环境搭建-编程思维

前面的几篇文章我们聊了基于Metrics的监控Prometheus,利用Prometheus和Grafana可以全方位监控你的服务器及应用的性能指标,在出现异常时利用Alertmanager告警及时通知运维处理。今天我们聊聊基于Trace的分布式跟踪系统 - SkyWalking 初识SkyWalking 应用场景 随着微服务架构的流行,一些微服务架构下的问题也会越来越突出,比如一个请求会涉及多

最全的SpringCloud Alibaba系列教程-编程思维

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

RBAC整合数据权限-编程思维

在项目实际开发中我们不光要控制一个用户能访问哪些资源,还需要控制用户只能访问资源中的某部分数据。 控制一个用户能访问哪些资源我们有很成熟的权限管理模型即RBAC,但是控制用户只能访问某部分资源(即我们常说的数据权限)使用RBAC模型是不够的,本文我们尝试在RBAC模型的基础上融入数据权限的管理控制。 首先让我们先看下RBAC模型。 RBAC模型 RBAC是Role-BasedAccess Con

微服务架构授权是在网关做还是在微服务做?-编程思维

在SpringCloud架构中,实现授权功能有两种实现方式: 在网关层进行授权 由后端微服务自己授权 两种方式在此系列文章中都有实现方案,那么问题来了:哪种才是最优方案,哪种方案更合理呢? 很抱歉,看完这篇文章你也不一定能得到你想要的答案,因为结论是并没有最优方案,两种方案各有千秋,只有根据自身业务选择对应的方案。本文我们将两种方案做一个简单对比,以便大伙在做方案决策有个选择参考。 解决方案

SpringCloud 中如何防止绕过网关请求后端服务?-编程思维

前言 使用SpringCloud架构后我们希望所有的请求都需要经过网关才能访问,在不作任何处理的情况下我们是可以绕过网关直接访问后端服务的。如下,我们绕过网关直接访问后端服务也是可以获取到数据的。 那我们今天的议题就是 如何防止请求绕过网关直接访问后端服务? 解决方案 我觉得防止绕过网关直接请求后端服务的解决方案主要有三种: 使用Kubernetes部署 在使用Kubernetes部署Sp

消息架构的设计难题以及应对之道-编程思维

概述 在微服务开发中我们经常会引入消息中间件实现业务解耦,执行异步操作, 现在让我们来看看使用消息中间件的好处和弊端。 首先需要肯定是使用消息组件有很多好处,其中最核心的三个是:解耦、异步、削峰。 解耦:客户端只要讲请求发送给特定的通道即可,不需要感知接收请求实例的情况。 异步:将消息写入消息队列,非必要的业务逻辑以异步的方式运行,加快响应速度。 削峰:消息中间件在消息被消费之前一直缓存消息,

微服务架构下的质量迷思——混沌工程-编程思维

从2005年Peter Rodgers博士提出微web服务,到2014年ThoughtWorks首席科学家Martin Fowler与James Lewis共同提出微服务概念至今已多年,这期间也是互联网及互联网+发展的高速期,消费市场变化莫测,消费者也变得越来越挑剔,很多公司和产品由于无法跟上市场的快速变化而纷纷倒下。越来越多的互联网巨头甚至传统行业都开始对自己的遗留系统进行微服务改造,通过把系

如何跟领导解释为什么选择SpringCloud alibaba作为微服务开发框架-编程思维

什么是微服务 提到微服务不得不提Martin Fowler在2014年3月25日发表的文章 Microservices,里面给出了微服务的定义。后续国内所有关于微服务的介绍都是基于这篇文章的翻译,或加上自己的理解而成。其中最重要的一段如下: In short, the microservice architectural style [1] is an approach to developi

SpringCloud 微服务最佳开发实践-编程思维

现在基于SpringCloud的微服务开发日益流行,网上各种开源项目层出不穷。我们在实际工作中可以参考开源项目实现很多开箱即用的功能,但是必须要遵守一定的约定和规范。 本文结合我们实际的开发中遇到的一些问题整理出了一份微服务开发的实践规范,欢迎各位大佬拍砖指点。 Maven规范 所有项目必须要有一个统一的parent模块 所有微服务工程都依赖这个parent,parent用于管理依赖版本,m