Skip to content
/ lion Public
forked from micyo202/lion

使用Gradle构建,基于SpringBoot 2.1.2.RELEASE、SpringCloud Greenwich.RELEASE体系实现的微服务架构,采用OAuth2统一授权认证,支持Java、Scala混编、Docker容器部署、限流、灰度等

License

Notifications You must be signed in to change notification settings

shuaigaoa/lion

 
 

Repository files navigation

Lion

logo

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

注:该项目是基于SpringCloud微服务架构的,若要使用基于Dubbo的RPC架构项目请查看本人yan项目,前往地址:https://github.com/micyo202/yan


本项目是使用Gradle构建,基于SpringBoot 2.1.2.RELEASE、SpringCloud Greenwich.RELEASE体系实现的一套完整微服务架构,采用OAuth2统一授权认证,支持JavaScala混编、Docker容器化部署、限流灰度等,规划将包含大数据区块链等相关模块。

利用Spring Boot Admin来监控各个独立Service的运行状态,利用Sentinel来查看近实时的接口运行状态和调用频率,利用Zipkin进行查看链路跟踪等。

基于Nacos来实现的服务注册与调用,在SpringCloud中使用Feign, 我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。

因为采取了服务的分布,为了避免服务之间的调用“雪崩”,采用了Sentinel的作为熔断器,避免了服务之间的“雪崩”效应。

项目整合了 spring-boot 2.1.2 + jpa + mybatis + pagehelper框架。

项目使用Travis CI进行持续性CI,保证了最新提交代码的build passing,使用Codecov进行自动化测试代码的覆盖率。

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

更新日志

项目架构图

frame

数据库表关系图

database

说明

网上有关SpringCloud的教程很多,相关的项目也很多,但很少有完整的项目,即便有也是基于1.x的版本,在这个技术迭代更新发展速度飞快的时代,这样的项目不利于实际开发和落地。因此lion诞生了,它是一套基于2.x的完整微服务体系架构,几乎包含了微服务所有常用组件,为了让中小型公司解决当下技术瓶颈,快速将现有技术架构拆分改造为微服务体系架构,只需在本框架上进行相关业务开发即可,大大减少了微服务架构的门槛,达到拿来就用,使架构师及开发人员不用过多的关注架构本身,只需专注业务开发即可。

若首次接触微服务或对微服务不熟悉请先查看本人整理的微服务相关介绍

一、项目开发环境&工具

  • MacOS Mojave / Windows 10
  • CentOS 7
  • JDK 1.8
  • Scala 2.11.12
  • IntelliJ IDEA 2018.3 / Eclipse 2018-12

二、相关软件

名称 链接 使用
MySql 8.0.13 https://www.mysql.com
MongoDB 4.0.4 http://www.mongodb.org ×
Redis 5.0.2 https://redis.io
Elasticsearch 6.5.2 https://www.elastic.co/cn/
Kibana 6.5.2 https://www.elastic.co/cn/
Logstash 6.5.2 https://www.elastic.co/cn/
Solr 7.5.0 http://lucene.apache.org/solr/ ×
RabbitMQ 3.7.9 https://www.rabbitmq.com
Zookeeper 3.4.13 https://zookeeper.apache.org
Kafka 2.1.0 http://kafka.apache.org ×
Hadoop 3.1.1 http://hadoop.apache.org
Hbase 2.1.1 https://hbase.apache.org
Hive 3.1.1 http://hive.apache.org ×
Spark 2.4.0 http://spark.apache.org
Gradle 5.6.3 https://gradle.org

三、组件说明

  • 服务注册/发现、配置中心: nacos
  • 服务监控:spring boot admin
  • 消息队列:amqp -> rabbitmq
  • 负载均衡:feign / ribbon
  • 限流、熔断降级: sentinel
  • 路由网关:gateway
  • 链路追踪:spring cloud sletuh -> zipkin
  • 安全认证:spring security -> oauth2
  • ORM框架:mybatis + jpa
  • 数据源监控:druid
  • api文档输出:swagger2
  • 分布式锁:redis
  • 分布式事物:待实现

四、项目树结构

lion -- 根目录
├── lion-admin-server -- 服务监控
├── lion-gateway-server -- 路由服务
├── lion-zipkin-server -- 链路追踪服务
├── lion-common -- 通用工具类模块
├── lion-upms -- 用户权限管理系统
├── lion-auth -- 安全认证服务器
├── lion-id -- 自增ID生成服务
├── lion-bigdata -- 大数据模块
├── lion-blockchain -- 区块链模块
├── lion-demo -- 示例代码模块(包含灰度、权限认证、scala混编等)
|    ├── lion-demo-provider -- 服务提供者
|    ├── lion-demo-consumer -- 服务消费者

五、项目准备

六、项目部署

1.下载项目,并且导入到IDE开发工具中

2.使用 Gradle 构建项目

3.创建2个数据库分别为 lion、zipkin 并分别执行根目录 database 中的 lion.sql、zipkin.sql 文件,创建整个项目必要的表(如:用户表、权限表、菜单资源表等...)

4.根据自己服务情况,修改项目中 resources/bootstrap.yml 配置下 nacos 的服务地址

5.将项目中的所有 resources/application.yml 配置文件注释放开(或使用nacos配置中心进行管理),并修改其datasource druid数据库连接信息

6.修改项目的 resources/log4j2.yml 配置文件中的 -log.path value 日志输出路径

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

8.项目开发详细代码,可参考lion-demo下的示例模块

9.测试方法使用postman导入postman.json脚本即可

七、服务启动

注:带删除线的服务为相关示例模块可根据需要选择启动

  • lion-admin-server(端口:8200)
  • lion-gateway-server(端口:8400)
  • lion-zipkin-server(端口:9411)
  • lion-upms(端口:8800)
  • lion-auth(端口:8888)
  • lion-id(端口:8899)
  • lion-bigdata(端口:8801)
  • lion-blockchain (端口:8802)
  • lion-demo(相关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-relation

Druid SQL监控

druid-sql

Druid URI监控

druid-uri

Druid Spring监控

druid-spring

Swagger2 API文档

swagger2-api

九、许可证

MIT License

About

使用Gradle构建,基于SpringBoot 2.1.2.RELEASE、SpringCloud Greenwich.RELEASE体系实现的微服务架构,采用OAuth2统一授权认证,支持Java、Scala混编、Docker容器部署、限流、灰度等

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 91.9%
  • PLpgSQL 4.0%
  • Scala 2.0%
  • TSQL 1.2%
  • Other 0.9%