From 4c744ab351579a1ee1571fcf2ac6ffdc7a0cad61 Mon Sep 17 00:00:00 2001
From: qyx <565485304@qq.com>
Date: Wed, 31 Jul 2024 19:20:02 +0800
Subject: [PATCH] feat(master): nocos + admin
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
nocos 基本配置
admin 基础配置
---
.../SpringCloud项目介绍.md | 5 +-
.../SpringBoot-Admin.md | 57 ++++++++
.../dev-protocol-springcloud-admin/pom.xml | 91 +++++++++++++
.../java/org/example/AdminApplication.java | 16 +++
.../example/conf/SecuritySecureConfig.java | 60 +++++++++
.../java/org/example/notifier/QNotifier.java | 44 ++++++
.../src/main/resources/bootstrap.yml | 56 ++++++++
.../微服务通信方案.md | 5 +
.../Alibaba-Nacos.md | 41 ++++++
.../pic/Nacos基本架构.png | Bin 0 -> 298981 bytes
.../dev-protocol-springcloud-nacos/pom.xml | 125 ++++++++++++++++++
.../org/example/NacosClientApplication.java | 18 +++
.../example/service/NacosClientService.java | 38 ++++++
.../src/main/resources/application.yml | 74 +++++++++++
.../main/resources/http/communication.http | 58 ++++++++
.../src/main/resources/http/hystrix.http | 35 +++++
.../src/main/resources/http/nacos-client.http | 13 ++
pom.xml | 2 +
18 files changed, 737 insertions(+), 1 deletion(-)
create mode 100644 dev-protocol-springcloud/dev-protocol-springcloud-admin/SpringBoot-Admin.md
create mode 100644 dev-protocol-springcloud/dev-protocol-springcloud-admin/pom.xml
create mode 100644 dev-protocol-springcloud/dev-protocol-springcloud-admin/src/main/java/org/example/AdminApplication.java
create mode 100644 dev-protocol-springcloud/dev-protocol-springcloud-admin/src/main/java/org/example/conf/SecuritySecureConfig.java
create mode 100644 dev-protocol-springcloud/dev-protocol-springcloud-admin/src/main/java/org/example/notifier/QNotifier.java
create mode 100644 dev-protocol-springcloud/dev-protocol-springcloud-admin/src/main/resources/bootstrap.yml
create mode 100644 dev-protocol-springcloud/dev-protocol-springcloud-nacos/Alibaba-Nacos.md
create mode 100644 dev-protocol-springcloud/dev-protocol-springcloud-nacos/pic/Nacos基本架构.png
create mode 100644 dev-protocol-springcloud/dev-protocol-springcloud-nacos/pom.xml
create mode 100644 dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/java/org/example/NacosClientApplication.java
create mode 100644 dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/java/org/example/service/NacosClientService.java
create mode 100644 dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/resources/application.yml
create mode 100644 dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/resources/http/communication.http
create mode 100644 dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/resources/http/hystrix.http
create mode 100644 dev-protocol-springcloud/dev-protocol-springcloud-nacos/src/main/resources/http/nacos-client.http
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 0000000000000000000000000000000000000000..c248acd1b6d654ba9a4771f9cfa34c8a1da774f6
GIT binary patch
literal 298981
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