基于SpringCloud体系实现的一套支持云原生的分布式微服务架构,提供OAuth2/JWT权限认证、分布式事务、灰度、限流、链路追踪等功能,支持Docker容器化部署、镜像交付、K8S容器编排

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: lion是基于Spring Cloud体系实现的一套支持云原生的分布式微服务架构,为了让中小型公司解决当下技术瓶颈,快速将现有应用服务架构拆分改造为分布式微服务架构,进入 All-in-Cloud 时代,只需在本架构上进行相关业务开发即可,大大减少了分布式微服务架构的门槛,仅在本框架上做"减法"的目的,使架构师及开发人员不必过多的关注架构本身,只需专注于业务开发

Lion 项目简介
项目已托管至Github,请前往https://github.com/micyo202/lion查看源码
项目镜像已经推送至Docker Hub,请前往https://hub.docker.com/u/micyo202查看/拉取

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

lion是基于Spring Cloud体系实现的一套支持云原生的分布式微服务架构,为了让中小型公司解决当下技术瓶颈,快速将现有应用服务架构拆分改造为分布式微服务架构,进入 All-in-Cloud 时代,只需在本架构上进行相关业务开发即可,大大减少了分布式微服务架构的门槛,仅在本框架上做"减法"的目的,使架构师及开发人员不必过多的关注架构本身,只需专注于业务开发

项目采用 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容器编排

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

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

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

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

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

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

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

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

分支说明
master分支,支持Java 8/11/13重构升级优化后的最新版(推荐)
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/11/13
IntelliJ IDEA / Eclipse
二、相关软件
说明:“√”表示必要服务,“X”表示非必要服务

名称 链接 必须
MySql 8.0.19 https://www.mysql.com
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
Seata 1.0.0 https://seata.io
Zipkin 2.20 https://zipkin.io x
SkyWalking 6.6.0 http://skywalking.apache.org x
ElasticSearch 7.6.1 https://www.elastic.co/cn/ x
注:在启动项目前,请先确保启动: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 --depth 1 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、完成以上步骤就可以正常启动部署服务了

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

9、测试方法使用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...)

2023-02-10 14.54.55.jpg
IMAGE 2023-02-10 14:54:48.jpg
IMAGE 2023-02-10 14:54:12.jpg
截屏2023-02-10 14.45.45.png

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
16天前
|
SQL Kubernetes 监控
微服务从代码到k8s部署应有尽有系列(九、事务精讲)
微服务从代码到k8s部署应有尽有系列(九、事务精讲)
微服务从代码到k8s部署应有尽有系列(九、事务精讲)
|
16天前
|
存储 监控 Go
带你十天轻松搞定 Go 微服务系列(九、链路追踪)
带你十天轻松搞定 Go 微服务系列(九、链路追踪)
|
16天前
|
Kubernetes jenkins 持续交付
微服务从代码到k8s部署应有尽有系列(十四、部署环境搭建)
微服务从代码到k8s部署应有尽有系列(十四、部署环境搭建)
|
16天前
|
Kubernetes 监控 中间件
微服务从代码到k8s部署应有尽有系列全集
微服务从代码到k8s部署应有尽有系列全集
|
16天前
|
消息中间件 Kubernetes Kafka
微服务从代码到k8s部署应有尽有系列(八、各种队列)
微服务从代码到k8s部署应有尽有系列(八、各种队列)
|
16天前
|
Kubernetes NoSQL API
微服务从代码到k8s部署应有尽有系列(五、民宿服务)
微服务从代码到k8s部署应有尽有系列(五、民宿服务)
|
16天前
|
Prometheus 监控 Kubernetes
微服务从代码到k8s部署应有尽有系列(十三、服务监控)
微服务从代码到k8s部署应有尽有系列(十三、服务监控)
|
16天前
|
Kubernetes 监控 API
微服务从代码到k8s部署应有尽有系列(十二、链路追踪)
微服务从代码到k8s部署应有尽有系列(十二、链路追踪)
|
16天前
|
Kubernetes 前端开发 API
微服务从代码到k8s部署应有尽有系列(十、错误处理)
微服务从代码到k8s部署应有尽有系列(十、错误处理)
|
16天前
|
Kubernetes jenkins 持续交付
微服务从代码到k8s部署应有尽有大结局(k8s部署)
微服务从代码到k8s部署应有尽有大结局(k8s部署)

相关产品

  • 容器服务Kubernetes版