加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Zhul【烛龙】企业级云原生微服务框架

简介

Zhul【烛龙】企业级云原生微服务基础架构,围绕Discovery【探索】框架打造,基于Spring Cloud Discovery服务注册发 现、Ribbon负载均衡、Feign和RestTemplate调用等组件全方位增强的企业级云原生微服务开源解决方案,面向企业级生产需求精雕 细琢,赋能和助力企业快速搭建基础架构的底层云原生微服务框架,有效的降低企业的落地成本。整个架构体系打造,遵循最严格的 Maven对称结构和规范,最严格的命名格式,给予使用者最舒适的使用体验

主要功能

  • 服务限流降级:支持阿里巴巴Sentinel熔断限流降级权限中间件
  • 服务注册与发现:支持阿里巴巴Nacos、Eureka、Consul和Zookeeper四个服务注册发现中心
  • 分布式配置管理:支持阿里巴巴Nacos、携程Apollo和Redis三个远程配置中心
  • 消息驱动能力:基于 Spring Cloud Stream 为微服务应用构建消息驱动能力
  • 分布式事务:支持阿里巴巴Seata,使用 @GlobalTransactional 注解, 高效并且对业务零侵入地解决分布式事务问题
  • 分布式追踪:支持OpenTracing和OpenTelemetry规范下的调用链中间件,Jaeger、SkyWalking和Zipkin等
  • 分布式数据库:支持Sharding数据中间件,实现读写分离、分库分表等
  • 分布式缓存:支持Redis、Memcached中间件实现分布式缓存
  • 分布式锁:支持Redis、Zookeeper中间件实现分布式锁

应用功能

  • 支持蓝绿灰度发布、路由过滤、流量权重、限流、熔断、降级、隔离、监控、追踪等企业生产级功能
  • 支持动态域名、双云双活和SET单元化的配置,支持跨云的服务注册和配置读取(例如,阿里云上的微服务想要注册到华为云上 的Nacos注册中心,或者跨云读取Apollo配置中心的配置,通过DevOps修改相关配置驱动即可)。一套SDK体系可以同时适配和 运行在不同的云上
  • 支持动态配置上实现同类型的组件的快速切换(例如,Eureka注册中心切换到Consul,Apollo配置中心切换到Nacos 等),但同类型组件不可并存使用(例如,Eureka和Consul注册中心不可同时并存,Apollo和Nacos配置中心不可同时并存等)
  • 支持框架层面实现每个组件对四个环境(DEV | FAT | UAT | PRO)的内置最佳配置,遵循全局公共配置和局部环境配置相结合的 方式,遵循“约定大于配置”的策略,业务层面实现微量配置甚至零配置。框架集成人员可以内置定制化的配置,业务开发人员在 业务层可以把内置的配置覆盖掉,达到扩展性强、灵活使用的目的
  • 支持业务开发人员使用该框架的时候,对其尽最大可能屏蔽一切跟Spring Cloud和中间件有关的代码书写、配置参数、环境地址 等,零Spring Cloud经验的业务开发人员也可以快速上手研发基于Spring Cloud微服务技术栈的业务服务,最大程度上减轻业务人 员的压力

如何构建

使用方式是将本项目 clone 到本地,然后执行以下命令:

mvn clean install -DskipTests

执行完毕后,项目将被安装到本地 Maven 仓库。

如何使用

引入依赖

如果需要使用已发布的版本,在 dependencyManagement 中添加如下配置。

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.zhul.cloud</groupId>
            <artifactId>zhul-dependencies</artifactId>
            <version>${zhul.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

然后在 dependencies 中添加自己所需使用的依赖即可使用。

引入Jar

① 微服务引入

<dependency>
    <groupId>com.zhul.cloud</groupId>
    <artifactId>zhul-framework-starter-service</artifactId>
    <version>${zhul.version}</version>
</dependency>

② 微应用引入

<dependency>
    <groupId>com.zhul.cloud</groupId>
    <artifactId>zhul-framework-starter-api</artifactId>
    <version>${zhul.version}</version>
</dependency>

③ Spring Cloud Gateway网关引入

<dependency>
    <groupId>com.zhul.cloud</groupId>
    <artifactId>zhul-framework-starter-gateway</artifactId>
    <version>${zhul.version}</version>
</dependency>

添加注解

下面注解封装了标准Spring Boot、Spring Cloud、服务注册发现等多个注解,可以有效的降低业务使用成本

① 微服务引入

@EnableZhulService
public class ZhulApplication {
public static void main(String[] args) {
new SpringApplicationBuilder(ZhulApplication.class).run(args);
  }
}

② 微应用引入

@EnableZhulApplication
public class ZhulApplication {
public static void main(String[] args) {
new SpringApplicationBuilder(ZhulApplication.class).run(args);
  }
}

③ Spring Cloud Gateway网关引入

@EnableZhulGateway
public class ZhulApplication {
public static void main(String[] args) {
new SpringApplicationBuilder(ZhulApplication.class).run(args);
  }
}

添加配置

由于大量配置已经内置到框架里,除了服务名和端口号之外,业务层原则上不需要再添加Spring Cloud和中间件其它配置,当然也可 以覆盖掉默认内置的配置。内置配置文件支持Spring标准占位符用法

*小诀窍:为了避免引起业务层的配置无法覆盖掉默认内置的配置,请在bootstrap.properties定义想要覆盖的配置

应用启动

跟原生的Spring Boot应用程序启动方式一致

演示 Demo

为了演示如何使用,Zhul项目包含了一个子模块zhul-examples。此模块中提供了演示用的 example ,您可以阅读对应的 example 工程下的 readme 文档,根据里面的步骤来体验。

Example 列表:

Database Example

Cache Example

Config Example

Log Example

Transaction Example

Stream Example

空文件

简介

Zhul【烛龙】企业级云原生微服务框架 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化