Skip to content

🔥 Develop distributed application services based on SpringCloud architecture model and components

License

Notifications You must be signed in to change notification settings

romeoblog/spring-cloud

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

434 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Spring Cloud Mesh

该项目包含开发分布式应用微服务的必需组件,通过 Spring Cloud 架构模型 和相关 Spring Cloud 组件来开发分布式应用服务。

主要功能

  • 服务限流降级:支持 Feign、RestTemplate 和 Spring Cloud Gateway 等限流降级功能的接入,支持在运行时通过控制台实时修改限流降级规则。
  • 服务注册与发现:适配 Spring Cloud 服务注册与发现,支持两种配置:Eureka 和 Nacos(推荐)。
  • 分布式配置管理:支持分布式系统中的外部化配置,配置更改时自动刷新。支持 Nacos Config 作为统一配置。
  • 分布式事务:我们折中选择由 Alibaba 团队开发的 Seata 分布式事务解决方案,已集成支持 Seata 分布式事务方案,使用 @GlobalTransactional 注解,高效并且对业务零侵入地解决分布式事务问题。
  • 安全加密支持:支持对敏感数据不予暴露,采用不对称加密方式,支持对配置文件加密,提高项目的第一频道的安全性。
  • 服务健康与监控:用于管理和监控 Spring Cloud 的应用,提供简洁的可视化 WEB UI。
  • 全链路监控:是分布式监控系统,用于跟踪分布式服务之间的应用数据链路,分析处理延时,帮助我们改进系统的性能和定位故障。

组件

  • Oauth2 & Security:基于 OAUTH2.0 统一认证授权的微服务基础架构,支持权限、角色等安全认证。

  • Sentinel:监控服务,把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

  • Nacos:提供用于存储配置和其他元数据的 key/value 存储,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

  • Nacos Config:Nacos Config 是 Config Server 和 Client 的替代方案,项目很容易地使用 Nacos Config 来实现应用的外部化配置,实现统一配置与管理。

  • Eureka:一种基于 REST 的服务,主要用于定位服务,以实现中间层服务器的负载平衡和故障转移。目前 Eureka 已停止维护,建议采用 Alibaba Nacos 替代方案。

  • Seata:由 Alibaba 团队发起了开源项目,一个易于使用的高性能微服务分布式事务解决方案。

  • Gateway:Spring Cloud Gateway 是 Spring Cloud 官方推出的第二代网关框架,取代Zuul网关。网关作为对外的门户,在微服务系统中有着非常作用,实现动态路由转发、权重路由、断路器、限流、鉴权和黑白名单等功能。

  • Zuul:Spring Cloud Netflix Zuul 是由 Netflix 开源的 API 网关,目前还在继续维护。

  • Jasypt:提供对配置文件安全加密和管理。

  • Sleuth & Zikpin:提供全链路监控,跟踪分布式服务间的应用数据链路。(未支持)

  • Apache Skywalking:提供全链路监控,跟踪分布式服务间的应用数据链路。(已支持)

  • Spring Cloud Config:提供为分布式系统中的外部化配置提供服务器端和客户端支持。(未支持)

组织结构

spring-cloud
├── mesh-api -- openFeign 相关接口 api
├── mesh-auth-server -- 认证系统
├── mesh-boot-admin -- 服务健康与监控系统
├── mesh-common -- 工具类及通用代
├── mesh-docs -- 项目文档信息
├── mesh-demo -- 相关框架实例
├────── nacos-sample -- 栗子1
├────── seata-eureka-sample -- 栗子2
├────── seata-ha-sample -- 栗子3
├────── seata-nacos-sample -- 栗子4
├────── seata-sample -- 栗子5
├────── seata-tcc-sample -- 栗子6
├────── springboot-sample -- 栗子7
├── mesh-entity -- 数据层公共实体类
├── mesh-enums -- 枚举公共类
├── mesh-eureka -- Eureka 服务注册与发现组件
├── mesh-gateway -- SpringCloud Gateway 网关组件
├── mesh-gateway-zuul -- SpringCloud Zuul 网关组件
├── mesh-generator -- Mybatis 构建自动化
├── mesh-model -- 与前端交互视图实体相关,VO、DTO、BTO
├── mesh-modules -- 模块集
├────── mesh-async-elasticsearch
├────── mesh-elasticsearch -- 全文搜索引擎 Elasticsearch
├────── mesh-mongodb
├────── mesh-cassandra
├── mesh-core -- 服务层公共配置信息和组件初始化代码
├── mesh-service -- 独立服务父 POM
├────── mesh-business-service -- 独立业务服务1
├────── mesh-order-service -- 独立业务服务2
├────── mesh-storage-service -- 独立业务服务3
├────── mesh-user-service -- 独立业务服务4
├────── mesh-mybatis-service -- 独立业务服务5
├── mesh-skywalking-agent -- 提供全链路监控 agent
├── mesh-test -- 框架搭建时的相关测试代码
├── sql -- sql 执行语句
└── style -- 框架代码规范约定

服务端口规约

网关服务(8080-8099)
服务名称 服务端口号 Docker映射端口号
mesh-gateway 8080 8080
mesh-gateway-zuul 8090 8090
认证服务(8010-8019)
服务名称 服务端口号 Docker映射端口号
mesh-auth-server 8010 8010
监控服务(8020-8049)
服务名称 服务端口号 Docker映射端口号
mesh-boot-admin 8020 8020
mesh-turbine 8030 8030
apache skywalking 8040 8040
注册中心服务(8830-8860)
服务名称 服务端口号 Docker映射端口号
mesh-eureka 8830 8830
mesh-config(spring-cloud-config) 8850 8850
alibaba nacos 8848 8848
分布式事务服务(8091-8099)
服务名称 服务端口号 Docker映射端口号
alibaba seata 8091 8091
消息中间件MQ服务(8050-8079)
服务名称 服务端口号 Docker映射端口号
roketmq-name-server 9876 9876
roketmq-broker 10909、10911 10909、10911
mesh-rocketmq-producer 8050 8050
mesh-rocketmq-consumer 8060 8060
mesh-rocketmq-console 8070 8070
全文搜索引擎Elastisearch(8700-8709)
服务名称 服务端口号 Docker映射端口号
mesh-elastisearch 8700 8700
业务服务(8610-8699)
服务名称 服务端口号 Docker映射端口号
mesh-business-service 8610 8610
mesh-order-service 8620 8620
mesh-storage-service 8630 8630
mesh-user-service 8640 8640
mesh-mybatis-service 8650 8650
MongoDB(8710-8719)
服务名称 服务端口号 Docker映射端口号
mesh-mongoDB 8710 8710
任务调度器(8720-8729)
mesh-quartz 8720 8720
全量同步(8730-8739)
服务名称 服务端口号 Docker映射端口号
mesh-quartz 8730 8730
Cassandra(8740-8744)
服务名称 服务端口号 Docker映射端口号
mesh-quartz 8730 8730
Elestic-Job(8745-8746)
服务名称 服务端口号 Docker映射端口号
mesh-quartz 8745 8745
Staturn(8747-8748)
服务名称 服务端口号 Docker映射端口号
mesh-quartz 8747 8747

版本说明

版本依赖关系

技术 说明 官网
Spring Cloud 微服务架构框架 https://spring.io/projects/spring-cloud
Spring Boot SpringBoot 框架 https://spring.io/projects/spring-boot
Netflix Eureka 服务注册与发现 https://github.com/Netflix/eureka
Alibaba Nacos 服务注册与发现 https://github.com/alibaba/nacos
Nacos Config 服务配置中心 https://github.com/alibaba/nacos
Netflix Eureka 服务注册与发现 https://github.com/Netflix/eureka
Gateway 服务网关 https://spring.io/projects/spring-cloud
Zull 服务网关 https://spring.io/projects/spring-cloud
Spring Security 认证和授权框架 https://spring.io/projects/spring-security
Oauth2.0 认证授权协议规范 https://oauth.net/2
OpenFeign 服务之间调用解决方案 https://github.com/OpenFeign/feign
Alibaba Sentinel 流量控制、熔断降级 https://github.com/alibaba/Sentinel
Alibaba Seata 分布式事务框架 https://github.com/seata/seata
Apache Skywalking 提供全链路监控 https://github.com/apache/skywalking
Jasypt 安全加密和管理 https://github.com/ulisesbocchio/jasypt-spring-boot
MyBatis ORM 框架 http://www.mybatis.org/mybatis-3/zh/index.html
MyBatisPlus ORM 增强工具 https://mp.baomidou.com/
MyBatisGenerator 数据层代码生成 http://www.mybatis.org/generator/index.html
PageHelper MyBatis 物理分页插件 http://git.oschina.net/free/Mybatis_PageHelper
Swagger-UI 文档生产工具 https://github.com/swagger-api/swagger-ui
Redis 分布式缓存 https://redis.io/
Druid 数据库连接池 https://github.com/alibaba/druid
JWT JWT 登录支持 https://github.com/auth0/java-jwt
logback 日志收集 https://github.com/logstash/logstash-logback-encoder
Lombok 简化对象封装工具 https://github.com/rzwitserloot/lombok

架构图

系统架构图

系统架构图

业务架构图

TDB

如何构建

  • 项目采用 Spring Cloud Greenwich,最低支持 JDK 1.8。
  • Maven:3.3.9+
  • Mysql:5.7+
  • Redis:3.2+

Spring Cloud 使用 Maven 来构建,最快的使用方式将本项目执行以下命令:

./mvnw clean install

执行完毕后,项目将被安装到本地 Maven 仓库。

运行

启动各服务即可,访问各服务查看对应的配置文件,格式:

spring.application.name:spring.port

参考文档 查看 WIKI

联系方式

邮箱:

willluzheng@gmail.com

willluzheng@163.com

微信: willlu_zheng

个人微信

许可证

GNU Affero General Public License v3.0

Copyright © 2019-2020 郑伟陆

About

🔥 Develop distributed application services based on SpringCloud architecture model and components

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •