SpringCloud01——服务的注册和发现
2024-10-06 18:09:34
SpringCloud01——服务的注册和发现
一、微服务的注册和发现
我们在微服务中,往往有服务提供者,服务消费者和服务注册中心。我们之前学习的Zookeeper就是一个注册中心。但是在官方的SpringCloud中,并不推荐使用ZK作为注册中心,我们往往使用eureka
服务提供者,服务消费者,注册中心呈一个三角关系
1.服务提供者将服务注册到中心
2.服务消费者通过注册中心去查找服务
3.查找服务后进行调用
4.服务消费者和服务注册中心保持心跳连接,一旦服务提供者的地址发生改变,注册中心会通知服务消费者
二、注册中心eureka
SpringCloud提供了多种注册中心支持,eureka,zk等,官方推荐eureka
科普:什么是Eureka?
Eureka是Netfix开源的服务发现组件,本身是一个基于Rest的服务。包含Server和Client两部分。SpringCloud将其集成在子项目Spring Cloud Netflix中,从而实现微服务的注册和发现。
2.1.编写Eureka Server
2.1.1.新建一个Spring Starter,导入eureka server
2.1.2.创建一个application.yml,在启动类@EnableEurekaServer
server:
port: 1111 #服务端口
eureka:
client:
register-with-eureka: false #是否将自己注册到Eureka服务中,自己本来就是服务无需注册
fetch-registry: false #是否从Eureka中获取注册信息
service-url: # Eureka客户端与Eureka服务端交互地址
defaultZone: http://localhost:${server.port}/eureka/
2.1.3.新建一个Spring Starter,导入eureka,编写一个服务
2.1.4.创建一个application.yml,在启动类@EnableDiscoveryClient,去上面那个注册中心去注册发现
server:
port: 8081
spring:
application:
name: microservice-item
eureka:
client:
register-with-eureka: true
fetch-registry: true #是否从eureka中获取注册信息,默认true
service-url:
defaultZone: http://localhost:1111/eureka/
2.1.5.编写服务(关键代码)
@Service
public class ItemService {
@Autowired
private RestTemplate restTemplate;
@Autowired
private DiscoveryClient discoveryClient;
/**
* 商品微服务进行查询
* @param id
* @return
*/
public Item queryItemById(Long id) {
List<ServiceInstance> instances = discoveryClient.getInstances("MICROSERVICE-ITEM");
ServiceInstance serviceInstance = instances.get(0);
String url="http://"+serviceInstance.getHost()+":"+serviceInstance.getPort()+"/item/"+id;
return restTemplate.getForObject(url, Item.class);
}
}
2.2.编写eruka-client
2.2.1.新建一个eruka-client,添加eruka发现组件和web包
2.2.2.编写配置文件application.yml
#服务端口
server:
port: 8888
#应用名称及验证账号
spring:
application:
name: server-text
#注册中心
eureka:
# server:
# enable-self-preservation: false #关闭保护机制
# eviction-interval-timer-in-ms: 2000 #剔除失效服务间隔,单位毫秒
client:
register-with-eureka: true
fetch-registry: true
#设置服务注册中心的URL
service-url:
defaultZone: http://root:root@eureka-7901:7901/eureka/
instance:
hostname: server-text
2.2.3.添加启动类注解
@EnableEurekaClient
2.2.4.启动后发现集群启动正常
最新文章
- 现代DOJO(翻译)
- 如何为基于windows验证的站点的某个页面、文件或文件夹单独设置匿名访问
- 自定义日志阅读器——包括了一个load取Tomcat日志的分析器
- An internal error occured during :";C/C++"; . java.lang.NullPointerException
- (2016春) 作业1:博客和Github简单练习
- android菜鸟学习笔记2----关于adb
- Red5下的room
- [转]使用Navicat for Oracle工具连接oracle的
- 求求别再这么用log4x了
- ios 初体验<;页面切换>;
- ds4700更换控制器导致磁盘无法识别-处理方法
- 【Windows】+ win10 通过KMS激活
- 2017.11.19 C语言基础及流水灯实现
- Spark基础脚本入门实践2:基础开发
- C# Why does '+' + a short convert to 44
- TensorFlow实战——个性化推荐
- js 判断 undefined,单选 以及下拉框选中状态
- mac配置完ssh依然提示";Enter passphrase for key";解决方法
- 每天一个linux命令(文件操作):【转载】find命令之exec
- unity3D使用C#遍历场景内所有元素进行操作
热门文章
- 记录编译<;Separable Subsurface Scattering demo>;工程遇到的问题
- [Kevin英语情报局]那些年我们说过的中式英语
- 冲刺Noip2017模拟赛6 解题报告——五十岚芒果酱
- vue文字向上滚动
- linux系统调用、库函数和内核函数关系与区别
- 虚拟机(VM)安装openwrt-koolshare软路由
- 下载HTMLTestRunner 地址
- NAT 模式下有两个虚拟机 网段不一样,一台可上网,可ping通,一台上不了网且ping不通
- mydumper,myloader原理及实战
- k8s-traefik默认80端口