diff --git a/dev-protocol-springcloud/SpringCloud项目介绍.md b/dev-protocol-springcloud/SpringCloud项目介绍.md index 1cf5fc2..8f585e7 100644 --- a/dev-protocol-springcloud/SpringCloud项目介绍.md +++ b/dev-protocol-springcloud/SpringCloud项目介绍.md @@ -1,5 +1,8 @@ # 项目大致说明 - +- 微服务注册与配置中心 - (Alibaba Nacos) + - [dev-protocol-springcloud-nacos](dev-protocol-springcloud-nacos) +- 微服务应用监控 - (SpringBoot Admin) + - [dev-protocol-springcloud-admin](dev-protocol-springcloud-admin) - 微服务通信 - (RestTemplate/Ribbon/Feign/OpenFeign) - [dev-protocol-springcloud-communication](dev-protocol-springcloud-communication) - 微服务网关 - (Gateway) diff --git a/dev-protocol-springcloud/dev-protocol-springcloud-admin/SpringBoot-Admin.md b/dev-protocol-springcloud/dev-protocol-springcloud-admin/SpringBoot-Admin.md new file mode 100644 index 0000000..02d6a79 --- /dev/null +++ b/dev-protocol-springcloud/dev-protocol-springcloud-admin/SpringBoot-Admin.md @@ -0,0 +1,57 @@ +## 1. 搭建 SpringBoot Admin 监控服务器 + +- 认识 SpringBoot Actuator + - Actuator Endpoints(端点) + - Endpoints 是 Actuator 的核心部分, 它用来监视应用程序及交互, SpringBoot Actuator 内置了很多 Endpoints, 并支持扩展 + - SpringBoot Actuator 提供的原生端点有三类: + - 应用配置类:自动配置信息、Spring Bean 信息、yml 文件信息、环境信息等等 + - 度量指标类:主要是运行期间的动态信息,例如堆、健康指标、metrics 信息等等 + - 操作控制类:主要是指 shutdown,用户可以发送一个请求将应用的监控功能关闭 +--- + +- 搭建 SpringBoot Admin 监控服务器 + - 搭建监控服务器的步骤 + - 添加 SpringBoot Admin Starter 自动配置依赖 + - spring-boot-admin-starter-server + - 添加启动注解:@EnableAdminServer +--- + +- SpringBoot Admin 的访问地址: 127.0.0.1:7001/dev-protocol-springcloud-admin +- 其他要被监控的服务加入 +```yml +spring: + # ... + cloud: + nacos: + discovery: + enabled: true + server-addr: 127.0.0.1:8848 + namespace: 1bc13fd5-843b-4ac0-aa55-695c25bc0ac6 + metadata: + management: + context-path: ${server.servlet.context-path}/actuator + + # 暴露端点 + management: + endpoints: + web: + exposure: + include: '*' # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 *, 可以开放所有端点 + endpoint: + health: + show-details: +``` +## 2. 监控中心服务器添加安全访问控制 +- 要记住要户名和密码, 防止之后忘记用户名和密码 + +## 3. SpringBoot Admin 应用监控总结 + +- 自定义告警 + - 需要有邮箱服务器, 来进行使用邮件告警 + - 其他的定制可以自己通过 AbstractEventNotifier 进行定制 + + + + + + diff --git a/dev-protocol-springcloud/dev-protocol-springcloud-admin/pom.xml b/dev-protocol-springcloud/dev-protocol-springcloud-admin/pom.xml new file mode 100644 index 0000000..e1c0483 --- /dev/null +++ b/dev-protocol-springcloud/dev-protocol-springcloud-admin/pom.xml @@ -0,0 +1,91 @@ + + + 4.0.0 + + org.example + dev-protocol + 1.0-SNAPSHOT + ../../pom.xml + + + dev-protocol-springcloud-admin + 1.0-SNAPSHOT + jar + + + dev-protocol-springcloud-admin + 监控服务器 + + + 8 + 8 + UTF-8 + + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + + de.codecentric + spring-boot-admin-starter-server + 2.2.0 + + + + org.springframework.boot + spring-boot-starter-security + + + org.projectlombok + lombok + + + + + + + + + ${artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + + \ No newline at end of file diff --git a/dev-protocol-springcloud/dev-protocol-springcloud-admin/src/main/java/org/example/AdminApplication.java b/dev-protocol-springcloud/dev-protocol-springcloud-admin/src/main/java/org/example/AdminApplication.java new file mode 100644 index 0000000..b6db004 --- /dev/null +++ b/dev-protocol-springcloud/dev-protocol-springcloud-admin/src/main/java/org/example/AdminApplication.java @@ -0,0 +1,16 @@ +package org.example; + +import de.codecentric.boot.admin.server.config.EnableAdminServer; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + *

监控中心服务器启动入口

+ * */ +@EnableAdminServer +@SpringBootApplication +public class AdminApplication { + public static void main(String[] args) { + SpringApplication.run(AdminApplication.class, args); + } +} \ No newline at end of file diff --git a/dev-protocol-springcloud/dev-protocol-springcloud-admin/src/main/java/org/example/conf/SecuritySecureConfig.java b/dev-protocol-springcloud/dev-protocol-springcloud-admin/src/main/java/org/example/conf/SecuritySecureConfig.java new file mode 100644 index 0000000..057b7a4 --- /dev/null +++ b/dev-protocol-springcloud/dev-protocol-springcloud-admin/src/main/java/org/example/conf/SecuritySecureConfig.java @@ -0,0 +1,60 @@ +package org.example.conf; + +import de.codecentric.boot.admin.server.config.AdminServerProperties; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; +import org.springframework.security.web.csrf.CookieCsrfTokenRepository; + +/** + *

配置安全认证, 以便其他的微服务可以注册

+ * 参考 Spring Security 官方 + * */ +@Configuration +public class SecuritySecureConfig extends WebSecurityConfigurerAdapter { + + /** 应用上下文路径 */ + private final String adminContextPath; + + public SecuritySecureConfig(AdminServerProperties adminServerProperties) { + + this.adminContextPath = adminServerProperties.getContextPath(); + } + + @Override + protected void configure(HttpSecurity http) throws Exception { + + // 成功授权后的 successHandler 的处理 + SavedRequestAwareAuthenticationSuccessHandler successHandler = + new SavedRequestAwareAuthenticationSuccessHandler(); + + successHandler.setTargetUrlParameter("redirectTo"); + successHandler.setDefaultTargetUrl(adminContextPath + "/"); + + http.authorizeRequests() + // 1. 配置所有的静态资源和登录页可以公开访问 + .antMatchers(adminContextPath + "/assets/**").permitAll() + .antMatchers(adminContextPath + "/login").permitAll() + // 2. 其他请求, 必须要经过认证 + .anyRequest().authenticated() + .and() + // 3. 配置登录和登出路径 + .formLogin().loginPage(adminContextPath + "/login") + .successHandler(successHandler) + .and() + .logout().logoutUrl(adminContextPath + "/logout") + .and() + // 4. 开启 http basic 支持, 其他的服务模块注册时需要使用 + .httpBasic() + .and() + // 5. 开启基于 cookie 的 csrf 保护 + .csrf() + .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()) + // 6. 忽略这些路径的 csrf 保护以便其他的模块可以实现注册 + .ignoringAntMatchers( + adminContextPath + "/instances", + adminContextPath + "/actuator/**" + ); + } +} diff --git a/dev-protocol-springcloud/dev-protocol-springcloud-admin/src/main/java/org/example/notifier/QNotifier.java b/dev-protocol-springcloud/dev-protocol-springcloud-admin/src/main/java/org/example/notifier/QNotifier.java new file mode 100644 index 0000000..e58384d --- /dev/null +++ b/dev-protocol-springcloud/dev-protocol-springcloud-admin/src/main/java/org/example/notifier/QNotifier.java @@ -0,0 +1,44 @@ +package org.example.notifier; + +import de.codecentric.boot.admin.server.domain.entities.Instance; +import de.codecentric.boot.admin.server.domain.entities.InstanceRepository; +import de.codecentric.boot.admin.server.domain.events.InstanceEvent; +import de.codecentric.boot.admin.server.domain.events.InstanceStatusChangedEvent; +import de.codecentric.boot.admin.server.notify.AbstractEventNotifier; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; +import reactor.core.publisher.Mono; + +/** + *

自定义告警

+ * */ +@Slf4j +@Component +@SuppressWarnings("all") +public class QNotifier extends AbstractEventNotifier { + protected QNotifier(InstanceRepository repository) { + super(repository); + } + + /** + *

实现对事件的通知

+ * */ + @Override + protected Mono doNotify(InstanceEvent event, Instance instance) { + + return Mono.fromRunnable(() -> { + + if (event instanceof InstanceStatusChangedEvent) { + // todo 当状态发生改变的时候, 后面自己设置发送邮件或者短信啥的 + log.info("Instance Status Change: [{}], [{}], [{}]", + instance.getRegistration().getName(), event.getInstance(), + ((InstanceStatusChangedEvent) event).getStatusInfo().getStatus()); + } else { + log.info("Instance Info: [{}], [{}], [{}]", + instance.getRegistration().getName(), event.getInstance(), + event.getType()); + } + + }); + } +} diff --git a/dev-protocol-springcloud/dev-protocol-springcloud-admin/src/main/resources/bootstrap.yml b/dev-protocol-springcloud/dev-protocol-springcloud-admin/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..1186c29 --- /dev/null +++ b/dev-protocol-springcloud/dev-protocol-springcloud-admin/src/main/resources/bootstrap.yml @@ -0,0 +1,56 @@ +server: + port: 7001 + servlet: + context-path: /dev-protocol-springcloud-admin + +spring: + application: + name: dev-protocol-springcloud-admin + # 添加访问控制 + security: + user: + name: baiye-test + password: 88888888 + cloud: + nacos: + discovery: + enabled: true + server-addr: 127.0.0.1:8848 + namespace: 1bc13fd5-843b-4ac0-aa55-695c25bc0ac6 + metadata: + management: + context-path: ${server.servlet.context-path}/actuator + # 添加访问控制 和上面配置的保持一致 + user.name: baiye-test + user.password: 88888888 + # vue 的检查配置 + thymeleaf: + check-template: false + check-template-location: false + # 被监控的应用状态变更为 DOWN、OFFLINE、UNKNOWN 时, 会自动发出告警: 实例的状态、原因、实例地址等信息 + # 需要在 pom.xml 文件中添加 spring-boot-starter-mail 依赖 + # 配置发送告警的邮箱服务器 + # 但是, 这个要能连接上, 否则会报错 + # mail: + # host: qinyi.imooc.com + # username: qinyi@imooc.com + # password: QinyiZhang + # default-encoding: UTF-8 + # 监控告警通知 +# boot: +# admin: +# notify: +# mail: +# from: ${spring.mail.username} +# to: qinyi@imooc.com +# cc: qinyi@imooc.com + +# 暴露端点 +management: + endpoints: + web: + exposure: + include: '*' # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 *, 可以开放所有端点 + endpoint: + health: + show-details: always diff --git a/dev-protocol-springcloud/dev-protocol-springcloud-communication/微服务通信方案.md b/dev-protocol-springcloud/dev-protocol-springcloud-communication/微服务通信方案.md index 2f76f0a..7ca0854 100644 --- a/dev-protocol-springcloud/dev-protocol-springcloud-communication/微服务通信方案.md +++ b/dev-protocol-springcloud/dev-protocol-springcloud-communication/微服务通信方案.md @@ -80,6 +80,11 @@ ## 5. 通过 Feign 的原生 API 解析其实现原理 - ![Feign实现流程图.png](pic/Feign实现流程图.png) +## 6. 微服务通信总结 +- Rest、Ribbon、OpenFeign 一步步的演进过程 + - Rest: 需要写死服务的 ip 和端口(可以通过注册中心手动获取),灵活性低 + - Ribbon: 提供基于 RestTemplate 的 HTTP 客户端并且支持服务负载均衡功能 + - OpenFeign: 基于 Ribbon,只需要使用注解和接口的配置即可完成对服务提供方的接口绑定 ## OpenFeign 核心源码解析 diff --git a/dev-protocol-springcloud/dev-protocol-springcloud-nacos/Alibaba-Nacos.md b/dev-protocol-springcloud/dev-protocol-springcloud-nacos/Alibaba-Nacos.md new file mode 100644 index 0000000..9393ead --- /dev/null +++ b/dev-protocol-springcloud/dev-protocol-springcloud-nacos/Alibaba-Nacos.md @@ -0,0 +1,41 @@ +## 1. 部署 Nacos 单机版本 - (测试使用) +- 服务, 配置服务, 名字服务 + - ![Nacos基本架构.png](pic/Nacos基本架构.png) + +- Alibaba Nacos 概念解读 + - 服务注册中心:它是服务,实例及元数据的数据库;服务注册中心可能会调用服务实例的健康检查 API 来验证它是否能够处理请求 + - 服务元数据:包括服务端点(endpoints)、服务标签、服务版本号、服务实例权重、路由规则安全策略等描述服务的数据 + - 服务提供、消费方:提供可复用和可调用服务的应用方;会发起对某个服务调用的应用方 + - 配置:在系统开发过程中通常会将一些需要变更的参数、变量等从代码中分离出来独立管理以独立的配置文件的形式存在 + - 一般不会把不会改变的数据库配置啥的信息放在nacos中, 只会有一些限流配置啥的放在nacos中 +--- +- 单机版本部署步骤 + - 下载你所需要的版本:https://github.com/alibaba/nacos/releases + - 解压:tar -xzvf nacos-server-2.0.0.tar.gz + - 单机模式启动(默认配置就可以):./startup.sh -m standalone + - 默认地址 http://127.0.0.1:8848/nacos + - 账号密码: nacos nacos +--- +- 给 Nacos 配置自定义的 MySQL 持久化 + - 修改配置,指定 MySQL 地址、用户名、端口号 + - 修改表名, 执行 schema.sql 文件 + - 重启 Nacos 服务 +--- +- PS: select * from tenant_info\G 可以让查询记录格式化 + +## 2. 集群化部署 Alibaba Nacos - (线上使用) +- 至少使用3个节点 - (模拟的话,可以用3个端口号进行标识) + +- 集群化部署 Alibaba Nacos 的步骤 + - 定义集群部署的 ip 和端口,即 cluster.conf 文件 + - 集群必须要使用可以共同访问(例如 MVSQL、PG 等等)到的数据源作为持久化的方式 + - 集群化启动没有额外的参数:./startup.sh + - 修改端口号, 分别启动3个节点 +--- +## 3. Alibaba Nacos Client 服务注册与发现 + + + + + + diff --git a/dev-protocol-springcloud/dev-protocol-springcloud-nacos/pic/Nacos基本架构.png b/dev-protocol-springcloud/dev-protocol-springcloud-nacos/pic/Nacos基本架构.png new file mode 100644 index 0000000..c248acd Binary files /dev/null and b/dev-protocol-springcloud/dev-protocol-springcloud-nacos/pic/Nacos基本架构.png differ diff --git a/dev-protocol-springcloud/dev-protocol-springcloud-nacos/pom.xml b/dev-protocol-springcloud/dev-protocol-springcloud-nacos/pom.xml new file mode 100644 index 0000000..6d17103 --- /dev/null +++ b/dev-protocol-springcloud/dev-protocol-springcloud-nacos/pom.xml @@ -0,0 +1,125 @@ + + + 4.0.0 + + org.example + dev-protocol + 1.0-SNAPSHOT + ../../pom.xml + + + dev-protocol-springcloud-nacos + 1.0-SNAPSHOT + jar + + + dev-protocol-springcloud-nacos + Nacos Client + + + 8 + 8 + UTF-8 + + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + 2.2.3.RELEASE + + + + + + org.projectlombok + lombok + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + \ No newline at end of file diff --git a/dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/java/org/example/NacosClientApplication.java b/dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/java/org/example/NacosClientApplication.java new file mode 100644 index 0000000..8a99312 --- /dev/null +++ b/dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/java/org/example/NacosClientApplication.java @@ -0,0 +1,18 @@ +package org.example; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.context.config.annotation.RefreshScope; + +/** + *

Nacos Client 工程启动入口

+ * */ +//@RefreshScope // 刷新配置 +@EnableDiscoveryClient +@SpringBootApplication +public class NacosClientApplication { + public static void main(String[] args) { + SpringApplication.run(NacosClientApplication.class, args); + } +} \ No newline at end of file diff --git a/dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/java/org/example/service/NacosClientService.java b/dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/java/org/example/service/NacosClientService.java new file mode 100644 index 0000000..1671140 --- /dev/null +++ b/dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/java/org/example/service/NacosClientService.java @@ -0,0 +1,38 @@ +package org.example.service; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.cloud.client.ServiceInstance; +import org.springframework.cloud.client.discovery.DiscoveryClient; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Slf4j +@Service +public class NacosClientService { + + private final DiscoveryClient discoveryClient; + + public NacosClientService(DiscoveryClient discoveryClient) { + this.discoveryClient = discoveryClient; + } + + /** + *

打印 Nacos Client 信息到日志中

+ * */ + public List getNacosClientInfo(String serviceId) { + + // 测试 UseHystrixCommandAnnotation 的超时 +// try { +// Thread.sleep(2000); +// } catch (InterruptedException ex) { +// // +// } + + // 测试 NacosClientHystrixCommand 熔断 +// throw new RuntimeException("has some error"); + + log.info("request nacos client to get service instance info: [{}]", serviceId); + return discoveryClient.getInstances(serviceId); + } +} diff --git a/dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/resources/application.yml b/dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/resources/application.yml new file mode 100644 index 0000000..f4eed9c --- /dev/null +++ b/dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/resources/application.yml @@ -0,0 +1,74 @@ +server: + port: 8000 + servlet: + context-path: /e-commerce-nacos-client + +spring: + application: + name: e-commerce-nacos-client # 应用名称也是构成 Nacos 配置管理 dataId 字段的一部分 (当 config.prefix 为空时) + cloud: + nacos: + # 服务注册发现 + discovery: + enabled: true # 如果不想使用 Nacos 进行服务注册和发现, 设置为 false 即可 + server-addr: 127.0.0.1:8848 + # server-addr: 127.0.0.1:8848,127.0.0.1:8849,127.0.0.1:8850 # Nacos 服务器地址, 集群模式 + # todo 根据你自己的业务来进行区分找到 + namespace: 1ccc74ae-9398-4dbe-b9d7-4f9addf9f40c +# group: e-commerce +# metadata: +# management: +# context-path: ${server.servlet.context-path}/actuator +# # 配置管理 +# config: +# prefix: imooc-e-commerce +# file-extension: yaml # 配置内容的数据格式, 默认为 properties +# enabled: true # 如果不想使用 Nacos 进行配置管理, 设置为 false 即可 +# group: DEFAULT_GROUP # 组, 默认为 DEFAULT_GROUP +# namespace: 1bc13fd5-843b-4ac0-aa55-695c25bc0ac6 +# server-addr: 127.0.0.1:8848 +# kafka: +# bootstrap-servers: 127.0.0.1:9092 +# producer: +# retries: 3 +# consumer: +# auto-offset-reset: latest +# sleuth: +# sampler: +# # ProbabilityBasedSampler 抽样策略 +# probability: 1.0 # 采样比例, 1.0 表示 100%, 默认是 0.1 +# # RateLimitingSampler 抽样策略, 设置了限速采集, spring.sleuth.sampler.probability 属性值无效 +# rate: 100 # 每秒间隔接受的 trace 量 +# zipkin: +# sender: +# type: kafka # 默认是 web +# base-url: http://localhost:9411/ +# +## Feign 的相关配置 +#feign: +# # feign 开启 gzip 压缩 +# compression: +# request: +# enabled: true +# mime-types: text/xml,application/xml,application/json +# min-request-size: 1024 +# response: +# enabled: true +# # 禁用默认的 http, 启用 okhttp +# httpclient: +# enabled: false +# okhttp: +# enabled: true +# # OpenFeign 集成 Hystrix +# hystrix: +# enabled: true + +# 暴露端点 +#management: +# endpoints: +# web: +# exposure: +# include: '*' +# endpoint: +# health: +# show-details: always diff --git a/dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/resources/http/communication.http b/dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/resources/http/communication.http new file mode 100644 index 0000000..3d3131d --- /dev/null +++ b/dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/resources/http/communication.http @@ -0,0 +1,58 @@ +### 获取 Token +POST http://127.0.0.1:8000/ecommerce-nacos-client/communication/rest-template +Content-Type: application/json + +{ + "username": "Qinyi@imooc.com", + "password": "25d55ad283aa400af464c76d713c07ad" +} + + +### 获取 Token, 带有负载均衡 +POST http://127.0.0.1:8000/ecommerce-nacos-client/communication/rest-template-load-balancer +Content-Type: application/json + +{ + "username": "Qinyi@imooc.com", + "password": "25d55ad283aa400af464c76d713c07ad" +} + + +### 通过 Ribbon 去获取 Token +POST http://127.0.0.1:8000/ecommerce-nacos-client/communication/ribbon +Content-Type: application/json + +{ + "username": "Qinyi@imooc.com", + "password": "25d55ad283aa400af464c76d713c07ad" +} + + +### 通过原生 Ribbon Api 去获取 Token +POST http://127.0.0.1:8000/ecommerce-nacos-client/communication/thinking-in-ribbon +Content-Type: application/json + +{ + "username": "Qinyi@imooc.com", + "password": "25d55ad283aa400af464c76d713c07ad" +} + + +### 通过 OpenFeign 获取 Token +POST http://127.0.0.1:8000/ecommerce-nacos-client/communication/token-by-feign +Content-Type: application/json + +{ + "username": "Qinyi@imooc.com", + "password": "25d55ad283aa400af464c76d713c07ad" +} + + +### 通过原生 Feign Api 获取 Token +POST http://127.0.0.1:8000/ecommerce-nacos-client/communication/thinking-in-feign +Content-Type: application/json + +{ + "username": "Qinyi@imooc.com", + "password": "25d55ad283aa400af464c76d713c07ad" +} diff --git a/dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/resources/http/hystrix.http b/dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/resources/http/hystrix.http new file mode 100644 index 0000000..9dc8d94 --- /dev/null +++ b/dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/resources/http/hystrix.http @@ -0,0 +1,35 @@ +### 根据提供的 serviceId 获取实例信息 +GET http://127.0.0.1:8000/ecommerce-nacos-client/hystrix/hystrix-command-annotation?serviceId=e-commerce-nacos-client +Content-Type: application/json + +### 根据提供的 serviceId 获取实例信息 +GET http://127.0.0.1:8000/ecommerce-nacos-client/hystrix/simple-hystrix-command?serviceId=e-commerce-nacos-client +Content-Type: application/json + +### 根据提供的 serviceId 获取实例信息 +GET http://127.0.0.1:8000/ecommerce-nacos-client/hystrix/hystrix-observable-command?serviceId=e-commerce-nacos-client +Content-Type: application/json + +### 根据提供的 serviceId 获取实例信息 +GET http://127.0.0.1:8000/ecommerce-nacos-client/hystrix/cache-hystrix-command?serviceId=e-commerce-nacos-client +Content-Type: application/json + +### 根据提供的 serviceId 获取实例信息 +GET http://127.0.0.1:8000/ecommerce-nacos-client/hystrix/cache-annotation-01?serviceId=e-commerce-nacos-client +Content-Type: application/json + +### 根据提供的 serviceId 获取实例信息 +GET http://127.0.0.1:8000/ecommerce-nacos-client/hystrix/cache-annotation-02?serviceId=e-commerce-nacos-client +Content-Type: application/json + +### 根据提供的 serviceId 获取实例信息 +GET http://127.0.0.1:8000/ecommerce-nacos-client/hystrix/cache-annotation-03?serviceId=e-commerce-nacos-client +Content-Type: application/json + +### 根据提供的 serviceId 获取实例信息 +GET http://127.0.0.1:8000/ecommerce-nacos-client/hystrix/request-merge +Content-Type: application/json + +### 根据提供的 serviceId 获取实例信息 +GET http://127.0.0.1:8000/ecommerce-nacos-client/hystrix/request-merge-annotation +Content-Type: application/json diff --git a/dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/resources/http/nacos-client.http b/dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/resources/http/nacos-client.http new file mode 100644 index 0000000..9a454e9 --- /dev/null +++ b/dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/resources/http/nacos-client.http @@ -0,0 +1,13 @@ +### 查询服务实例信息 +GET http://127.0.0.1:8000/ecommerce-nacos-client/nacos-client/service-instance +Accept: application/json + +### 动态从 Nacos Server 中获取配置信息 +GET http://127.0.0.1:8000/ecommerce-nacos-client/nacos-client/project-config +Accept: application/json + +### 查看 Sleuth 跟踪信息 +GET http://127.0.0.1:9001/imooc/ecommerce-nacos-client/sleuth/trace-info +Accept: application/json +e-commerce-user: eyJhbGciOiJSUzI1NiJ9.eyJlLWNvbW1lcmNlLXVzZXIiOiJ7XCJpZFwiOjE3LFwidXNlcm5hbWVcIjpcIkltb29jUWlueWlAaW1vb2MuY29tXCJ9IiwianRpIjoiMGIxNzQyYWItMWU3OC00OTZjLWIyNTAtMjNkZGQ1ZGEyZTU1IiwiZXhwIjoxNjI0MjA0ODAwfQ.QKGHzohSHdYDHzUVHpe9gNPUgzfkPwrSbB-WiMWYjLlt2tr9BufzZM8bSt-whb_bd0hKoC6rkYYO0WUVR67uSML-2yaTL1xMIn8GH9Flyig3rpO4vefL3Hp2TXIpwHHa7WlKsLzcUpNk9lxWs2B5k0ICdYCH_jD5Tx6N7CzfSUG9u4fOnVeM9UFE2nX_DURupUh_DKCc2oOoMeyCSR7Ma8-Ab4WQU3r-U0YivR8G1A0kmKOIoTeRhM3LcPuxUPh3rCbrjzMg--fexRGw0O38Qsby6pz-ku2IlTyFXY6_jNOG1BZR34-jBOnaIciP1TExw9bFumeuC2GcowTHJVH1Nw +token: imooc diff --git a/pom.xml b/pom.xml index 79ddae3..2cc4c2e 100644 --- a/pom.xml +++ b/pom.xml @@ -51,6 +51,8 @@ spring/spring-security/spring-security-demo dev-protocol-springcloud/dev-protocol-springcloud-gateway dev-protocol-springcloud/dev-protocol-springcloud-communication + dev-protocol-springcloud/dev-protocol-springcloud-admin + dev-protocol-springcloud/dev-protocol-springcloud-nacos