GithubHelp home page GithubHelp logo

jianyongjie / lion Goto Github PK

View Code? Open in Web Editor NEW

This project forked from micyo202/lion

0.0 1.0 0.0 41.13 MB

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

License: MIT License

Dockerfile 1.41% Java 88.58% Scala 2.99% PLpgSQL 4.97% Shell 0.32% TSQL 1.74%

lion's Introduction

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

  • master分支,使用 Nacos 作为服务注册/发现、配置中心;使用Sentinel作为流量监控、服务降级、熔断处理。
  • eureka分支,使用 Eureka 作为服务注册发现中心。
  • hystrix分支,使用 Hystrix 做为服务降级、熔断处理。

本项目是使用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进行自动化测试代码的覆盖率。

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

近期更新

2019-09-06:更新 Zuul 路由模块,移除不必要的代码,添加 token 检查机制,优化模块代码

2019-09-03:更新 Nacos,移除 Hystrix,采用 Sentinel 进行流量监控、服务熔断降级

2019-08-09:添加定时任务功能,仅需在配置表 sys_schedule 中配置相关任务Bean方法,即可按配置的 cron 来执行

2019-06-30:添加HDFS相关操作API

2019-05-15:添加分布式锁,在需要上锁的方法上使用注解@Locker即可,该分布式锁是基于Redisson实现的,请参考:https://github.com/redisson/redisson/wiki

2019-05-05:添加双buffer分布式自增ID算法服务lion-id,支持高并发。设计思路来自:一线大厂的分布式唯一ID生成方案是什么样的?

项目架构图

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.3.1 https://gradle.org

三、组件说明

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

四、项目树结构

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

五、项目准备

六、项目部署

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下的示例模块

七、服务启动

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

  • lion-admin-server(端口:8200)
  • lion-zuul-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...)
    • lion-demo-ribbon(端口:8781)
    • lion-demo-sample(端口:8782)

八、效果预览

服务注册/发现、配置中心

nacos-config

服务详情

nacos-details

服务监控

admin-wallboard

服务监控详情

admin-details

限流、熔断降级

sentinel

链路追踪服务

zipkin

数据源监控

druid

API 文档

swagger

九、许可证

MIT License

lion's People

Contributors

micyo202 avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.