# Spring-Cloud-Netflix **Repository Path**: bigshen/Spring-Cloud-Netflix ## Basic Information - **Project Name**: Spring-Cloud-Netflix - **Description**: 基于Srping Cloud一系列组件实现高可用的微服务架构。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-19 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Spring-Cloud-Sleuth #### 介绍 **基于Srping Cloud一系列组件实现高可用的微服务架构。** * 基于Ribbon实现客户端负载均衡; * 基于OpenFeign实现面向服务的接口调用; * 基于Eureka实现服务注册中心; * 基于Config实现服务的配置中心; * 基于Hystrix、Hystrix Dashboard实现服务的熔断、超时、资源隔离的降级及监控; * 基于Gateway实现网关路由; * 基于Sleuth、Zipkin实现链路监控及可视化; ### 组件介绍: * shen-mall-commons : 基础工具包,提供统一泛型返回结果R、提供基本异常定义 * shen-mall-goods-service-8083: 商品服务 集成ribbon来实现负载均衡; 集成openfeign来实现面向服务的接口调用; 集成sleuth、zipkin来实现链路的监控; 集成eureka-client来作为注册中心的客户端; 依赖Mybatis进行数据库交互; 依赖lombok、mapstruct工具包简化开发,mapstruct进行Bean的拷贝,Do2Vo、Dto2Do等的转换; * shen-mall-order-service-8082:订单服务 集成ribbon来实现负载均衡; 集成openfeign来实现面向服务的接口调用; 集成sleuth、zipkin来实现链路的监控; 集成eureka-client来作为注册中心的客户端; 依赖Mybatis进行数据库交互; 依赖lombok、mapstruct工具包简化开发,mapstruct进行Bean的拷贝,Do2Vo、Dto2Do等的转换; * spring-cloud-gateway-8080:网关服务 集成gateway进行网关路由; 集成Redis进行网关的动态路由、持久化操作; 集成sleuth、zipkin来实现链路的监控; 集成eureka-client来作为注册中心的客户端; * spring-cloud-hystrix-dashboard-9092: 提供可视化的熔断界面服务 * spring-cloud-netflix-eureka-server-9090:注册中心server * spring-cloud-user-service-8081 集成ribbon来实现负载均衡; 集成openfeign来实现面向服务的接口调用; 集成hystrix来实现服务熔断降级、超时降级、资源隔离等; 集成eureka-client来作为注册中心的客户端; #### 启动方式 订单order、商品goods服务依赖mysql;网关gateway服务动态路由持久化依赖redis;链路监控依赖zipkin服务;服务启用前需要这些基础服务。 1. 启动 注册中心 eureka 9090服务 2. 启动 网关路由 gateway 8080服务 3. 启动 用户user、订单order、商品goods 服务,此处可以启动多端口创建服务集群,进行Ribbon、Openfeign的负载均衡调用 4. 启动 Hystrix Dashboard 来监控服务降级策略 5. 启动 Zipkin 进行可视化的链路监控 #### 使用说明 体验点:负载均衡、面向服务的Restful接口调用、熔断_超时_资源隔离降级、网关路由等 * 测试网关路由入口:spring-cloud-gateway-8080 a. 测试下单流程链路监控,入口为 [http://localhost:8080/shen-mall/order](http://localhost:8080/shen-mall/order),会通过网关路由至订单服务的 /order 接口; b. 测试自定义断言Predicate、过滤器Filter、负载均衡、动态路由及持久化,需要启用 `application_bak.yml` 配置; * 测试链路监控入口:shen-mall-order-service-8082服务的`Post` `/order`接口 * 测试熔断入口:spring-cloud-user-service-8081 用户服务 HystrixController 定义了针对接口级别的熔断降级和超时降级; application.yml 内定义了全局的超时降级、针对openfeign具体接口的资源隔离(线程池/信号量隔离),可以结合Apache Jmeter进行压力测试、结合hystrix-dashboard进行限流监控 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)