浅谈Spring Cloud:认识微服务

SpringCloud就是分布式微服务架构的一站式解决方案,是微服务架构落地的多种技术的集合。

目录

微服务远程调用

Eureka注册中心

搭建Eureka Server

注册组件

服务拉取


当各种各样的服务越来越多,拆分的也越来越细,此时就会出现一个服务集群。

但是这么多服务,只靠人来管理是不现实的,所以引入了注册中心。

但是每个微服务都需要有不同的配置,我们就需要一个配置中心来管理每个服务的配置文件。

但是还需要管理用户的id,访问之类的事情,就需要一个服务网关。

光有了这些,还需要存储数据的数据库,并且还需要搭配分布式的缓存和搜索。

还需要消息队列来管理服务集群之间的通信。

一直到最后,才完成了整个微服务的整体架构。

微服务远程调用

现在我们有两个微服务(此处看做是两个springboot项目,各自有各自的端口和配置,数据库不是公用的,通过父子关系把一些配置公有化了)。我们需要在一个微服务中,把另一个微服务的接口调用到,该怎么做?

这里是有两个数据库,每个微服务只能查询到自己数据库的内容。我们通过Order模块里面的内容是无法查询到User中的信息的。

对于User服务,在Mapper中有一个GetMapper方法,只需要给它发送请求,它就会返回一个信息出来。于是我们就可以在Order中,也给它发送一个这个请求来获得数据库的信息。并且这个请求是解耦的,并不依赖于某个模块。

注册RestTemplate

一般来说,配置类是Controller,此处的Application也可以作为配置类。我们就直接把RestTemplate注册到Spring中。

在Order中,订单查询功能,是没有用户信息的。用户信息在另一个数据库中,此处查询不到。但是,Order中有用户的ID,通过这个ID可以在另一个数据库中查询到我们想要的结果。

通过restTemplate就能直接给另一个接口发送信息,接收到信息后再整合进原来的order中。

Eureka注册中心

在上述的例子中,远程调用的时候,我们的URL是写死的。当更换机器,或者新增机器的时候,这个URL就需要跟着变更。这样就需要通知所有的相关服务去修改。各个项目的配置文件反复更新,各个项目部署非常频繁。

引入Eureka注册中心,就可以帮助我们完成这一系列的操作。

  • EurekaServer:作为注册中心Server端,向微服务应用程序提供服务注册,发现,健康检查等能力。
  • EurekaClient:服务提供者,服务启动时,会向EurekaServer注册自己的信息(IP,端口,服务信息等),Eureka Server 会存储这些信息。

搭建Eureka Server

新建一个模块,并且选择好Maven

在eureka的pom文件中,配置好相关的信息。

        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>

给该项目编写⼀个启动类,并在启动类上添加服务@EnableEurekaServer 注解,开启eureka注册中心。

配置好相关的配置文件。

启动服务,并且可以访问到eureka的网页。红框框就是被注册的组件。

注册组件

针对user-service,我们注册这个组件到Eureka有两个步骤:

引入pom依赖

修改yml配置文件

注意,这里的配置文件修改极其容易出错,请严格注意格式!

对于order-dervice,步骤是一样的。重启服务,在Eureka的网页中就可以看到两个组件被注册成功。

服务拉取

刚刚是两个组件的情况,如果我们想要开两个服务,可以直接在IDEA里面添加。添加完成后,就会有两个只有端口不同的服务在一起。

现在我们通过order-service完成服务拉取,拉取的内容是user-service中的。

 

  1. 修改OrderService的代码,修改访问的url路径,用服务名称代替ip和端口
    String url = "http://userservice/user/" + order.getUserId();
  2. 在order-service项目的启动类OrderApplication中的RestTemplate添加负载均衡注释

这样子,刚刚我们启动的两个UserApplication,会在收到请求的时候通过负载均衡,动态的控制服务器响应给OrderService。

在地址栏快速的访问127.0.0.1:8080/order/101 和 127.0.0.1:8080/order/102  可以发现这两次请求是在不同的实例上完成的。

搭建 Eureka Server

  1. 引入 eureka-server 依赖。
  2. 添加 @EnableEurekaServer 注解。
  3. 在 application.yml 中配置 Eureka 地址。

服务注册

  1. 引入 eureka-client 依赖。
  2. 在 application.yml 中配置 Eureka 地址。

服务发现

  1. 引入 eureka-client 依赖。
  2. 在 application.yml 中配置 Eureka 地址。
  3. 给 RestTemplate 添加 @LoadBalanced 注解。
  4. 用服务提供者的服务名称远程调用。

这就是通过Eureka注册中心完成服务注册的流程了。只有同一个服务多个实例才能做负载均衡。那么具体讲到负载均衡,我们下一章节再详细说~

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

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

相关文章

速通GPT:《Improving Language Understanding by Generative Pre-Training》全文解读

文章目录 速通GPT系列几个重要概念1、微调的具体做法2、任务感知输入变换3、判别式训练模型 Abstract概括分析和观点1. 自然语言理解中的数据问题2. 生成预训练和监督微调的结合3. 任务感知输入变换4. 模型的强大性能 Introduction概括分析和观点1. 自然语言理解的挑战在于对标…

Android源码导入Android Studio

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 前言 需要先把 Android 源码编译一遍 然后执行下面指令就可以导入android源码了 关于 Android 源码编译可以参考这篇文章【LineageOS源码下载和编译&#xf…

【检索快,IEEE独立出版】2024年第四届电子信息工程与计算机科学国际会议(EIECS 2024)

大会简介&#xff1a; 2024年第四届电子信息工程与计算机科学国际会议&#xff08;EIECS 2024&#xff09;将于2024年9月27日至29日在中国延吉举行。会议由长春理工大学主办&#xff0c;延边大学、长春理工大学电子信息工程学院、长春理工大学计算机科学技术学院、长春理工大学…

蛋白质原子坐标平移、旋转、缩放示例代码

在处理蛋白质结构时,常常需要对原子的坐标进行几何变换,如平移、旋转和缩放。这些变换在模拟、可视化和结构比较中非常有用。 以下是对这些操作的介绍以及示例代码。 1. 平移 (Translation) 平移就是将所有原子的坐标沿着某个方向进行移动。平移可以通过向每个原子的坐标加…

解锁4款专业的中英翻译工具,让你畅行双语世界。

中英翻译工具在国际化交流越来越频繁的今天还是起着巨大的作用的&#xff0c;它能够促进很多知识的传播和共享&#xff0c;也能够便利大家的工作&#xff0c;学习和生活。今天我就要跟大家分享4个我一直都在用的中英翻译工具。 1、福昕中英翻译网站 直达&#xff1a;https://f…

LeetCode 第415场周赛个人题解

目录 Q1. 数字小镇中的捣蛋鬼 原题链接 思路分析 AC代码 Q2. 最高乘法得分 原题链接 思路分析 AC代码 Q3. 形成目标字符串需要的最少字符串数 I 原题链接 思路分析 AC代码 Q4. 形成目标字符串需要的最少字符串数 II 原题链接 思路分析 AC代码 Q1. 数字小镇中的捣…

数据库全攻略:从类型到安全与优化

数据库全攻略&#xff1a;从类型到安全与优化 一、数据库类型大观 &#xff08;一&#xff09;关系型数据库 关系型数据库以表格形式存储数据&#xff0c;通过 SQL 语言进行操作&#xff0c;数据之间存在关联关系&#xff0c;适合复杂查询和事务处理。常见的关系型数据库有 …

springboot瑜伽课约课小程序-计算机毕业设计源码87936

摘要 本文详细阐述了一个基于SpringBoot框架的瑜伽课约课小程序的设计与实现过程。随着现代生活节奏的加快&#xff0c;越来越多的人开始关注身心健康&#xff0c;瑜伽作为一种集健身、放松、减压于一体的运动方式&#xff0c;受到了广泛的欢迎。为满足瑜伽爱好者的课程预约和学…

Ubuntu 22.04.5 LTS 发布下载 - 现代化的企业与开源 Linux

Ubuntu 22.04.5 LTS (Jammy Jellyfish) - 现代化的企业与开源 Linux Ubuntu 22.04.5 发布&#xff0c;配备 Linux 内核 6.8 请访问原文链接&#xff1a;https://sysin.org/blog/ubuntu-2204/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xf…

Recyclerview实现滑动居中缩放菜单

最近项目中需要的一个滑动菜单效果:要求当前居中选项放大、滑动时有缩放效果、点击两边的选项滑动到屏幕中央、停止滑动选项停留在屏幕中间(类似viewPager的效果),为了直观,先上最终实现效果图: 大体思路: Recyclerview item头尾添加空数据,让第一个和最后一个item也能…

c++题目_【模板】最小生成树Prim

题目描述 这是一道最小生成树Prim的模板题&#xff0c;本题与【模板】最小生成树Kruskal&#xff0c;仅仅只有nn和mm的大小不同 给出一个无向图&#xff0c;求出最小生成树&#xff0c;如果该图不连通&#xff0c;则输出orz 输入 第一行输入2个正整数n,mn,m&#xff0c;代表…

数据可视化pyecharts——数据分析(柱状图、折线图、饼图)

安装 首先确保已经安装了pyecharts库&#xff0c;如果没有&#xff0c;可以通过pip install pyecharts进行安装。 柱状图 从pyecharts.charts导入Bar&#xff0c;从pyecharts导入options。准备数据&#xff08;如类别数据x_data和对应的数值数据y_data&#xff09;。创建Bar对…

解决win11 使用wsl工具,不能使用systemctl

使用systemctl命令出现报错&#xff1a; System has not been booted with systemd as init system (PID 1). Can‘t operate. 默认情况下并不启用 systemd&#xff0c;而是使用了其他轻量级的初始化系统&#xff08;SysV init初始化系统&#xff09;。这导致一些需要 system…

力扣最热一百题——螺旋矩阵

目录 题目链接&#xff1a;54. 螺旋矩阵 - 力扣&#xff08;LeetCode&#xff09; 题目描述 示例 提示&#xff1a; 解法一&#xff1a;模拟 1. 边界初始化 2. 循环遍历矩阵 3. 从左到右遍历上边界 4. 从上到下遍历右边界 5. 从右到左遍历下边界 6. 从下到上遍历左边…

【GPU版】Windows下PyTorch入门深度学习环境安装与配置

如果电脑有NVIDIA GPU显卡&#xff0c;看【GPU版本】&#xff1b;否则&#xff0c;看【CPU版本】 聊聊PyTorch和Tensorflow 它们都是python的库/包 pip3是给python3使用的&#xff0c;由于现在用的python基本上都是3以上版本&#xff0c;所以pip和pip3没有区别 聊聊Anacond…

DNC Server 开发

每个工厂里面的机床系统类型各式各样,程序传输DNC 功能可以提高技术人员的工作效率,怎样兼容每种系统是个难题,如果是做工厂信息化的工程师也是比较头疼,下面给出一个解决方案,抛砖引玉 我们可以使用一种框架 满足插件式开发,主程序负责管理插件,具体的上传 下载 删除 查询等具…

第108集《大佛顶首楞严经》

请打开讲义241面。我们讲到嗅报&#xff0c;鼻根当中嗅的功能。 本根发相 发明二相&#xff1a;一者通闻&#xff0c;被诸恶气&#xff0c;熏极心扰。二者塞闻&#xff0c;气掩不通&#xff0c;闷绝于地。 以鼻根造业到无间地狱以后&#xff0c;他有二种受苦的相状&#xf…

Java数据结构——Set和Map

掌握 Map/Set 及实际实现类 HashMap/TreeMap/HashSet/TreeSet 的使用。掌握 TreeMap 和 TreeSet 背后的数据结构搜索树的原理和简单实现。掌握 HashMap 和 HashSet 背后的数据结构哈希表的原理和简单实现。 目录 1.搜索 1.1概念及场景 1.2模型 2. Map的使用 2.1关于Map的说…

【5G QoS】详解5G QoS端到端工作机制

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G技术研究。 博客内容主要围绕…

同城找搭子小程序有哪些?找搭子社交软件测评笔记分享

寻找搭子不再迷茫&#xff01;今日测评几款热门找搭子小程序&#xff0c;为你开启全新社交体验。真实体验&#xff0c;深度剖析&#xff0c;帮你找到最适合的搭子平台&#xff0c;快来一探究竟。 1. 咕哇找搭子小程序&#xff1a;这是一个实名制的找搭子交友平台。正是由于实名…