[go: up one dir, main page]

Skip to content
/ lion Public

使用Gradle构建,基于Java 8/11/13、SpringBoot 2.2.6.RELEASE、SpringCloud Hoxton.SR2、Spring Cloud Alibaba 2.2.0.RELEASE、MyBatis Plus 3.3.1等核心技术体系实现的一套支持云原生的分布式微服务架构,提供OAuth2/JWT权限认证、分布式事务、灰度、限流、熔断降级、分布式锁、链路追踪、MQ等功能,支持Docker容器化部署、镜像交付、K8S容器编排

License

Notifications You must be signed in to change notification settings

micyo202/lion

Repository files navigation

Lion

lion-logo

Build Status Codecov Version Java Gradle Spring Boot Spring Cloud License MIT GitHub Stars GitHub Forks

感谢JetBrains提供的开源许可,推荐使用IntelliJ IDEA进行开发

项目镜像已经推送至Docker Hub,请前往https://hub.docker.com/u/micyo202查看/拉取

lion是基于Spring Cloud体系实现的一套分布式微服务架构,为了让中小型公司解决当下技术瓶颈,快速将现有应用服务架构拆分改造为分布式微服务架构,只需在本架构上进行相关业务开发即可,大大减少了分布式微服务架构的门槛,达到拿来就用,使架构师及开发人员不必过多的关注架构本身,只需专注于业务开发

项目采用Gradle构建,基于Java 8+、SpringBoot 2.2.6.RELEASE、SpringCloud Hoxton.SR2、Spring Cloud Alibaba 2.2.0.RELEASE、MyBatis Plus 3.3.1等核心技术体系实现的一套分布式微服务架构,包含OAuth2/JWT权限认证、支持Docker容器化部署、镜像交付、限流、灰度等

使用Nacos作为服务注册/发现、配置中心

使用Sentinel来查看近实时的接口运行状态和调用频率,并用作服务限流、熔断降级等处理,避免了分布式服务之间调用的“雪崩”效应

使用Seata作为分布式事务管理,采用AT事务模式自动完成两阶段提交/回滚

使用Spring Boot Admin来监控各个独立Service的运行状态

使用Spring Cloud Gateway作为路由网关服务

使用Zipkin / SkyWalking进行查看完整链路追踪信息等

使用Feign, 做到HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求

项目后期会不断更新与时俱进,敬请期待...

项目架构图

lion-frame

数据库表关系图

lion-database

分支说明

  • master分支,基于Java 8+重构升级优化后的最新主线版本(推荐)
  • release1.x分支,基于Java 8、SpringBoot 2.1.2.RELEASE、SpringCloud Greenwich.RELEASE、Spring Cloud Alibaba 2.1.0.RELEASE体系实现,支持Java、Scala混编,的最终版
  • eureka分支,使用 Eureka 作为服务注册发现中心(Eureka官宣2.x版本不再开源,项目使用Nacos)
  • hystrix分支,使用 Hystrix 做为服务断路器(Hystix官宣停止更新,项目使用Sentinel)
  • zuul分支,使用 Zuul 做为路由网关(由于Zuul 2.x的不断跳票,SpringCloud后续没有整合Zuul 2.x的计划,项目使用Spring Cloud Gateway)

一、项目开发环境&工具

  • MacOS / Windows
  • CentOS
  • Java 8+
  • IntelliJ IDEA / Eclipse

二、相关软件

说明:“√”表示必要服务,“X”表示非必要服务

名称 链接 必须
MySql 8.0.19 https://www.mysql.com
ElasticSearch 7.6.1 https://www.elastic.co/cn/ x
Redis 5.0.7 https://redis.io
RabbitMQ 3.8.2 https://www.rabbitmq.com
Nacos 1.1.4 https://nacos.io
Sentinel 1.7.1 https://github.com/alibaba/Sentinel
Zipkin 2.20 https://zipkin.io x
SkyWalking 6.6.0 http://skywalking.apache.org x
Seata 1.0.0 https://seata.io

注:在启动项目前,请先确保启动:MySql 8.0.19Redis 5.0.7RabbitMQ 3.8.2Nacos 1.1.4Sentinel 1.7.1Seata 1.0.06个必备服务(需把Sentinel默认端口8080改为8858

三、组件说明

  • 服务注册/发现、配置中心:Nacos
  • 服务监控:Spring Boot Admin
  • 消息队列:AMQP -> RabbitMQ
  • 负载均衡:Feign / Ribbon
  • 限流、熔断降级:Sentinel
  • 路由网关:Spring Cloud Gateway
  • 链路追踪:Spring Cloud Sletuh -> Zipkin / SkyWalking
  • 权限认证:Spring Security -> OAuth2 / JWT
  • ORM框架:MyBatis(MyBatis-Plus)
  • 数据源监控:Druid
  • RESTful APIs文档:Knife4j
  • 分布式锁:Redisson
  • 分布式事务:Seata

四、项目结构

lion -- 根目录
├── lion-admin -- 服务监控
├── lion-gateway -- 网关服务
├── lion-common -- 通用工具类
├── lion-auth -- 安全认证服务
├── lion-demo -- 示例模块
|    ├── lion-demo-provider -- 服务提供者
|    ├── lion-demo-consumer -- 服务消费者

五、项目部署

1、下载项目git clone https://github.com/micyo202/lion.git

2、进入项目根目录执行./gradlew -x test clean命令,使用Gradle初始化项目

3、初始化完毕后导入到IDE开发工具中(建议使用IntelliJ IDEA作为开发工具

4、创建3个数据库分别为lion、seata、zipkin并分别执行项目根目录下database中的**lion.sqlseata.sqlzipkin.sql**脚本,该脚本会创建项目所需的表(lion库中包含:用户表、角色表、菜单资源表等,seata库中包含:全局事务表、分支事务表、全局锁表,zipkin库中包含:链路追踪相关表)

5、参考文档中二、相关软件的内容,启动6个必备服务,否则项目无法正常运行

6、根据自己的服务器情况,修改resourcesbootstrap.yml配置中的nacos服务地址,及application.yml配置中mysql、redis、rabbitmq、sentinel的服务地址跟用户名/密码(注:可将application.yml配置文件注释打开放在项目中,或将application.yml配置文件放入nacos配置管理中

7、Windows环境需修改resourceslog4j2.yml配置中-log.pathvalue日志输出路径(注:Mac、Linux、Ubuntu环境可忽略此步骤,默认日志输出路径在/tmp/logs

8、完成以上步骤就可以正常启动部署服务了

9、项目开发详细示例代码,可参考lion-demo示例模块

10、测试方法使用postman导入项目根目录下json中的postman.json脚本即可

六、端口使用

  • Nacos(端口:8848)

  • Sentinel(端口:8858)

  • Seata(端口:8091)

  • Zipkin(端口:9411)

  • SkyWalking(端口:8900)

  • lion-admin(端口:8200)

  • lion-gateway(端口:8400)

  • lion-auth(端口:8888)

  • lion-demo

    • lion-demo-provider(端口:8601、8602、8603...)
    • lion-demo-consumer(端口:8701、8702、8703...)

七、效果预览

Nacos服务列表

nacos-server

Nacos配置列表

nacos-config

Nacos服务详情

nacos-detail

Boot Admin应用监控

admin-wallboard

Boot Admin应用列表

admin-application

Boot Admin应用详情

admin-detail

Sentinel服务限流、熔断降级

sentinel

Zipkin链路信息

zipkin-info

Zipkin链路追踪

zipkin-trace

Zipkin拓扑图

zipkin-dependencies

SkyWalking监控面板

skywalking-dashboard

SkyWalking链路追踪

skywalking-trace

SkyWalking拓扑图

skywalking-dependencies

skywalking-dependencies-link

Druid SQL监控

druid-sql

Druid URI监控

druid-uri

Druid Spring监控

druid-spring

RESTful APIs文档

knife4j-home

knife4j-apis

八、开源协议

MIT License英文原文)MIT内容与三条款BSD许可证(3-clause BSD license)内容颇为近似,但是赋予软体被授权人更大的权利与更少的限制

  • 被授权人有权利使用、复制、修改、合并、出版发行、散布、再授权及贩售软体及软体的副本
  • 被授权人可根据程式的需要修改授权条款为适当的内容
  • 在软件和软件的所有副本中都必须包含版权声明和许可声明
  • 此授权条款并非属copyleft的自由软体授权条款,允许在自由/开放源码软体或非自由软体(proprietary software)所使用
  • 此亦为MIT与BSD(The BSD license, 3-clause BSD license)本质上不同处
  • MIT条款可与其他授权条款并存。另外,MIT条款也是自由软体基金会(FSF)所认可的自由软体授权条款,与GPL相容

About

使用Gradle构建,基于Java 8/11/13、SpringBoot 2.2.6.RELEASE、SpringCloud Hoxton.SR2、Spring Cloud Alibaba 2.2.0.RELEASE、MyBatis Plus 3.3.1等核心技术体系实现的一套支持云原生的分布式微服务架构,提供OAuth2/JWT权限认证、分布式事务、灰度、限流、熔断降级、分布式锁、链路追踪、MQ等功能,支持Docker容器化部署、镜像交付、K8S容器编排

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published