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等相关知识点

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

神经网络可视化——基于torchviz绘制模型的计算图

神经网络可视化——基于torchviz绘制模型的计算图 第一步、安装 graphviz 和 torchviz 库 第二步、编写代码生成计算图 第三步、安装graphviz软件 在深入理解深度学习模型时,可视化网络结构是一个非常有用的手段。今天介绍如何使用 torchviz 和 graphviz 来生成网…

oracle FUNCTION(任意两个时间 之间的工作小时)

写函数计算 任意两个时间 之间的工作小时 每天工作时间(8:00 - 20:00 共12小时),没有休息日 CREATE OR REPLACE FUNCTION SC_YD_DESI.CALCULATE_WORK_HOURS_FUNC (p_current_time IN DATE,p_order_time IN DATE ) RETURN NUMBER ASp_work_hou…

Python3基础

导包 在 python 用 import 或者 from...import 来导入相应的模块。 将整个模块(somemodule)导入,格式为: import somemodule 从某个模块中导入某个函数,格式为: from somemodule import somefunction 从某个模块中导入多个函数,格式为&#…

vulnhub靶机gigachad_vh

下载地址:Gigachad: 1 ~ VulnHub 主机发现 目标166 端口扫描 端口服务扫描 漏洞扫描 这玩意多得离谱 于是我用a重新扫了一遍 先去看web (⊙﹏⊙)离谱,目录扫描(之前先去看一下nmap扫到的html) 后面扫描的目录奇多,而…

解决ssh使用public key远程登录服务器拒绝问题

目录 使用场景windows安装ssh客户端使用powershell ssh登录服务器生成密钥文件ubuntu ssh服务器配置使用vscode远程登录使用Xshell远程登录使用MobaXtem远程登录Server refused our key问题解决方案 使用场景 使用vscode远程ssh登录使用public key不需要输入密码,比较方便. w…

虚幻学习笔记3—UI跟随弹窗

一、前言 本文使用的虚幻引擎5.3.2,继点击场景3D物体的两种处理方式的基础完成对3D物体的点击触发后,我们需要制作一个可以弹窗显示该物体信息的UI面板,同时保证弹窗可以跟随物体。另外还讲了一种UI上的悬浮提示跟随弹窗。 二、实现 2.1、创…

nginx 配置跨域(小皮面板)

本地开发的时候,前端请求后端,后端不能用域名请求,只能用端口模式,在小皮面板的话就是如下配置: 我的测试项目部署: 前端:http://localhost:8082 后端:http://localhost:8081 前端…

万宾科技第四代可燃气体监测仪的作用

燃气作为一种重要的能源已在居民生活、工业生产和商业活动等领域得到了广泛的应用。但是与之而来的便是各种各样的燃气管网的安全问题,其中燃气管网泄漏成为了城市生命线建设中亟待解决的安全隐患。因此采取切实有效的措施来保障燃气管网的安全运行,应用…

Modbus平台:协议中间件(支持Modbus TCP、RTU、ASCII)

该程序可放置外网中,适用于DTU长连接(心跳包必须包含DTU,可以是tcp/udp),也可以在内网中,短连接访问设备server 支持协议:Modbus TCP | RTU | ASCII 连接方式:TcpAtive: TCP主动 | …

Java(九)(多线程,线程安全,实现线程的方法,线程同步,线程池,并发和并行,线程的六种状态)

目录 多线程 线程 实现线程的方法 方法一:继承Thread父类 方法二:实现Runnable接口 方法三:Callable接口和FutureTask类来实现 Thread方法 线程安全 线程同步 同步代码块 同步方法 Lock锁 线程池 线程池对象的创建方式一: 线程池处理Runnable任务 线程池处理Cal…

软件提示找不到“vcruntime140.dll丢失的五个解决方法”(有效方法)

“vcruntime140.dll丢失的五个解决方法”。在我们的日常生活和工作中,有时候会遇到一些电脑问题,而vcruntime140.dll丢失就是其中之一。那么,什么是vcruntime140.dll文件呢?它为什么会丢失?又该如何解决这个问题呢&…

顶象s_v3滑块

Monday:你要悄悄打工,然后惊艳所有人。 网址:https://m.sichuanair.com/touch-webapp/user/login 说正事,顶象官网的验证码js会变更,但是对于某些特定的网站,有一个生sv_3版本的算法。 之前做过很多个站点…