SpringCloud
尚硅谷(2020)



动力节点(2022)学!ng
微服务简介

不足

到底什么是微服务?


不足,利大于弊

设计原则

Eureka
快速入门
搭建一个注册中心,并且让他可以提供注册的服务
eureka-server --> 注册中心,可以让别人注册,自己也可以注册

IDEA
- 新建两个maven,主要为了方便查看项目

新建server端
-
新建springboot项目(eureka-server)

-
选择eureka server

-
配置依赖版本


-
修改配置文件
application.yml
server: port: 8761 # eureka默认端口 spring: application: name: eureka-server # 应用名称,不要使用特殊字符 -
在程序入口处添加注解
可以先修改下名字



-
启动项目

-
访问http://localhost:8761/

DS Replicas:集群相关信息
Instances currently registered with Eureka:当前在Eureka注册的实例(一个应用可以有多个实例,每个实例的id唯一)

新建client端
-
新建springboot项目(eureka-client)

-
选择eureka discovery client和spring web

-
配置依赖版本


-
修改配置文件
application.yml
server: port: 8080 spring: application: name: eureka-client-a # 应用名称,不要使用特殊字符 # 注册的含义是什么? 就是将自己的一些信息(什么信息)发送过去(发到哪里) eureka: client: service-url: # 指定注册的地址 defaultZone: http://localhost:8761/eureka -
在程序入口处添加注解

-
启动项目

-
查看面板http://localhost:8761/

可以按照同样方法创建eureka-client-b

如果集群,把eureka-client-a整两个实例,怎么整?
再创建一个相同项目,把端口改一下(麻烦)
Run/Debug Configurations
启动成功

注册中心的配置
服务器端
首先明确几点:
注册中心需要一个服务列表(容器),里面保存应用信息
应用下线了或者挂了,需要整理
主动下线怎么处理?
被动下线怎么处理?注册中心主动剔除
应用A访问应用B,需要每次都向注册中心查么?不需要,可以在本地缓存服务列表
脏读怎么办?
如果在一个时间段内大量的应用都不和服务中心联系,怎么办,eureka-server不会剔除任何一个服务。
宁可放过一万,都不能错杀一个。AP高可用
server:
port: 8761 # eureka默认端口
spring:
application:
name: eureka-server # 应用名称,不要使用特殊字符
# eureka配置分为三大类 server client 实例的
eureka:
server:
eviction-interval-timer-in-ms: 10000 # 服务端间隔多少ms做定期删除的操作
renewal-percent-threshold: 0.85 # 续约百分比,超过85%的应用没有和服务端续约,不会剔除任何一个
instance: # 实例的配置
instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port} # 主机名称:应用名称:端口号
hostname: localhost # 主机名称或者服务的ip
prefer-ip-address: true # 以ip的形式显示具体的服务信息
lease-renewal-interval-in-seconds: 5 # 服务实例续约的时间间隔
客户端
server:
port: 8080
spring:
application:
name: eureka-client-a # 应用名称,不要使用特殊字符
# 注册的含义是什么? 就是将自己的一些信息(什么信息)发送过去(发到哪里)
eureka:
client: # 客户端的相关配置
service-url: # 指定注册的地址
defaultZone: http://localhost:8761/eureka
register-with-eureka: true # 可以不向eureka-server注册
fetch-registry: true # 是否缓存服务列表到本地
registry-fetch-interval-seconds: 10 # 为了缓解服务列表的脏读问题,(时间越少脏读越少但性能消耗大)
instance:
hostname: localhost # 应用的主机名称 最好写ip
instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}
prefer-ip-address: true # 显示ip
lease-renewal-interval-in-seconds: 10 # 示例续约的时间
本文来自博客园,作者:NeverLateThanBetter,转载请注明原文链接:https://www.cnblogs.com/do-it-520/p/SpringCloud.html
韶华易逝,不能虚度年华。


浙公网安备 33010602011771号