springcloud项目推荐(springcloud适合什么项目)

http://www.itjxue.com  2023-01-25 15:20  来源:未知  点击次数: 

「开源」springboot快速开发框架推荐,接私活利器

本期为大家精选了 码云 上优秀的 Spring Boot 语言开源项目,涵盖了企业级系统框架、文件文档系统、秒杀系统、微服务化系统、后台管理系统等,希望能够给大家带来一点帮助:)

1、项目名称: 分布式敏捷开发系统架构

项目简介: 基于 Spring + SpringMVC + Mybatis 分布式敏捷开发系统架构,提供整套公共微服务服务模块:集中权限管理(单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和通知等,支持服务治理、监控和追踪,努力为中小型企业打造全方位J2EE企业级开发解决方案。

项目地址:、

2、项目名称: 模块化开发系统

项目简介: 以 SpringBoot 为中心,模块化开发系统,用户可以随意删减除权限框架外 任意的系统模块。复用,组装性强主要应用技术:

项目地址:

3、项目名称: JAVA 分布式快速开发平台

项目简介: JAVA 分布式快速开发平台:SpringBoot,SpringMVC,Mybatis,mybatis-plus,motan/dubbo分布式,Redis 缓存,Shiro 权限管理,Spring-Session 单点登录,Quartz 分布式集群调度,Restful 服务,QQ/微信登录,App token 登录,微信/支付宝支付;日期转换、数据类型转换、序列化、汉字转拼音、身份证号码验证、数字转人民币、发送短信、发送邮件、加密解密、图片处理、excel 导入导出、FTP/SFTP/fastDFS 上传下载、二维码、XML 读写、高精度计算、系统配置工具类等。

项目地址:

4、项目名称: 快速开发框架 ThinkGem

项目地址:

5、项目名称: Java 快速开发平台 MCMS

项目简介: 完整开源,Java 快速开发平台。基于 Spring、SpringMVC、Mybatis 架构,MStore 提供更多好用的插件与模板(文章、商城、微信、论坛、会员、评论、支付、积分、工作流、任务调度等,同时提供上百套免费模板任意选择),价值源自分享!铭飞系统不仅一套简单好用的开源系统、更是一整套优质的开源生态内容体系。

项目地址:

6、项目名称: 分布式秒杀系统

项目简介: 可能秒杀架构原理大家都懂,网上也有不少实现方式,但大多都是文字的描述,告诉你如何如何,什么加锁、缓存、队列之类。但很少全面有的案例告诉你如何去做,既然是从0到1,希望以下代码案例可以帮助到你。当然最终落实到生产,还有很长的路要走,要根据自己的业务进行编码,实施并部署。你将会在代码案例中学到以下知识:

项目地址:

7、项目名称: Spring Boot 快速开发平台

项目简介: renren-fast 是一个轻量级的 Spring Boot 快速开发平台,其设计目标是开发迅速、学习简单、轻量级、易扩展;使用 Spring Boot、Shiro、MyBatis、Redis、Bootstrap、Vue2.x 等框架,包含:管理员列表、角色管理、菜单管理、定时任务、参数管理、代码生成器、日志管理、云存储、API 模块(APP 接口开发利器)、前后端分离等。

项目地址:

8、项目名称: 企业级快速开发脚手架

项目简介: 本项目是 spring boot 搭建的一个企业级快速开发脚手架。其技术栈如下所示:

项目地址:

9、项目名称: 文件文档在线预览

项目简介: 此项目为使用 spring boot 打造文件文档在线预览项目解决方案,对标业内付费产品有【永中office】【office365】【idocv】等,在取得公司高层同意后以Apache协议开源出来反哺社区,该项目使用流行的spring boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如 doc、docx、Excel、pdf、txt、zip、rar、图片等等。

项目地址:

10、项目名称: 微服务化开发平台

项目简介: Cloud-Admin 是国内首个基于 Spring Cloud 微服务化开发平台,核心技术采用 Spring Boot2 以及 Spring Cloud Gateway 相关核心组件,前端采用 vue-element-admin 组件。具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关 API 管理等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,适合学习和直接项目中使用。

项目地址:

11、项目名称: 后台管理系统 Guns

项目简介: Guns 基于 SpringBoot,致力于做更简洁的后台管理系统,完美整合 springmvc + shiro + mybatis-plus + beetl。Guns 项目代码简洁,注释丰富,上手容易,同时 Guns 包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),可以直接作为一个后台管理系统的脚手架。Guns v3.0 新增 rest api 服务,提供对接服务端接口的支持,并利用 jwt token 鉴权机制给予客户端的访问权限,传输数据进行 md5 签名保证传输过程数据的安全性!

项目地址:

微服务框架之Spring Cloud简介

在了解 Spring Cloud 之前先了解一下微服务架构需要考量的核心关键点,如下图:

对于以上等核心关键点的处理,不需要我们重复造车轮, Spring Cloud 已经帮我们集成了,它使用 Spring Boot 风格将一些比较成熟的微服务框架组合起来,屏蔽掉了复杂的配置和实现原理,为快速构建微服务架构的应用提供了一套基础设施工具和开发支持。

Spring Cloud 所提供的核心功能包含:

Spring Cloud架构图

Spring Cloud子项目

Spring Cloud 旗下的子项目大致可以分为两类:

如下:

1. Spring Cloud 与 Spring Boot

Spring Boot 可以说是微服务架构的核心技术之一。通过在 Spring Boot 应用中添加 Spring MVC 依赖,就可以快速实现基于 REST 架构的服务接口,并且可以提供对 HTTP 标准动作的支持。而且 Spring Boot 默认提供 JackJson 序列化支持,可以让服务接口输入、输出支持 JSON 等。因此,当使用 Spring Cloud 进行微服务架构开发时,使用 Spring Boot 是一条必经之路。

2. Spring Cloud 与服务治理( Eureka )

服务治理是 Spring Cloud 的核心,在实现上其提供了两个选择,即 Consul 和 Netflix 的 Eureka 。

Eureka 提供了服务注册中心、服务发现客户端,以及注册服务的 UI 界面应用。

在 Eureka 的实现中,节点之间相互平等,有部分注册中心“挂掉”也不会对整个应用造成影响,即使集群只剩一个节点存活,也可以正常地治理服务。即使所有服务注册节点都宕机, Eureka 客户端中所缓存的服务实例列表信息,也可让服务消费者能够正常工作,从而保障微服务之间互相调用的健壮性和应用的弹性。

3. Spring Cloud 与客户端负载均衡( Ribbon )

Ribbon 默认与 Eureak 进行无缝整合,当客户端启动的时候,从 Eureka 服务器中获取一份服务注册列表并维护在本地,当服务消费者需要调用服务时, Ribbon 就会根据负载均衡策略选择一个合适的服务提供者实例并进行访问。

Spring Cloud 通过集成 Netflix 的 Feign 项目,为开发者提供了声明式服务调用,从而简化了微服务之间的调用处理方式。并且默认 Feign 项目集成了 Ribbon ,使得声明式调用也支持客户端负载均衡功能。

4. Spring Cloud 与微服务容错、降级( Hystrix )

为了给微服务架构提供更大的弹性,在 Spring Cloud 中,通过集成 Netflix 下子项目 Hystrix ,通过所提供的 @HystrixCommand 注解可以轻松为我们所开发的微服务提供容错、回退、降级等功能。此外, Hystrix 也默认集成到 Feign 子项目中。

Hystrix 是根据“断路器”模式而创建。当 Hystrix 监控到某服务单元发生故障之后,就会进入服务熔断处理,并向调用方返回一个符合预期的服务降级处理( fallback ),而不是长时间的等待或者抛出调用异常,从而保障服务调用方的线程不会被长时间、不必要地占用,避免故障在应用中的蔓延造成的雪崩效应。

而 Hystrix 的仪表盘项目( Dashboard )可以监控各个服务调用所消耗的时间、请求数、成功率等,通过这种近乎实时的监控和告警,可以及时发现系统中潜在问题并进行处理。

5. Spring Cloud 与服务网关( Zuul )

Spring Cloud 通过集成 Netflix 中的 Zuul 实现 API 服务网关功能,提供对请求的路由和过滤两个功能

路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础。

过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础。

通过 Zuul ,可以将细粒度的服务组合起来提供一个粗粒度的服务,所有请求都导入一个统一的入口,对外整个服务只需要暴露一个 API 接口,屏蔽了服务端的实现细节。通过 Zuul 的反向代理功能,可以实现路由寻址,将请求转发到后端的粗粒度服务上,并做一些通用的逻辑处理。此外, Zuul 默认会与 Eureka 服务器进行整合,自动从 Eureka 服务器中获取所有注册的服务并进行路由映射,实现 API 服务网关自动配置。

6. Spring Cloud 与消息中间件( Stream )

Spring Cloud 为简化基于消息的开发,提供了 Stream 子项目,通过建立消息应用抽象层,构建了消息收发、分组消费和消息分片等功能处理,将业务应用中的消息收发与具体消息中间件进行解耦,使微服务应用开发中可以非常方便地与 Kafka 和 RabbitMQ 等消息中间件进行集成。

Spring Cloud Bus 基于 Stream 进行扩展,可以作为微服务之间的事件、消息总线,用于服务集群中状态变化的传播。

比如 Spring Cloud Config 借助 Bus ,可以实现配置的动态刷新处理。

7. Spring Cloud 与分布式配置中心( Config )

针对微服务架构下的配置文件管理需求, Spring Cloud 提供了一个 Config 子项目。 Spring Cloud Config 具有中心化、版本控制、支持动态更新和语言独立等特性。

在 Config 子项目中将微服务应用分为两种角色:配置服务器( Config Server )和配置客户端( Config Client )。使用配置服务器集中地管理所有配置属性文件,配置服务中心可以将配置属性文件存储到 Git 、 SVN 等具有版本管理仓库中,也可以存放在文件系统中。默认采用 Git 的方式进行存储,因此可以很容易地对配置文件进行修改,并实现版本控制。

8. Spring Cloud 与微服务链路追踪( Sleuth )

Spring Cloud 中的 Sleuth 子项目为开发者提供了微服务之间调用的链路追踪。

Sleuth 核心思想就是通过一个全局的 ID 将分布在各微服务服务节点上的请求处理串联起来,还原了调用关系,并借助数据埋点,实现对微服务调用链路上的性能数据的采集。

因此,通过 Sleuth 可以很清楚地了解到一个用户请求经过了哪些服务、每个服务处理花费了多长时间,从而可以对用户的请求进行分析。此外,通过将采集的数据发送给 Zipkin 进行存储、统计和分析,从而可以实现可视化的分析和展示,帮助开发者对微服务实施优化处理。

9. Spring Cloud 与微服务安全( Security )

Spring Cloud Security 为我们提供了一个认证和鉴权的安全框架,实现了资源授权、令牌管理等功能,同时结合 Zuul 可以将认证信息在微服务调用过程中直接传递,简化了我们进行安全管控的开发。

Spring Cloud Security 默认支持 OAuth 2.0 认证协议,因此单点登录也可以非常容易实现,并且 OAuth2.0 所生成的令牌可以使用 JWT 的方式,进一步简化了微服务中的安全管理。

10. Spring Cloud 的其他子项目

Spring Cloud入门系列-前期准备

在写这一系列的文章之前,觉得很有必要阐述一下什么是Spring Cloud。不像Spring(Spring Framework),大体上能够理解为它是一个管理bean的容器。也不想SpringBoot,可以理解为它是加强版的Spring,集成了SSM和其它一些框架,并且大量支持和推荐注解开发。

但是对于Spring Cloud,它是一个微服务架构的框架, 它不是单独的某个项目,是多个项目的集成 。也就是说如果想学习Spring Cloud,实际上是在 学习多个有关微服务的项目。

所谓微服务呢,就是把原本一站式解决的业务拆分成具体的某个模块,每个模块只做一个事情,然后还顺便衍生出了统一管理这些服务的模块,以及服务的保护措施等模块。归结起来就是5个核心, 服务发现(注册)、负载均衡、断路器、服务网关和分布式配置。

在几个星期前,当我想建一个模块的时候,可能会选择采用 Spring Initializer 来创建,但是最近觉得还是直接建立一个新模块比较舒服。每个人的习惯都不一样,自己怎么舒服怎么来。

下面就演示一下如何利用maven创建一个 module

修改模块名就可以创建想要的模块,这样的好处是能够集成父模块中导入的依赖,相比于 Spring Initializer 会简单多了,因为后者需要手动配置模块的父子关系才可以(或者懂怎么搞的小伙伴也可以留言一手)。

为了更好的学习,首先建立了一个总的工程,同样是用了maven来建立一个项目,建立完后结构如下所示

接下来要做的就是把整个src目录给删掉,因为后续也用不到它;其次就是修改pom文件

各位小伙伴需要修改的第7和第8行的 groupId 和 artifactId 。这样对于必须用的依赖,可以在根模块中,也就是该pom文件声明即可。比如上面的 spring-boot-starter-web 在所有的子模块中都有整个依赖。

甚至如果足够懒,那你完全可以把所有的依赖都写在父模块中,这样后续建立子模块的过程中就可以不管pom文件了。

SpringCloud Alibaba 实战,来自尚硅谷电商项目理解

电商项目常见解决技术搭配方案:

SpringCloud Alibaba --nacos:注册中心

SpringCloud Alibaba --nacos:配置中心

SpringCloud --Ribbon:负载均衡

SpringCloud Alibaba --Sentinel:服务容错(限流、降级、熔断)

SpringCloud --Gateway:API网关(webflux编程模式)

SpringCloud --Sleuth(调用链监控)

SpringCloud Alibaba --Seata:分布式事务解决方案

作用:因为都会用到springcloud alibaba,所以将 放到公共服务中,统一管理版本

Nacos 文档地址:

Nacos 下载地址:

第一步:在需要注册到nacos的服务pom文件中添加相应的nacos依赖

作用:将我们的服务注册到注册中心中,同时也可以从注册中心中发现其他服务

第二步:将 Nacos 服务器地址配置添加到 /src/main/resources/application.properties 文件中,

给当前服务命名

第三步:使用@EnableDiscoveryClient 注解开启服务注册和发现

启动 Nacos 服务器

下载 Nacos Server下载页面

将下载的文件解压,进入nacos/bin文件夹(),并根据操作系统的实际情况

Linux/Unix/Mac , 执行 sh startup.sh -m standalone

Windows , 执行 cmd startup.cmd

查询服务

用户名和密码默认都是nacos

如:member会员服务需要调用coupon优惠券服务的方法

1.在member服务和coupon服务的pom文件中引入feign依赖

2.开启feign功能,在member服务上开启

@FeignClient("gulimall-coupon"):其中gulimall-coupon为nacos注册的被调用的服务名,@RequestMapping("/coupon/coupon/member/list")路径为gulimall-coupon服务中membercoupons()方法的调用全路径(添加上controller上的请求路径)

对应的在gulimall-coupon服务中有membercoupons()方法的具体实现

第一步:引入 Nacos Config 进行配置管理

第二步:在需要管理配置的服务下,添加bootstrap.properties

第三步:需要给配置中心添加数据集(Data Id)gulimall-coupon.properties

第四步:给 应用名.properties 添加任何配置

第五步:在需要读取配置的类上添加注解@RefreshScope,实时刷新获取配置文件内容

@RefreshScope:动态获取并刷新配置

@Value("${配置项的名}")

细节部分:

1.命名空间:主要用来做配置隔离

默认是public(保留空间);默认新增的所有配置都在public空间

a:开发、测试、生产:利用命名空间来做环境隔离

b:每一个微服务之间互相隔离配置,每一个微服务都创建自己的命名空间,只加载自己命名空间下的所有配置

2.配置集

一组相关或者不相关的配置项的集合称为配置集。在系统中,一个配置文件通常就是一个配

置集,包含了系统各个方面的配置。例如,一个配置集可能包含了数据源、线程池、日志级

别等配置项。

3.配置集ID

Nacos 中的某个配置集的 ID。配置集 ID 是组织划分配置的维度之一。Data ID 通常用于组

织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有

意义的名称标识。Data ID 通常采用类 Java 包(如 com.taobao.tc.refund.log.level)的命名

规则保证全局唯一性。此命名规则非强制。

4.配置组

Nacos 中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如 Buy 或

Trade )对配置集进行分组,从而区分 Data ID 相同的配置集。当您在 Nacos 上创建一个

配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。配置

分组的常见场景:不同的应用或组件使用了相同的配置类型,如 database_url 配置好

MQ_topic 配置。

加载多配置文件:

官方文档:

项目地址:

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,

从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

什么是熔断降级

除了流量控制以外,降低调用链路中的不稳定资源也是关键 Sentinel 的使命之一。由于调用关系的复杂性,如果调用链路中的某个资源出现了不稳定,最终会导致请求发生堆积。

Sentinel 和 Hystrix 的原则是一致的: 当检测到调用链路中某个资源出现不稳定的表现,例如

如请求响应时间长或异常比例升高的时候,则对这个资源的调用进行限制,让请求快速失败,

避免影响到其它的资源而导致级联故障。

熔断降级设计理念

在限制的手段上,Sentinel 和 Hystrix 采取了完全不一样的方法。

Hystrix 通过 线程池隔离 的方式,来对依赖(在 Sentinel 的概念中对应 资源)进行了隔

离。这样做的好处是资源和资源之间做到了最彻底的隔离。缺点是除了增加了线程切换的成

本(过多的线程池导致线程数目过多),还需要预先给各个资源做线程池大小的分配。

Sentinel 对这个问题采取了两种手段

a.通过并发线程数进行限制

b.通过响应时间对资源进行降级

步骤:

1、引入依赖

2、使用 Nacos 注册中心

3、定义 fallback 实现

在服务消费者中,实现 feign 远程接口,接口的实现方法即为调用错误的容错方法

4、定义 fallbackfactory 并放在容器中

5、改造 fallback 类接受异常并实现容错方法

6、远程接口配置 feign 客户端容错

7、开启 sentinel 代理 feign 功能;在 application.properties 中配置

测试熔断效果。当远程服务出现问题,会自动调用回调方法返回默认数据。

基于SpringCloudAlibaba货币交易系统项目

项目简介

开源数字货币交易所,基于Java开发的比特币交易所,包含BTC交易所、ETH交易所、数字货币交易所、交易平台、撮合交易引擎等核心模块。项目技术采用业界最流行、社区非常活跃的开源组件Spring Cloud Alibaba来构建我们的交易系统,是行业第一家基于Alibaba技术的大型项目,也是Spring Cloud的最佳实践之一。

学习完本项目,大家将对云架构、区块链、法定数字货币、金融科技以及货币发展有自己更深入的认识和理解,为以后20年中国CDBD的研究和发展作出自己的贡献,同时也为争取40w的年薪增加一份可靠的技术保障!

适合对象

在职程序员的自我提升

有Spring Cloud/Spring Cloud Alibaba基础的学员

有Vue/React的基础的学员

有k8s/Docker运维基础的学员

技术选型

Spring Cloud Alibaba + Spring Boot + Tio + Jenkins + Maven + Jetcache + Disruptor + Redis + RocketMQ + Mongodb + Jenkins + Docker + Kubernetes

解决方案

核心功能模块

后台管理系统

前台系统

项目截图

后台管理系统

前台系统

项目架 构

撮合引擎

(责任编辑:IT教学网)

更多

推荐综合特效文章