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

news2024/11/17 17:54:24

微服务架构——笔记(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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

day51

前端框架Booststrap 该框架已经帮我们写了很多页面样式&#xff0c;如果需要使用&#xff0c;只需要下载对应文件直接cv即可 在使用Booststrap的时候&#xff0c;所有发页面样式只需要通过修改class属性来调节即可 什么是Booststrap Bootstrap是一个开源的前端框架&#xff…

基于junit4搭建自定义的接口自动化测试框架

随着业务的逐步稳定&#xff0c;对于接口的改动也会逐渐变少。更多的是对业务逻辑的优化&#xff0c;功能实现的完善。对于测试来说&#xff0c;重复繁琐的功能测试不仅效率低下&#xff0c;而且耗费一定的人力资源。笔者支持的信息流业务下的一个图文管理平台就是一个功能较为…

Elasticsearch:ES|QL 的限制

尽管 ES|QL 带来性能及使用上的便捷&#xff0c;在实际的使用中&#xff0c;它还是有一些限制。在今天的文章中&#xff0c;我们来列举它的一些限制。 结果集大小限制 默认情况下&#xff0c;ES|QL 查询最多返回 500 行。 你可以使用 LIMIT 命令将行数增加到最多 10,000 行。 …

SDH设备

文章目录 实际的SDH设备结构&#xff1a;OSN3500

Archicad 26 (BIM建模软件)

Archicad 26是一款建筑信息模型&#xff08;BIM&#xff09;软件&#xff0c;由Graphisoft公司开发。它提供了全面的设计和建模工具&#xff0c;用于创建3D建筑模型、制作施工图纸等。 Archicad 26支持多种文件格式&#xff0c;并且可以与其他CAD软件进行互操作。它具有强大的建…

关于mysql自增列起始值与数据实际id不一致的问题

从一个数据表生成表结构和数据的脚本之后。把脚本复制到另一个数据库执行同步数据结构和数据。 Navicat 发生了如下异常提示&#xff0c;并中断了脚本执行&#xff1a; Duplicate entry 51110 for key sys_log.PRIMARY 然后检查sys_log表的建表脚本&#xff0c;发现有如下行&…

期中考试后,老师用它发成绩

期中考试过后&#xff0c;对于老师们来说&#xff0c;最烦的就是学生家长一直不停的咨询成绩。然而&#xff0c;一群班群直接公布成绩不仅耗时&#xff0c;还不合规。那么&#xff0c;如何用代码和Excel实现让学生自助查询成绩呢&#xff1f;下面&#xff0c;我将向各位老师介绍…

[C/C++]数据结构 链表OJ题:移除链表元素

题目描述: 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 方法一: 从头开始遍历链表,当遇到相同元素则跳过该元素,指向下一节点 struct ListNode* removeElements(struct ListNode* head…

智慧法院 | 平均执行效率提升86%,RPA数字劳动力改善法院整体工作效能

为深化政法智能化建设&#xff0c;加强“智慧治理”“智慧法院”“智慧检务”“智慧警务”“智慧司法”等信息平台建设&#xff0c;深入实施大数据战略&#xff0c;实现科技创新成果同政法工作深度融合。法制日报社于今年3月继续举办了2023政法智能化建设创新案例及论文征集宣传…

利用TexturePacker 进行pvr.ccz与png互转

这几天在玩 小冰冰传奇 有几个新的游戏角色甚是喜欢&#xff0c;想找几张图片看看&#xff0c;索性就去下载apk找找里面的图片 https://dgame-apk.lilithgame.com/dtcq_675.lilith-android1013.apk 500多M 然后去下载TexturePacker这个软件 27M 我们直接把 dtcq_675.lil…

Vue路由(router-link)——高亮、动态传参

一、声明式导航-导航链接 1.需求 实现导航高亮效果 如果使用a标签进行跳转的话&#xff0c;需要给当前跳转的导航加样式&#xff0c;同时要移除上一个a标签的样式&#xff0c;太麻烦&#xff01;&#xff01;&#xff01; 2.解决方案 vue-router 提供了一个全局组件 router…

led台灯哪些牌子性价比高?推荐五个性价比超高的护眼台灯

作为学龄期儿童的家长&#xff0c;最担心的就是孩子长时间学习影响视力健康。无论是上网课、写作业、玩桌游还是陪伴孩子读绘本&#xff0c;都需要一个足够明亮的照明环境&#xff0c;因此选购一款为孩子视力发展保驾护航的台灯非常重要。为大家推荐几款性价比高的护眼台灯。 …

Devchat AI尝鲜试用:程序员开发提效利器,告别脏活累活

DevChat 简介 在当今的软件开发领域&#xff0c;程序员们每天都要面对海量的代码和复杂的任务。尽管技术不断发展&#xff0c;但程序员们依然需要花费大量时间进行重复性工作&#xff0c;如代码审查、错误排查、文档编写等。这些脏活累活不仅消耗了程序员们大量的时间和精力&am…

科东软件新型工业操作系统亮相2023工控中国大会

近日&#xff0c;2023第三届工控中国大会在苏州太湖国际会议中心成功举办&#xff01;大会由中国电子信息产业发展研究院、中国工业经济联合会、国家智能制造专家委员会、国家产业基础专家委员会、江苏省工业和信息化厅、江苏省国有资产监督管理委员会、苏州市人民政府共同主办…

守护线程和非守护线程

一、前言 借鉴文章&#xff1a; 文章1 文章2 ①Java提供的两种线程 Java提供了两种线程&#xff1a; 守护线程和用户线程&#xff08;非守护线程&#xff09; 守护线程&#xff08;Daemon Thread&#xff09;&#xff1a; 在程序运行时 在后台提供一种通用服务的线程&#x…

如何使用 NFTScan NFT API 在 Arbitrum 网络上开发 Web3 应用

Arbitrum 是以太坊的 Layer 2 扩容方案&#xff0c;为以太坊面临的高 gas 费和网络拥堵问题&#xff0c;提供了一个解决方案。作为 Layer 1 的以太坊基础层受每秒只能验算 15 笔交易的限制&#xff0c;在目前以太坊使用需求庞大的情况下&#xff0c;局限了以太坊的可扩展性。Ar…

计算机毕业设计 基于SpringBoot房屋租赁管理系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

机器视觉 opencv 深度学习 驾驶人脸疲劳检测系统 -python 计算机竞赛

文章目录 0 前言1 课题背景2 Dlib人脸识别2.1 简介2.2 Dlib优点2.3 相关代码2.4 人脸数据库2.5 人脸录入加识别效果 3 疲劳检测算法3.1 眼睛检测算法3.2 打哈欠检测算法3.3 点头检测算法 4 PyQt54.1 简介4.2相关界面代码 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#x…

深度学习经典网络:GoogleNet

深度学习经典网络--GoogleNet 1、为什么要提出Inception2、为什么是Inception3、实际中的Inception4、GoogleNet 整体网络结构 GoogLeNet是google推出的基于Inception模块的深度神经网络模型&#xff0c;在2014年的ImageNet竞赛中夺得了冠军&#xff0c;在随后的两年中一直在改…

全方位解析解决找不到msvcp120dll,无法继续执行代码问题的方法

在日常使用电脑的过程中&#xff0c;我们可能会遇到 “找不到msvcp120dll,无法继续执行代码” 的问题。大部分用户并不清楚msvcp120.dll是什么&#xff0c;更不知道怎样修复这个问题。其实不要紧的&#xff0c;今天我们就来了解一下msvcp120.dll文件&#xff0c;并且告知你多种…