01 项目架构

关于我

曾经就职于蚂蚁金服,多年的后端开发经验,对微服务、架构这块研究颇深,同时也是一名热衷于技术分享、拥抱开源技术的博主。

  • 个人技术公众号:码猿技术专栏
  • 个人博客:www.java-family.cn

前期一直在更新《Spring Cloud 进阶》这个专栏,很多读者觉得知识太杂了,想要我出个系统的实战项目将这些知识、中间件串联起来实战一下,这样能够加深理解。

在春节期间自己抽时间将新实战项目撸了起来,这是一个博客项目,系统架构如下图:

整个项目将Spring Cloud Alibaba的几个组件完全应用,贴近企业生产,作为练手项目再合适不过了。

涉及到以下9个服务:

服务名称描述
oauth-server认证中心
user-boot用户、权限服务
article-boot文章、分类服务
comments-boot评论服务
friendlinks-boot友链服务
gateway网关服务
monitor服务监控
picture-boot图片服务
file-server文件存储服务

开发中用到工具如下:

名称描述版本
Nacos注册中心、配置中心1.2.1
Seata分布式事务组件1.3.0
Skywalking分布式链路追踪组件8.7.0
Sentinel限流熔断组件1.7.1
Redis缓存数据库3.0
RabbitMQ消息组件3.7.11
ES搜索引擎7.1.
MySQL数据库5.6.0

开发中用到的后端技术:

名称描述
Spring BootMVC框架
Spring Cloud微服务框架
Spring Cloud Alibaba阿里系微服务框架
Spring Security安全认证框架
OpenFeign服务间调用组件
Nacos阿里系分布式配置、注册中心
Seata阿里系分布式事务解决框架
Sentinel阿里系限流熔断框架
Skywalking分布式链路追踪框架
RabbitMQ消息组件
Redis缓存数据库
MySQL持久化数据库
ElasticSearch全文搜索引擎
Druid阿里系数据库连接池
Spring Boot Admin服务监控
Nginx反向代理工具
Hutool三方工具包
JWT令牌技术
Kibana分析和可视化平台
MybatisORM框架

项目特点

  • 引入Nacos作为注册中心、分布式配置中心,开发便捷
  • 引入openFeign作为服务调用组件,贴近企业生产实际
  • 引入Seata作为分布式解决方案,使得分布式事务更加简单
  • 引入Sentinel作为限流熔断组件,使得微服务更加安全,通过配置再也不怕网站被爆破
  • 引入Skywalking作为分布式链路追踪组件,代码无侵入,使得异常分析,链路定位更加简单
  • 引入RBAC权限模型,灵活的权限控制,按钮级别的细粒度权限控制,满足绝大部分的权限需求
  • 引入Spring Security作为认证授权框架,完美集成OAuth2.0
  • 引入ElasticSearch作为全文检索服务
  • 引入Spring Boot Admin作为服务监控组件
  • 引入Swagger 文档支持,网关层聚合API文档,不用担心文档的编写
  • 引入RabbitMQ 消息队列,用于事件的异步拆解
  • 采用自定义参数校验注解,轻松实现后端参数校验
  • 采用 AOP + 自定义注解 + Redis 实现限制IP接口访问次数
  • 友好的代码结构及注释,便于阅读及二次开发
  • 实现前后端分离,通过 Json 进行数据交互,专注于后端技术,不用关心前端

面向人群

本教程面向Java Web开发者,对于初步掌握微服务开发技术的同学比较友好,可以直接学习。

对于缺乏一些基础知识同学也可以学习,教程内部都提供了对应的学习资源,理论+实战更加深入的学习。

你将学到什么

通过本系列教程,你将掌握以下技能:

  • Spring Cloud 的基础知识+实战,比如服务间调用openFeign,链路追踪Skywalking,网关Spring Cloud Gateway
  • Spring Cloud Alibaba各种组件的深入理解+实战,比如服务治理、配置组件Nacos,限流熔断组件Sentinel、分布式事务组件Seata
  • Spring Security、OAuth2.0、RBAC权限模型的基础知识+实战
  • 分布式事务各种解决方案、网关统一授权、JWT等相关知识点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/197088.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

sqli-labs关卡21(基于cookie被base64编码的报错盲注)通关思路

文章目录 前言一、回顾上一关知识点二、靶场需要了解的前置知识1、什么是base64编码? 三、靶场第二十一关通关思路1、判断注入点2、爆数据库名3、爆数据库表4、爆数据库列5、爆数据库关键信息 总结 前言 此文章只用于学习和反思巩固sql注入知识,禁止用于…

Funbox9_GaoKao通过NC获取反向shell

一. 发现主机 arp-scan -l -I eth0 找打GaoKao主机IP地址 173.30.1.128 二. Nmap扫描主机 nmap -A -T5 172.30.1.128 -A :系统探测,版本检测,脚本扫描,路由跟踪 -T(0-5):数字越大速度越快(准确度低),数字越…

vue+echarts实现依赖关系无向网络拓扑结图节点折叠展开策略

目录 引言 一、设计 1. 树状图(不方便呈现节点之间的关系,次要考虑) 2. 力引导依赖关系图 二、力引导关系图 三、如何实现节点的Open Or Fold 1. 设计逻辑 节点展开细节 节点收缩细节 代码实现 四、结果呈现 五、完整代码 引言 我…

离散数学-集合论基础

3.1集合的基本概念 1)集合及元素 2)集合的表示 3)集合的关系 4)特殊集合 3.2集合的运算 并、交、差、对称差 3.3集合的划分与覆盖 3.4排斥包含管理 3.1集合的基本概念 1)集合及元素 将某种具有同种属性的个体…

扩散模型实战(十三):ControlNet结构以及训练过程

推荐阅读列表: 扩散模型实战(一):基本原理介绍 扩散模型实战(二):扩散模型的发展 扩散模型实战(三):扩散模型的应用 扩散模型实战(四&#xff…

振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(9)

注解目录 1、znFAT 的起源 1.1 源于论坛 (那是一个论坛文化兴盛的年代。网友 DIY SDMP3 播放器激起了我的兴趣。) 1.2 硬盘 MP3 推了我一把 (“坤哥”的硬盘 MP3 播放器,让我深陷 FAT 文件系统不能自拔。) 1.3 我…

智能优化算法应用:基于缎蓝园丁鸟算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于缎蓝园丁鸟算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于缎蓝园丁鸟算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.缎蓝园丁鸟算法4.实验参数设定5.算法结果…

WIN10 x86环境部署ARM虚拟机(银河麒麟)

我们经常使用的是x86架构的cpu,而对于不同cpu架构的arm架构的操作系统,我们可以通过QEMU模拟器来进行模拟一个arm环境 1、部署前的准备 arm的镜像: 以此镜像为例:Kylin-Server-10-SP2-aarch64-Release-Build09-20210524.iso QE…

每日一练【移动零】

一、题目描述 283. 移动零 - 力扣(LeetCode) 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 二、题目解析 可以…

docker限制容器内存的方法

在服务器中使用 docker 时,如果不对 docker 的可调用内存进行限制,当 docker 内的程序出现不可预测的问题时,就很有可能因为内存爆炸导致服务器主机的瘫痪。而对 docker 进行限制后,可以将瘫痪范围控制在 docker 内。 因此&#…

1、nmap常用命令

文章目录 1. 主机存活探测2. 常见端口扫描、服务版本探测、服务器版本识别3. 全端口(TCP/UDP)扫描4. 最详细的端口扫描5. 三种TCP扫描方式(1)TCP connect 扫描(2)TCP SYN扫描(3)TCP …

两部手机数据传输后备忘录不见了怎么回事

想必很多人都遇到过,当两部手机进行备忘录数据传输后,突然发现备忘录不见了,这让人不禁着急上火,我也曾经遇到过这种事情导致很多重要的内容都丢失了。 一般出现这种情况可能是因为,两部手机使用的是不同的云服务&…

2020年3月25日 Go生态洞察:Go、Go社区与疫情大流行

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

04 # 第一个 TypeScript 程序

初始化项目以及安装依赖 新建 ts_in_action 文件夾 npm init -y安装好 typescript,就可以执行下面命令查看帮助信息 npm i typescript -g tsc -h创建配置文件,执行下面命令就会生成一个 tsconfig.json 文件 tsc --init使用 tsc 编译一个 js 文件 新…

Element-ui合并table表格列方法

merageCell({ row, column, rowIndex, columnIndex }) {if (columnIndex 0 || columnIndex 1) {const property columnIndex 0 ? name : firstDeptName;// 获取当前行的property,这里看自己的需要,改成根据哪个去判断const currentPropertyVal row…

ChatGPT到底是如何运作?

自从2022年11月30日发布以来,ChatGPT一直占据着科技届的头条位置,随着苹果的创新能力下降,ChatGPT不断给大家带来震撼,2023年11月7日,首届OpenAI开发者大会在洛杉矶举行,业界普遍认为,OpenAI的开…

Text-to-SQL小白入门(九)InstructGPT论文:教你如何训练ChatGPT

论文概述 InstructGPT和ChatGPT 的训练流程基本一致 ,ChatGPT是改进后的InstructGPT,比如InstructGPT是基于GPT-3训练,而ChatGPT是基于GPT-3.5训练。 基本信息 英文标题:Training language models to follow instructions with h…

香港科技大学广州|智能制造学域博士招生宣讲会—华中科技大学专场

时间:2023年12月08日(星期五)15:00 地点:华中科技大学大学生活动中心A座603 报名链接:https://www.wjx.top/vm/mmukLPC.aspx# 宣讲嘉宾: 胡鹏程 副教授 https://facultyprofiles.hkust-gz.edu.cn/faculty-…

RabbitMQ消息队列

简介 MQ(message queue),从字面意思上看就个 FIFO 先入先出的队列,只不过队列中存放的内容是 message 而已,它是一种具有接收数据、存储数据、发送数据等功能的技术服务。 作用:流量削峰、应用解耦、异步处理。 生产者将消息发送…

黑马点评-Feed流的实现方案,基于推拉结合模式实现笔记推送

Feed流实现方案 我们关注了博主之后,当用户发布了动态后我们应该把这些数据推送给粉丝,关注推送也叫作Feed(投喂)流,通过无限下拉刷新获取新的信息 传统的模式内容检索: 粉丝需要主动通过搜索引擎或者是其他方式去查找想看的内容新型Feed流的效果: 系统分析用户到底想看什么,…