感谢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请求
项目后期会不断更新与时俱进,敬请期待...
- 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.19、Redis 5.0.7、RabbitMQ 3.8.2、Nacos 1.1.4、Sentinel 1.7.1、Seata 1.0.0这6个必备服务(需把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.sql、seata.sql、zipkin.sql**脚本,该脚本会创建项目所需的表(lion库中包含:用户表、角色表、菜单资源表等,seata库中包含:全局事务表、分支事务表、全局锁表,zipkin库中包含:链路追踪相关表)
5、参考文档中二、相关软件的内容,启动6个必备服务,否则项目无法正常运行
6、根据自己的服务器情况,修改resources下bootstrap.yml配置中的nacos服务地址,及application.yml配置中mysql、redis、rabbitmq、sentinel的服务地址跟用户名/密码(注:可将application.yml配置文件注释打开放在项目中,或将application.yml配置文件放入nacos配置管理中)
7、Windows环境需修改resources下log4j2.yml配置中-log.path
的value
日志输出路径(注: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...)
MIT License(英文原文)MIT内容与三条款BSD许可证(3-clause BSD license)内容颇为近似,但是赋予软体被授权人更大的权利与更少的限制
- 被授权人有权利使用、复制、修改、合并、出版发行、散布、再授权及贩售软体及软体的副本
- 被授权人可根据程式的需要修改授权条款为适当的内容
- 在软件和软件的所有副本中都必须包含版权声明和许可声明
- 此授权条款并非属copyleft的自由软体授权条款,允许在自由/开放源码软体或非自由软体(proprietary software)所使用
- 此亦为MIT与BSD(The BSD license, 3-clause BSD license)本质上不同处
- MIT条款可与其他授权条款并存。另外,MIT条款也是自由软体基金会(FSF)所认可的自由软体授权条款,与GPL相容