德州市建设局质监站网站,软件开发方案书,免费在线图片设计制作生成器,安卓系统是谁开发的学习 Eureka 注册中心 一、创建 Eureka 微服务0、SpringBoot 和 SpringCloud 版本1、引入 Eureka 服务端依赖2、启动类加 EnableEurekaServer 注解3、配置 yaml 文件#xff0c;把 Eureka 服务注册到 Eureka 注册中心4、访问 Eureka 服务端#xff0c;查看注册中心的服务列表… 学习 Eureka 注册中心 一、创建 Eureka 微服务0、SpringBoot 和 SpringCloud 版本1、引入 Eureka 服务端依赖2、启动类加 EnableEurekaServer 注解3、配置 yaml 文件把 Eureka 服务注册到 Eureka 注册中心4、访问 Eureka 服务端查看注册中心的服务列表信息 二、其他微服务注册到 Eureka 中1、添加 Eureka 客户端依赖2、在 yaml 文件中配置 Eureka 服务端信息3、IDEA 2022 中启动多个服务实例 三、服务发现1、启动 RestTemplate 的负载均衡2、根据服务名从 Eureka 注册中心中获取服务的IP和端口号 四、Ribbon 负载均衡原理五、修改负载均衡规则六、饥饿加载 一、创建 Eureka 微服务 0、SpringBoot 和 SpringCloud 版本 parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.3.9.RELEASE/version/parentdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversionHoxton.SR10/versiontypepom/typescopeimport/scope/dependency1、引入 Eureka 服务端依赖 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-server/artifactId/dependency2、启动类加 EnableEurekaServer 注解
EnableEurekaServer
SpringBootApplication
public class EurekaApplication {public static void main(String[] args) {SpringApplication.run(EurekaApplication.class, args);}
}3、配置 yaml 文件把 Eureka 服务注册到 Eureka 注册中心
server:port: 10086spring:application:name: eureka-server# 将eureka-server注册到Eureka注册中心
eureka:client:service-url: # 需要加【/eureka】否则无法注册defaultZone: http://127.0.0.1:10086/eureka4、访问 Eureka 服务端查看注册中心的服务列表信息
如http://localhost:10086/
二、其他微服务注册到 Eureka 中 1、添加 Eureka 客户端依赖 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-client/artifactId/dependency2、在 yaml 文件中配置 Eureka 服务端信息
server:port: 8080
spring:application:name: order-service
eureka:client:service-url: defaultZone: http://127.0.0.1:10086/eurekaserver:port: 8081spring:application:name: user-serviceeureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka3、IDEA 2022 中启动多个服务实例 三、服务发现
1、启动 RestTemplate 的负载均衡 使用服务名根据负载均衡规则挑选服务提供者 BeanLoadBalancedpublic RestTemplate restTemplate() {return new RestTemplate();}2、根据服务名从 Eureka 注册中心中获取服务的IP和端口号
// String url http://localhost:8081/user/ order.getUserId(); // 硬编码
// 根据服务名从 Eureka 注册中心中获取服务的IP和端口号
String url http://user-service/user/ order.getUserId();四、Ribbon 负载均衡原理
LoadBalancerInterceptor 会拦截被 LoadBalanced 注解标注的 RestTemplate 发起的请求。它实现了 ClientHttpRequestInterceptor 接口该接口作用拦截客户端HTTP请求。LoadBalancerInterceptor 的 intercept 方法中获取服务名称把服务名称交给 RibbonLoadBalanceClientRibbonLoadBalanceClient 把服务名称交给 DynamicServerListLoadBalancerDynamicServerListLoadBalancer 从 Eureka 注册中心获取该服务名的所有的实例信息然后根据负载均衡规则挑选一个服务实例chooseServer。负载均衡规则由 IRule 接口指定IRule 的实现类有RoundRobinRule轮询、RetryRule、RandomRule随机
五、修改负载均衡规则 Beanpublic IRule iRule() {return new RandomRule();}user-service:ribbon: # user-service的负载均衡规则是随机NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule六、饥饿加载
ribbon:eager-load:enabled: true # 饥饿创建负载均衡客户端RibbonLoadBalanceClientclients: user-service # 指定对user-service服务执行饥饿加载RibbonLoadBalanceClient 默认是懒创建首次访问的时候才创建首次请求响应时间会比较长。 饥饿加载项目创建的时候就创建 RibbonLoadBalanceClient