微服务01-基本介绍+注册中心EureKa

基本介绍

服务集群:一个请求由多个服务完成,服务接口暴露,以便于相互调用;

注册中心:每个服务的状态,需要进行维护,我们可以在注册中心进行监控维护服务;

配置中心:这些服务的配置我们都放在配置中心中配置,方便拉取配置信息,减少代码冗余;

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
微服务优点

耦合度高,所有代码量放在一个里面,打包编译时间会很长,动一个模块中的代码,其他的可能会受影响;

在这里插入图片描述
分布式架构:

对功能进行拆分,每个业务作为独立的项目作为独立项目开发,称为一个服务;方便升级,修改;

在这里插入图片描述

在这里插入图片描述
认识微服务
每个功能对应一种服务,避免业务重复开发,耦合度低,每个服务可以做一个对应的数据库,防止数据污染;
在这里插入图片描述
总结:
在这里插入图片描述

SpringCloudAlibaba兼容前面两种:

在这里插入图片描述
企业微服务遇到场景:

在这里插入图片描述
SpringCloud=SpringBoot+新的组件,因为基于springboot可以将这些组件自动装配;

在这里插入图片描述

服务拆分及远程调用

在这里插入图片描述

例子:
让订单模块调用用户模块(暴露接口),从而得到用户信息(数据库每个模块有自己专属的)

在这里插入图片描述
远程调用分析:订单模块只需要能够请求到用户模块即可

在这里插入图片描述
使用RestTemplate来完成远程调用获取用户信息;

1.现在主启动类注入一个RestTemplate组件

package cn.itcast.order;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
public class OrderApplication {public static void main(String[] args) {SpringApplication.run(OrderApplication.class, args);}/*** 创建RestTemplate并且注入Spring容器* @return*/@Beanpublic RestTemplate restTemplate(){return new RestTemplate();}
}

然后再订单的业务功能中调用RestTemplate中的方法对远程接口进行调用以获取数据:

getForObject(请求路径,数据类型)

package cn.itcast.order.service;import cn.itcast.order.mapper.OrderMapper;
import cn.itcast.order.pojo.Order;
import cn.itcast.order.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;@Service
public class OrderService {@Autowiredprivate OrderMapper orderMapper;@Autowiredprivate RestTemplate restTemplate;public Order queryOrderById(Long orderId) {// 1.查询订单Order order = orderMapper.findById(orderId);//2.利用RestTemplate发送http请求,查询用户String url="http://localhost:8081/user/"+order.getUserId();//2.1对url进行请求得到json数据,并且转化为User类型User user = restTemplate.getForObject(url, User.class);order.setUser(user);// 4.返回return order;}
}

在这里插入图片描述

消费者和提供者

服务与服务之间的关系需要相对来看,一个服务即可以是消费者也可以是提供者;

服务提供者:将接口暴露给其他服务;

服务消费者:调用暴露的接口;

EureKa注册中心

针对消费者如何获取提供者的地址信息;

对于消费者如何在多个提供者中进行选择;

消费者如何知道提供者健康状态;
在这里插入图片描述
这里,EureKa全部帮你解决了

所有的服务,只要在EureKa的客户端,都会被注册到EureKa的注册中心(就跟暗网一样),每个人都能又当商家又当卖家,比如这里的消费者->会对其他服务进行请求;

直接根据具体的请求向EureKa拉取提供者信息;

而多个提供者的筛选——>消费者会利用负载均衡算法选择一个微服务进行远程调用;

而其他服务的请求状态(是否宕机等等),每30s会对注册中心反馈一次心跳;

在这里插入图片描述

EureKa实战:搭建EureKaServer
在这里插入图片描述

1.先专门建一个 EureKa服务端,然后引入EureKa-server依赖
在这里插入图片描述

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

2.对EureKa启动类中+@EnableEureKaServer注解,声明是一个EureKa服务启动

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

3.在yaml中配置EureKa服务端地址->(另外要把自己也注册到EureKa客户端中,因为如果有多个EureKa,也就是集群,会出现相互调用的情况)

server:port: 10086 # 服务端口
spring:application:name: eurekaserver # eureka的服务名称
eureka:client:service-url: # eureka的地址信息,因为eureka也要注册自己,比如eureka集群之间需要通信defaultZone: http://127.0.0.1:10086/eureka

服务名字+信息地址 (服务注册地址)
在这里插入图片描述

服务注册:(对一个服务设置多个端口进行处理)

好处

有利于分担请求压力

对服务进行引入EureKa的依赖+yaml中配置EureKa的地址——>代表服务注册

在这里插入图片描述
.对服务引入EureKa-client依赖,并且在yaml中设置EureKa地址以及服务名称

 <!--eureka客户端--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>
server:port: 8080
spring:datasource:url: jdbc:mysql://localhost:3306/cloud_order?useSSL=falseusername: Wuyuhangpassword: 2002514wyh11driver-class-name: com.mysql.jdbc.Driverapplication:name: orderservice # user的服务名称
eureka:client:service-url: # user的地址信息defaultZone: http://127.0.0.1:10086/eureka

我们还可以对一个服务多端口的方式注册到EureKa中:

在这里插入图片描述
在其中配置端口信息即可:Dserver:8082

在这里插入图片描述

效果:

在这里插入图片描述

负载均衡

在orderservice中完成服务拉取:基于服务名称来获取服务列表,然后根据服务列表进行负载均衡 ——>默认是轮流机制;

在这里插入图片描述

总结

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动化测试开发 —— 如何封装自动化测试框架?

封装自动化测试框架&#xff0c;测试人员不用关注框架的底层实现&#xff0c;根据指定的规则进行测试用例的创建、执行即可&#xff0c;这样就降低了自动化测试门槛&#xff0c;能解放出更多的人力去做更深入的测试工作。本篇文章就来介绍下&#xff0c;如何封装自动化测试框架…

Wireshark抓包常用指令

1.常用过滤规则 指定源地址&#xff1a; ip.src 10.0.1.123ip.src 10.0.1.123 && udphttp数据链路层&#xff1a;筛选mac地址为04:f9:38:ad:13:26的数据包----eth.src 04:f9:38:ad:13:26筛选源mac地址为04:f9:38:ad:13:26的数据包----eth.src 04:f9:38:ad:13:26网…

图片怎么转换成pdf格式?好方法必须分享

图片怎么转换成pdf格式&#xff1f;也许一些朋友会问&#xff0c;为什么要将图片转换成PDF文件呢&#xff1f;众所周知&#xff0c;PDF文件格式具有较高的安全性和兼容性&#xff0c;并且不容易编辑。因此&#xff0c;在打印时&#xff0c;将图片转换成PDF格式后再进行打印可以…

postgis数据库导出csv表再导入postgis

1、导出csv表 from settings_Address import * from sqlalchemy import create_engine, MetaData import pandas as pd def create_conn(Postgis_user,Postgis_password,Postgis_host,Postgis_port,dbname_PG):# return create_engine(PostgispyPostgis://{}:{}{}:{}/{}.forma…

云端AI:释放企业创新力,打造智慧企业

文章目录 1. 云端AI的基本概念1.1 云计算1.2 人工智能1.3 云端AI 2. 云端AI的重要性2.1 成本效益2.2 弹性扩展2.3 无缝整合2.4 实时更新 3. 云端AI的应用领域3.1 智能客服3.2 预测分析3.3 自动化生产 4. 云端AI的未来趋势4.1 边缘计算与云端AI的融合4.2 可解释性AI4.3 隐私和安…

android studio 的 adb配置

首先在 Android Studio 中 打开 File -> Settings: 下载 “Google USB Driver” 这个插件 (真机调试的时候要用到), 并且记一下上面的SDK路径: 右键桌面上的 “我的电脑”, 点击 “高级系统设置”, 配置计算机的高级属性, 有两步: 添加一个新的环境变量 ANDROID_HOME, 变量…

2023年数学建模国赛A 定日镜场的优化设计思路分析

构建以新能源为主体的新型电力系统&#xff0c;是我国实现“碳达峰”“碳中和”目标的一项重要措施。塔式太阳能光热发电是一种低碳环保的新型清洁能源技术[1]。定日镜是塔式太阳能光热发电站&#xff08;以下简称塔式电站&#xff09;收集太阳能的基本组件&#xff0c;其底座由…

解决windows下git操作提示用户名密码错误的问题

当代码从一个平台切换到另一个平台的时候&#xff0c;需要做两步操作&#xff0c;第一步就是更新git的仓库地址&#xff0c;在项目的.git/config文件里面修改&#xff0c;这一步做完之后&#xff0c;就可以推送代码到新的仓库了&#xff0c;这里就是重点来了。 一般第一次推动代…

手机无人直播软件在苹果iOS系统中能使用吗?

在现代社交媒体的时代&#xff0c;直播带货已经成为了一种热门的销售途径。通过直播&#xff0c;人们可以远程分享自己的商品&#xff0c;与观众进行互动&#xff0c;增强沟通和参与感。而如今&#xff0c;手机无人直播软件更是成为了直播带货领域的一项火爆的技术。那么&#…

【HTML专栏1】语法规范、基础结构标签

本文属于HTML/CSS专栏文章&#xff0c;适合WEB前端开发入门学习&#xff0c;详细介绍HTML/CSS如果使用&#xff0c;如果对你有所帮助请一键三连支持&#xff0c;对博主系列文章感兴趣点击下方专栏了解详细。 博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;HTML/CS…

ASP.NET Core 中的 MVC架构

MVC 架构 MVC架构把 App 按照逻辑分成三层&#xff1a; Controllers&#xff0c;接收 http request&#xff0c;配合 model&#xff0c;通过http response 返回 view&#xff0c;尽量不做别的事Models, 负责业务逻辑&#xff0c;App 的状态&#xff0c;以及数据处理Views&…