微服务架构——笔记(4)

微服务架构——笔记(4)

基于分布式的微服务架构
本次笔记为 此次项目的记录,便于整理思路,仅供参考,笔者也将会让程序更加完善
内容包括:8001集群构建,负载均衡,服务发现,Eureka自我保护
在这里插入图片描述
文章来源B站视频
尚硅谷SpringCloud框架开发教程(SpringCloudAlibaba微服务分布式架构丨Spring Cloud)教程
本次笔记内容为支付服务提供者8001集群环境构建

一、支付服务提供者8001集群环境构建

在这里插入图片描述

1.1 yml修改

server:
  port: 8002

spring:
  application:
    name: cloud-payment-service
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource  #当前数据源操作类型
    driver-class-name: org.gjt.mm.mysql.Driver                 #mysql驱动包
    url: jdbc:mysql://localhost:3306/db2023?useUnicode=true&&characterEncoding=utf-8&useSSL=false
    username: root
    password: tiger

eureka:
  client:
    # 表示是否将自己注册进eurekaserver默认为true
    register-with-eureka: true
    # 是否从eurekaserver抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合
    fetchRegistry: true
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka

mybatis:
  mapperLocations: classpath:mapper/*.xml
  type-aliases-package: com.liangstar.springcloud.entities   #所有Entity别名类所在包

1.2 启动修改

package com.liangstar.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class PaymentMain8002 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentMain8002.class,args);
    }
}

注:8002与8001完全相同,除了端口等
在这里插入图片描述

1.3 Controller修改

8001controller


@RestController
@Slf4j
public class PaymentController {
    @Resource
    private PaymentService paymentService;

    @Value("${server.port}")
    private String serverPort;

    @PostMapping(value = "/payment/create")
    public CommonResult create(@RequestBody Payment payment){
        int result = paymentService.create(payment);
        log.info("********插入结果"+result);
        if(result > 0){
            return new CommonResult(200,"插入数据库成功,serverPort:"+serverPort,result);
        }else{
            return new CommonResult(444,"插入数据库失败,serverPort:"+serverPort,null);
        }
    }

    @GetMapping(value = "/payment/get/{id}")
    public CommonResult getPaymentById(@PathVariable("id") Long id){
       Payment payment = paymentService.getPaymentId(id);
        log.info("@@@@@@@@查询结果"+payment);
        if(payment != null){
            return new CommonResult(200,"查询成功,serverPort:"+serverPort,payment);
        }else{
            return new CommonResult(444,"没有对应记录,查询Id"+id,null);
        }
    }
}

实际就添加了个来源声明,serverPort

1.4 负载均衡

在这里插入图片描述
coustmer中的controller初始状态为写死状态
在这里插入图片描述
但我们需要使用Eureka指明的服务端口。在这里插入图片描述
通过Eureka识别服务名
在这里插入图片描述
第一步:修改OrderController

//    public static final String PAYMENT_URL = "http://localhost:8001";
    public static final String PAYMENT_URL = "http://CLOUD-PAYMENT-SERVICE";

第二步:修改Orderconfig,resttemplate添加@LoadBalanced注解
在这里插入图片描述
默认轮询
在这里插入图片描述

1.5 actuator微服务信息完善

在这里插入图片描述
主机名称服务名称修改:
访问信息有IP信息提示
8001、8002application.yml
添加instance与client对齐

  instance:
    instance-id: payment8001
    prefer-ip-address: true   #访问路径可以显示IP地址

1.6 服务发现Discovery

在这里插入图片描述

 @Resource
    private DiscoveryClient discoveryClient;

    @GetMapping(value = "/payment/discovery")
    public Object discovery(){
        List<String> services = discoveryClient.getServices();
        for(String element :services){
            log.info("******element******"+element);
        }
        List<ServiceInstance> instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");
        for (ServiceInstance instance : instances) {
            log.info(instance.getServiceId()+"\t"+instance.getHost()+"\t"+instance.getPort()+"\t"+instance.getUri());
        }
        return this.discoveryClient;
    }

启动类,添加注解

@EnableDiscoveryClient

在这里插入图片描述

二、Eureka自我保护

在这里插入图片描述
某时刻某一个微服务不可用了,Eureka不会立即清理,依旧对该微服务

2.1 关闭自我保护

自我保护版本:Eureka 相当于房东,或物业给客户端提供服务,当
用户拥堵,不能正常运行,会等待微服务重连重启等行为,一直连接不上会清理,会导致8001服务端宕机后,80无法快速切换找到新的可用微服务。
绝情版本:Eureka每天提供服务并无时无刻在收租,只要断供就立即关闭服务。

第一步7001:
禁用自我保护模式默认为true,人为改定false
自动心跳时间默认30秒,人为改定2000

eureka:
  instance:
    hostname: eureka7001.com #eureka服务端的实例名称
  client:
    #false表示不向注册中心注册自己
    register-with-eureka: false
    #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检查服务
    fetch-registry: false
    service-url:
      #设置与Eureka server交互的地址查询服务和注册服务都需要依赖这个地址
      defaultZone: http://eureka7002.com:7002/eureka/
  server:
    #关闭自我保护
    enable-self-preservation: false
    eviction-interval-timer-in-ms: 2000

第二步8001:

  instance:
    instance-id: payment8001
    # 访问路径可以显示IP地址
    prefer-ip-address: true
    # Eureka客户端向服务端发送心跳的时间间隔,单位为秒默认30
    lease-renewal-interval-in-seconds: 1
    # Eureka服务端在最后一个收到心跳等待时间上限,默认为90秒
    # 原来每天30天交房费,现在1天一交,2天一催缴
    lease-expiration-duration-in-seconds: 2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/122666.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解决UniAD在高版本CUDA、pytorch下运行遇到的问题

UniADhttps://github.com/OpenDriveLab/UniAD是面向行车规划集感知(目标检测与跟踪)、建图(不是像SLAM那样对环境重建的建图&#xff0c;而是实时全景分割图像里的道路、隔离带等行车需关注的相关物体)、和轨迹规划和占用预测等多任务模块于一体的统一大模型。官网上的安装说明…

Solidity之变量数据存储和作用域

引用类型 引用类型(Reference Type)&#xff1a;包括数组&#xff08;array&#xff09;&#xff0c;结构体&#xff08;struct&#xff09;和映射&#xff08;mapping&#xff09;&#xff0c;这类变量占空间大&#xff0c;赋值时候直接传递地址&#xff08;类似指针&#xff…

Mysql8与mariadb的安装与常用设置

一、v10服务器mariadb的安装与常用设置 V10服务器默认安装了mariadb数据库。也可使用命令sudo yum install mariadb手动安装或升级默认安装的版本。 1.1 修改数据库密码 systemctl restart mariadb,重启mariadb服务&#xff1b;mysql -u root -p,要求输入密码直接回车&#…

Python 函数定义详解(More on Defining Functions)- 默认参数/位置参数/关键字参数

1.函数的定义和调用方法 1.1函数定义方法 """def 关键字用来定义一个函数。function_name 是函数名&#xff0c;应遵循命名规范。parameter1, parameter2, ... 是函数的参数列表&#xff0c;可以是任意数量和类型的参数。函数体是用缩进&#xff08;通常为4个…

k8s:kubectl 详解

目录 1 kubectl 2 基本信息查看 2.1 查看 master 节点状态 2.2 查看命名空间 2.3 查看default命名空间的所有资源 2.4 创建命名空间app 2.5 删除命名空间app 2.6 在命名空间kube-public 创建副本控制器&#xff08;deployment&#xff09;来启动Pod&#xff08;nginx-wl…

LaMa 论文复现:Resolution-robust Large Mask Inpainting with Fourier Convolutions

代码&#xff1a;GitHub - andy971022/auto-lama 论文&#xff1a;https://arxiv.org/abs/2109.07161 1 LaMa 论文简介 2 LaMa代码复现 2.1 环境部署 2.1.1 下载源码&#xff0c;创建环境&#xff0c;安装必需库 git clone https://github.com/advimman/lama cd lama con…

Figma转Sketch文件教程,超简单!

相信大家做设计的都多多少少听过一点Figma和Sktech&#xff0c;这2个设计软件是目前市场上很受欢迎的专业UI设计软件&#xff0c;在全球各地都有很多粉丝用户。但是相对来说&#xff0c;Figma与Sketch只支持iOS系统有所不同&#xff0c;Figma是一个在线设计软件&#xff0c;不限…

TikTok shop美国小店适合哪些卖家做?附常见运营问题解答

一、Tiktok shop小店分类 大家都知道&#xff0c;美国小店可以分为5 种&#xff1a; 美国本土个人店: 最灵活&#xff0c;有扶持政策&#xff1b;美国法人企业店&#xff1a;要求高&#xff0c;有扶持政策&#xff1b;美国公司中国人占股店 (ACCU店) : 权重相对低&#xff0c…

Java版本spring cloud + spring boot企业电子招投标系统源代码

项目说明 随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大&#xff0c;公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境&#xff0c;最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范&#xff0c;以及审…

《向经典致敬》第二届粤港澳大湾区著名歌唱家音乐会完美落幕

百年经典 歌坛盛会 “《向经典致敬》第二届粤港澳大湾区著名歌唱家音乐会暨2023福田人才之夜”完美落幕 2023年11月4日&#xff0c;阳光普照&#xff0c;秋意正浓&#xff0c;由中共深圳市福田区委宣传部、深圳市福田区文学艺术界联合会主办&#xff0c;深圳歌唱家协会承办&…

SpringBoot测试类启动web环境

1.坐标修改 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> 2.测试类测试 说明&#xff1a;SpringBootTest()中的webEnvironment值的说明&#xff1b; 2.1不启…

VMware 虚拟机如何修改虚拟机系统的网卡速率为万兆——筑梦之路

1. 找到虚拟机系统安装目录 比如E:\vmware-system\kali\ 2. 找到vmx文件&#xff0c;用记事本打开 将 ethernet0.virtualDev "e1000" 这行改为 ethernet0.virtualDev "vmxnet3" 后保存&#xff08;注意vmxnet3全为小写&#xff09;&#xff0c;如果没…

Babylonjs学习笔记(九)——第一人称控制器

书接上回&#xff0c;实现第一人称控制器&#xff01;&#xff01;&#xff01; 以下步骤&#xff0c;缺一不可 相机相关设置 camera.applyGravity true; // 应用重力 camera.checkCollisions true; // 开启碰撞检测 const camera new FreeCamera("camera",ne…

Yakit工具篇:WebFuzzer模块之序列操作

简介 Web Fuzzer 序列就是将多个 Web Fuzzer 节点串联起来&#xff0c;实现更复杂的逻辑与功能。例如我们需要先进行登录&#xff0c;然后再进行其他操作&#xff0c;这时候我们就可以使用 Web Fuzzer 序列功能。或者是我们在一次渗透测试中需要好几个步骤才能验证是否有漏洞这…

Next.js 项目——从入门到入门(Eslint+Prettier)

Next.js官方文档地址 什么是 Next.js 这是一个用于生产环境的 React 框架。 Next.js 为您提供生产环境所需的所有功能以及最佳的开发体验&#xff1a;包括静态及服务器端融合渲染、 支持 TypeScript、智能化打包、 路由预取等功能&#xff0c;无需任何配置。 功能&#xff…

uniapp小程序接入腾讯云【增强版人脸核身接入】

文档地址&#xff1a;https://cloud.tencent.com/document/product/1007/56812 企业申请注册这边就不介绍了&#xff0c;根据官方文档去申请注册。 申请成功后&#xff0c;下载【微信小程序sdk】 一、解压sdk&#xff0c;创建wxcomponents文件夹 sdk解压后发现是原生小程序代…

数据结构-堆

一、什么是堆 先了解两种特别的二叉树 满二叉树 除最后一层无任何子节点外&#xff0c;每一层上的所有结点都有两个子结点的二叉树 完全二叉树 完全二叉树相对于满二叉树来说&#xff0c;最后一层叶子节点从左到右中间没有空缺的&#xff0c;像这样&#xff1a; 计算机科学…

驾考在线答题系统源码:含PC+手机版驾考宝典多题库

安装说明&#xff1a; 1、上传到网站根目录 2、用 phpMyadmin 导入数据库文件 db.sql 3、修改数据库链接文件 /ThinkPHP/Conf/convention.php# &#xff08;记得不要用记事本修改&#xff0c;否则可能会出现验证码显示不了问题&#xff0c;建议用 Notepad 4、 帐号 admin 密码…

Git 入门使用 —— 建库、代码上下传、常用命令

目录 一、Git 入门 1.1 Git简介 1.2 Git安装 1.3 创建码云仓库 二、Git 使用 2.1 git初始化操作 2.2 代码上传 2.3 代码下载 2.4 代码更新 2.4.1 仓库管理者 2.4.1 仓库使用者 三、Git 常用命令 一、Git 入门 1.1 Git简介 Git是一个开源的分布式版本控制系统&am…

Wireshark分析tcp交互过程

三次握手 客户端发起请求 Tcp段长度为575字节&#xff0c;seq1&#xff0c;ack1&#xff0c;next_seq576 服务器响应&#xff1a; Tcp段长度为175字节&#xff0c;seq1&#xff0c;ack576&#xff0c;next_seq176 客户端响应&#xff1a; Tcp段长度523字节&#xff0c;seq576&…