3 Star 10 Fork 1

烛龙开源 / zhul

加入 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【烛龙】企业级云原生微服务框架 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/fjtnylk/zhul.git
git@gitee.com:fjtnylk/zhul.git
fjtnylk
zhul
zhul
master

搜索帮助