注:该项目是基于SpringCloud微服务架构的,若要使用基于Dubbo的RPC架构项目请查看本人yan项目,前往地址:https://github.com/micyo202/yan
- master分支,使用 Nacos 作为服务注册/发现、配置中心;使用Sentinel作为流量监控、服务降级、熔断处理;使用Spring Cloud Gateway作为路由网关。
- eureka分支,使用 Eureka 作为服务注册发现中心。
- hystrix分支,使用 Hystrix 做为服务降级、熔断处理。
- zuul分支,使用 Zuul 做为路由网关。
本项目是使用Gradle构建,基于SpringBoot 2.1.2.RELEASE、SpringCloud Greenwich.RELEASE体系实现的一套完整微服务架构,采用OAuth2统一授权认证,支持Java、Scala混编、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进行自动化测试代码的覆盖率。
项目后期会不断更新与时俱进,敬请期待...
网上有关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 -- 服务消费者
-
在运行该项目前,请确保先正常启动:Nacos 1.1.0、Sentinel 1.6.3、RabbitMQ 3.7.9、MySql 8.0.13、Redis 5.0.2这5个必备服务,否则项目无法运行
-
建议使用IntelliJ IDEA作为IDE开发工具(注:该工具需要购买,激活步骤详情可参考我个人简书上的方法,请移步至https://www.jianshu.com/p/3c87487e7121)
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...)