Spring - Cloud (微服务)

news2024/11/24 9:16:16

SpringCloud 和 SpringBoot 版本选择对应: 

版本对应:https://start.spring.io/actuator/info

Cloud官网:Spring Cloud 

中文网:Spring Cloud中文网-官方文档中文版

在官网可以查看 当前Cloud 推荐的Boot版本:

当前技术栈选型和停更图(2020年):

创建聚合工程 (使用Maven 或 Spring Initializr 都是可以的):

JDK版本改为8:

注解激活生效:新版的lonbok好像需要勾选:

字符编码集UTF-8:

注意点 1:

# <!-- 统一管理jar包版本 -->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <junit.version>4.12</junit.version>
        <log4j.version>1.2.17</log4j.version>
        <lombok.version>1.16.18</lombok.version>
        <mysql.version>5.1.47</mysql.version>
        <druid.version>1.1.16</druid.version>
        <mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
    </properties>



# 引用时
# <dependencyManagement> 标签<!--子模块继承之后,提供作用:锁定版本+子module不用写groupId和version-->
<dependencyManagement>
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>${mysql.version}</version>
  </dependency>
  <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>${druid.version}</version>
  </dependency>
</dependencyManagement>



# <!-- 引入自己定义的api通用包,分布式项目里面可以共享该项目里面的所有class--> 
<dependency>
  <groupId>com.zbx.springcloud</groupId>         //创建工程时候的完整包名
  <artifactId>cloud-api-commons</artifactId>     //工程的名字 (如下图)
  <version>${project.version}</version>          //当前自己pom里面定义的版本号 (固定这样写就可以了)
</dependency>

注意点 2:

使用 Run Dashboard (批量 Run):

  • 当前.idea 下 workspace.xml
  • 找到 <component name="RunDashboard"> 标签 第一行应该是  <option name="ruleStates">
  • 添加 <component name="RunDashboard">
               <option name="configurationTypes">
                 <set>
                   <option value="SpringBootApplicationConfigurationType" />
                 </set>
               </option>

           <option name="ruleStates">   添加到 <option name="ruleStates"> 标签上面即可

注意点3:

所有的微服务,一定要有自己的微服务名称,在配置文件里面进行配置

 

1.服务注册与发现:

什么是服务治理:     

  •    在传统rpc远程调用中,服务与服务依赖关系,管理比较复杂,所以需要使用服务治理,管理服务与服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。

      在服务注册与发现中,有一个注册中心,当服务器启动的时候,会把当前自已服务器的信息 比如 服务地址通讯地址等以别名方式注册到注册中心上。另一方(消费者|服务提供者),以该别名的方式去注册中心上获取到实际的服务通讯地址,然后在实现本地rpc调用远程。

可用组件: 

DiscoveryClient 对象 (Spring提供):

Spring Cloud Commons 提供的抽象

  最早的时候服务发现注册都是通过DiscoveryClient来实现的,随着版本变迁把DiscoveryClient服务注册抽离出来变成了ServiceRegistry抽象,专门负责服务注册,DiscoveryClient专门负责服务发现。还提供了负载均衡的发现LoadBalancerClient抽象。

DiscoveryClient通过@EnableDiscoveryClient的方式进行启用。

  • 从Spring Cloud Edgware开始,@EnableDiscoveryClient 或@EnableEurekaClient 可省略。只需加上相关依赖,并进行相应配置,即可将微服务注册到服务发现组件上。

@EnableDiscoveryClient和@EnableEurekaClient:

  • 共同点:都是能够让注册中心能够发现,扫描到改服务。
  • 不同点:@EnableEurekaClient只适用于Eureka作为注册中心,@EnableDiscoveryClient 可以是其他注册中心。

使用:

  • 可对外提供接口,查询 已注册的服务等相关的信息。
  • 入口主类添加注解 @EnableDiscoveryClient
@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;

注册中心 Eureka 、ZookeeperConsul 的区别:

  • Nacos 支持AP 和 CP 模式可切换 

 

 

 2.服务的调用与负载均衡:

Ribbon:

主要作用:负载均衡 + RestTemplate调用

负载均衡设置:

配置方式一:配置类方式 

配置方式二:配置文件  

配置方式三:自定义实现   

OpenFeign:

 3.服务的熔断和降级:

4.服务网关:

5.

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

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

相关文章

Yolov8-pose关键点检测:模型轻量化创新 | 轻量级Slim-Neck

💡💡💡本文解决什么问题:轻量级Slim-Neck,缓解 DSC 缺陷对模型的负面影响,并充分利用深度可分离卷积 DSC 的优势。 Slim-Neck | mAP50从0.921提升至0.93, mAP50从0.697提升至0.829 Yolov8-Pose关键点检测专栏介绍:https://blog.csdn.net/m0_63774211/category_1…

从0到1构建界面设计系统思维

用户界面&#xff08;UI&#xff09;是人与机器之间发生交互的载体&#xff0c;也是用户体验&#xff08;UX&#xff09;的一个组成部分。用户界面由两个主要部分组成&#xff1a;视觉设计&#xff08;即传达产品的外观和感觉&#xff09;和交互设计&#xff08;即元素的功能和…

超详解| Yolov8模型手把手调参 | 配置 | 模型训练 | 验证 | 推理

YOLOv8是一款前沿、最先进&#xff08;SOTA&#xff09;的模型&#xff0c;基于先前YOLO版本的成功&#xff0c;引入了新功能和改进&#xff0c;进一步提升性能和灵活性。 然而&#xff0c;要充分发挥Yolov8的潜力&#xff0c;合理的参数配置是至关重要的。本文将带您深入了解…

2023年值得推荐的 API 开发工具

数字化时代&#xff0c;应用程序编程接口&#xff08;API&#xff09;的重要性愈发凸显。API 充当着应用程序之间的桥梁&#xff0c;促进数据交换和功能集成。随着 API 的不断增加和复杂化&#xff0c;开发对 API 开发工具的要求也越来越高。 我们一起来盘点下 2023年上半年比…

Ant design table实现单选和点击行选中

实现单选 Antd table实现单选非常方便只需要在rowSelection属性里添加type: radio即可。 实现点击行选中 需要用到onRow属性 在onClick事件里面手动设置selectRowKey&#xff0c;跟Table onChange事件一样 onRow{(record) > ({onClick: () > {console.log(record)…

极智开发 | vscode使用ssh加速git操作

欢迎关注我的公众号 [极智视界],获取我的更多经验分享 大家好,我是极智视界,本文分享一下 vscode使用ssh加速git操作。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码和资源下载,链接:https://t.zsxq.com/0aiNxERDq 之前在 vscode 中主要使用 http …

浅析自动化测试工具的功能与作用

自动化测试工具是一种软件工具&#xff0c;旨在通过脚本或可视化界面自动执行测试任务和验证预期结果。这些工具可以自动识别和执行测试用例&#xff0c;模拟用户操作&#xff0c;比较实际和预期结果&#xff0c;并生成测试报告。自动化测试工具减少了人工干预&#xff0c;提高…

蓝桥杯备赛Day7——算法复杂度分析、前缀和思想

O(nlogn)算法可能达到的最优复杂度。快速排序算法是典型例子。 O(n^2)一个两重循环的算法,复杂度是O(n^2)。例如冒泡排序,是典型的两重循环。 O(n^3)、O(n^4)等等。 O(2n)一般对应集合问题。 例如一个集合中有n个数,要求输出它的所有子集。 O(n!)在集合问题中,如果要求按顺…

算法训练营day42|动态规划 part04(01背包问题基础(两种解决方案)、LeetCode 416.分割等和子集)

文章目录 01背包----二维dp数组01背包----滚动数组416.分割等和子集思路分析背包解法思考总结 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最…

Geek——能力超强的卸载工具

简介 Geek是一款能力超强的卸载工具&#xff0c;旨在帮助用户轻松、彻底地卸载不需要的软件。无论是常见的应用程序、插件还是顽固的垃圾文件&#xff0c;Geek都能够迅速而安全地将其清理殆尽&#xff0c;释放您的存储空间和系统资源。 使用Geek&#xff0c;您可以轻松摆脱不…

【100天精通Python】Day56:Python 数据分析_Pandas数据清洗和处理

目录 数据清洗和处理 1.处理缺失值 1.1 删除缺失值&#xff1a; 1.2 填充缺失值&#xff1a; 1.3 插值&#xff1a; 2 数据类型转换 2.1 数据类型转换 2.2 日期和时间的转换&#xff1a; 2.3 分类数据的转换&#xff1a; 2.4 自定义数据类型的转换&#xff1a; 3 数…

2023,软件测试人的未来在哪里?

2023年&#xff0c;IT行业出现空前的萧条&#xff0c;首先是年初一开始各大厂像着了魔似的不约而同的纷纷裁员、降薪、奖金包缩水&#xff0c;随之而来的是需求萎缩&#xff0c;HC减少或封锁等等。 而有幸未被列入裁员名单的在职人员&#xff0c;庆幸之余也心有余悸&#xff0…

Excel VSTO开发8 -相关控件

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 8 相关控件 在VSTO开发中&#xff0c;Ribbon&#xff08;或称为Ribbon UI&#xff09;是指Office应用程序中的那个位于顶部的带有选…

it运维监控管理平台,统一运维监控管理平台

随着系统规模的不断扩大和复杂性的提高&#xff0c;IT运维管理的难度也在逐步增加。为了应对这一挑战&#xff0c;IT运维监控管理平台应运而生。本文将详细介绍IT运维监控管理平台的作用和优势以及如何选择合适的平台。 IT运维监控管理平台的作用管理平台 IT运维监控管理平台是…

glb数据介绍

目录 1.什么是glb数据&#xff1f;2.glb数据可以用来干什么&#xff1f;3.glb和gltf有什么区别&#xff1f;4.glb数据怎么打开&#xff1f;5.如何创建glb数据&#xff1f;6.glb数据的结构7.glb数据的优缺点8.glb对pbr渲染的帮助 1.什么是glb数据&#xff1f; GLB文件&#xff0…

Ceph中对象读写请求的顺序性和并发控制

分布式系统中经常需要考虑对象(或者记录、文件、数据块等&#xff09;的读写顺序以及并发访问问题。通常来说&#xff0c;如果两个对象没有共享的资源&#xff0c;就可以进行并发的访问&#xff1b;如果有共享的部分&#xff0c;就需要对这部分资源进行加锁。而对于同一个对象的…

Sentinel1.8.6集成nacos

代码&#xff1a;https://gitee.com/gsls200808/sentinel-dashboard-nacos jar包&#xff1a;https://gitee.com/gsls200808/sentinel-dashboard-nacos/releases/tag/v1.8.6.0 代码如果看不到可能需要登录。 官方参考文档&#xff1a; 动态规则扩展 alibaba/Sentinel Wiki…

【动态规划——最长公共子串】

动态规划——最长公共子串 题目链接 https://www.nowcoder.com/practice/98dc82c094e043ccb7e0570e5342dd1b?tpId37&tqId21298&rp1&ru/exam/oj/ta&qru/exam/oj/ta&sourceUrl%2Fexam%2Foj%2Fta%3FjudgeStatus%3D3%26page%3D2%26pageSize%3D50%26search%3…

day 49 | 647. 回文子串 ● 516.最长回文子序列

647. 回文子串 dp含义&#xff1a;dp如果是表示i-j的序列中回文子串的个数的话&#xff0c;当新来一个后只能判定出来是整体的回文&#xff0c;内部的无法判断&#xff0c;所以用bool表示整体比较恰当。 递推公式&#xff1a;由于i&#xff0c;j是由i1,j-1决定的&#xff0c;所…

【自学开发之旅】Flask-回顾--对象拆分-蓝图(二)

url-统一资源定位符-不同的url对应不同的资源 作为服务端&#xff0c;url和视图函数的映射关系就是路由。 定义传递参数的方式&#xff1a; 1.创建动态url app.route("/login2/<username>/<passwd>") def login2(username, passwd):if username "…