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

简介: 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

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
9月前
|
人工智能 运维 安全
配置驱动的动态 Agent 架构网络:实现高效编排、动态更新与智能治理
本文所阐述的配置驱动智能 Agent 架构,其核心价值在于为 Agent 开发领域提供了一套通用的、可落地的标准化范式。
4554 114
|
9月前
|
人工智能 安全 数据可视化
配置驱动的动态Agent架构网络:实现高效编排、动态更新与智能治理
本文系统性地提出并阐述了一种配置驱动的独立运行时Agent架构,旨在解决当前低代码/平台化Agent方案在企业级落地时面临困难,为Agent开发领域提供了一套通用的、可落地的标准化范式。
682 18
配置驱动的动态Agent架构网络:实现高效编排、动态更新与智能治理
|
8月前
|
机器学习/深度学习 人工智能 缓存
面向边缘通用智能的多大语言模型系统:架构、信任与编排——论文阅读
本文提出面向边缘通用智能的多大语言模型(Multi-LLM)系统,通过协同架构、信任机制与动态编排,突破传统边缘AI的局限。融合合作、竞争与集成三种范式,结合模型压缩、分布式推理与上下文优化技术,实现高效、可靠、低延迟的边缘智能,推动复杂场景下的泛化与自主决策能力。
712 3
面向边缘通用智能的多大语言模型系统:架构、信任与编排——论文阅读
|
9月前
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
943 3
|
11月前
|
人工智能 监控 数据可视化
企业级LLMOps落地指南:蜂巢架构×可视化编排实战
本文将基础的单应用扩展成多应用,并实现工作流组件,包括:多应用模块设计、工作流模块设计、LangGraph实现图应用、前端Vue-Flow组件使用、工作流转LLM工具设计思路、关联工作流登技巧。
526 3
企业级LLMOps落地指南:蜂巢架构×可视化编排实战
|
10月前
|
运维 Cloud Native Docker
Docker:重塑现代应用交付的基石
Docker:重塑现代应用交付的基石
|
10月前
|
安全 持续交付 Docker
Docker:重塑现代软件交付的容器引擎
Docker:重塑现代软件交付的容器引擎
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
348 1
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
446 0
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
|
监控 Kubernetes Cloud Native
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。

相关产品

  • 容器服务Kubernetes版