当前位置:网站首页>【云原生】Eureka服务注册的搭建
【云原生】Eureka服务注册的搭建
2022-06-12 09:16:00 【小威要向诸佬学习呀】
前言:
本篇文章主要介绍服务注册中心Eureka的搭建及其中重要的一些部分。看了一些资料,总结如下。希望可以加深自己的印象以及帮助到各位小伙伴儿们
如果文章需要有什么改进的地方还请大佬多多指教
小威先谢谢各位大佬了
Eureka注册介绍
Eureka:服务注册中心(可以是⼀个集群)对外暴露⾃⼰的地址,对外暴露⾃⼰的服务地址
服务提供者:启动后向Eureka注册⾃⼰信息(地址,提供什么服务等信息)
消费者:向Eureka订阅服务,Eureka会将对应服务的所有提供者地址列表发送给消费者,并且定期更新⼼跳(续约):提供者定期通过http⽅式向Eureka刷新自己的状态
Erueka-Server:用于发现和注册应用服务
Application-Service:服务的提供者,嵌套Eureka-Client,向Eureka-Server注册自身服务
Application-Client:服务的消费者,嵌套Eureka-Client,从Eureka-Server获取服务列表
Make Remote Call:表示远程调用

搭建eureka-server
注册中心是微服务构架的通信录,记录服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用。
首先大家注册中心服务端:eureka-server,这必须是一个独立的微服务
第一步创建eureka-server服务
在cloud-demo父工程下,创建一个子模块:
填写模块信息:

然后填写服务信息:
引入SpringCloud为eureka提供的starter依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
编写启动类
给eureka-server服务编写一个启动类,一定要添加一个@EnableEurekaServer注解,开启eureka的注册中心功能:
package cn.itcast.eureka;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
编写配置文件
编写一个application.yml文件,内容如下:
server:
port: 10086
spring:
application:
name: eureka-server
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
启动服务
启动微服务,然后在浏览器访问:http://127.0.0.1:10086
会出现以下结果:

服务注册
我们需要将user-service注册到eureka-server中去。
第一步依然是引入依赖
在user-service的pom文件中,引入下面的eureka-client依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
第二步需要配置文件
在user-service中,修改application.yml文件,添加服务名称、eureka地址:
spring:
application:
name: userservice
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
由于要做集群,进行负载均衡,所以启动多个user-service实例
为了演示一个服务有多个实例的场景,我们添加一个SpringBoot的启动配置,再启动一个user-service。
搭建Eureka集群
eureka服务集群,相互之间进⾏注册,并在客户端将每个eureka服务地址配置在客户端配置⽂件中。
Eureka Server即服务的注册中⼼,在刚才的案例中,我们只有⼀个EurekaServer,事实上EurekaServer也可以是⼀个集群,形成高可用的Eureka中⼼。
服务同步:
多个Eureka Server之间也会互相注册为服务,当服务提供者注册到Eureka Server集群中的某个节点时,该节点会把服务的信息同步给集群中的每个节点,从⽽实现数据同步。因此,⽆论客户端访问到Eureka Server集群中的任意⼀个节点,都可以获取到完整的服务列表信息。
首先,复制原来的user-service启动配置:

然后,在弹出的窗口中,填写信息:

此时,SpringBoot窗口会出现两个user-service启动配置:

如上图,第一个是8081端口,第二个是8082端口。
启动两个user-service实例:

查看eureka-server管理页面:

🥤服务发现
我们将order-service的逻辑修改:向eureka-server拉取user-service的信息,实现服务发现。
引入依赖
之前说过,服务发现、服务注册统一都封装在eureka-client依赖,因此这一步与服务注册时一致。
在order-service的pom文件中,引入下面的eureka-client依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
配置文件
服务发现也需要知道eureka地址,因此第二步与服务注册一致,都是配置eureka信息:
在order-service中,修改application.yml文件,添加服务名称、eureka地址:
spring:
application:
name: orderservice
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
服务拉取和负载均衡
最后,我们要去eureka-server中拉取user-service服务的实例列表,并且实现负载均衡。
不过这些动作不用我们去做,只需要添加一些注解即可。
在order-service的OrderApplication中,给RestTemplate这个Bean添加一个@LoadBalanced注解:
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderApplication.class, args);
}
/** * 创建RestTemplate并注入Spring容器 */
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
/* @Bean public IRule randomRule() { return new RandomRule(); }*/
}
修改order-service服务中的cn.itcast.order.service包下的OrderService类中的queryOrderById方法。修改访问的url路径,用服务名代替ip、端口:
@Autowired
private RestTemplate restTemplate;
public Order queryOrderById(Long orderId) {
// 1.查询订单
Order order = orderMapper.findById(orderId);
// 2.利用RestTemplate发起http请求,查询用户
// 2.1.url路径
String url = "http://userservice/user/" + order.getUserId();
// 2.2.发送http请求,实现远程调用
User user = restTemplate.getForObject(url, User.class);
// 3.封装user到Order
order.setUser(user);
// 4.返回
return order;
}
spring会自动帮助我们从eureka-server端,根据userservice这个服务名称,获取实例列表,而后完成负载均衡。下一章我们将要讲解有关Ribbon负载均衡的知识,使我们在做项目中得到优化。
文章到这里就结束了,感谢各位小伙伴儿们的支持,以及希望能帮到大家
如果有什么需要改进的地方还请大佬多多指教
小威再次感谢大家的支持了
边栏推荐
- Share the basic knowledge of software testing and write something you don't know
- Jupyter notebook sets the default browser to open with an error syntaxerror: (Unicode error) 'UTF-8' codec can't decode byte 0xd4
- Hotspot Metaspace
- Can you migrate backwards before the first migration in the south- Can you migrate backwards to before the first migration in South?
- APP测试面试题汇总,面试必考一定要看
- Microservice gateway
- Selenium面试题分享
- JVM garbage collection
- Leetcode 336 palindrome pair (palindrome string + hash)
- Notes on data mining in Tsinghua University (1)
猜你喜欢

Chapter 3 registers (memory access)

Tool classes for extracting zip files

解压缩zip文件的工具类

Black screen solution for computer boot
There must be something you want to know about software testing experience sharing
ADB command collection, let's learn together
![Sword finger offer:[day 9 dynamic planning (medium)] --- > maximum sum of continuous subarrays](/img/6b/6dcc86bfe0f48103ef8420b9996c1e.jpg)
Sword finger offer:[day 9 dynamic planning (medium)] --- > maximum sum of continuous subarrays

2022 low voltage electrician retraining question bank and online simulation examination

Multi table operation instance

After receiving the picture, caigou was very happy and played with PDF. The submission format was flag{xxx}, and the decryption characters should be in lowercase
随机推荐
2022 simulated examination platform operation of high voltage electrician work license question bank
2022 melting welding and thermal cutting test questions and answers
Mysql database ignores case
解压缩zip文件的工具类
128. Plus longue séquence continue - table de hachage
Visualization of two-dimensional feature logistic regression prediction results
128. longest continuous sequence hash table
Basic exercise letter graphics
测试用例和bug描述规范参考
top命令含义
NiO principle
On absolute value function in C language
Description of string
List < string > sort
CodeCraft-22 and Codeforces Round #795 (Div. 2) 题解
2024. 考试的最大困扰度-滑动窗口
SQL basic syntax II
Occupied occupied occupied occupied occupied
Do you know how to improve software testing ability?
Oracle personal replication (I)