SprigCloud-Day1-认识微服务
认识微服务
1. 服务治理
分布式架构的要考虑的问题:
•服务拆分粒度如何?
•服务集群地址如何维护?
•服务之间如何实现远程调用?
•服务健康状态如何感知?
2 服务拆分及调用
3.Eureka注册中心
-
EurekaServer:服务注册
- 记录服务信息
- 心跳监控
-
EurekaClient:客户端
- Provider:服务提供者
- 注册自己的信息到EurekaServer
- 每隔30秒像EurekaServer发送心跳
- Consumer
- 根据服务名称从EurekaServer中拉去服务列表
- 基于服务列表做负载均衡,选中一个微服务后发起远程请求
- Provider:服务提供者
-
搭建eureka
引入依赖
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies>
添加@EnableEurekaServer
package cn.itcast; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @EnableEurekaServer @SpringBootApplication public class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class,args); } }
在application.yml中配置eureka地址
server: port: 10086 # 服务端口 spring: application: # eureka服务名称 name: eurekaserver eureka: client: service-url: #eureka 的地址信息 defaultZone: http://127.0.0.1:10086/eureka
-
注册user-service
<!--eureka-client--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
server: port: 8081 spring: datasource: url: jdbc:mysql://localhost:3306/cloud_user?useSSL=false username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver application: # user服务名称 name: userservice mybatis: type-aliases-package: cn.itcast.user.pojo configuration: map-underscore-to-camel-case: true logging: level: cn.itcast: debug pattern: dateformat: MM-dd HH:mm:ss:SSS eureka: client: service-url: #eureka 的地址信息 defaultZone: http://127.0.0.1:10086/eureka
-
order-service完成拉取服务
String url= "http://userservice/user/" +order.getUserId();
@Bean @LoadBalanced public RestTemplate restTemplate(){ return new RestTemplate(); }
-
Ribbon负载均衡
轮询- 调整负载均衡的规则,定义新的IRule,全体服务
@Bean public IRule randomRule(){ return new RandomRule(); }
- 在yml文件中配置,针对某个服务
userservice: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
饥饿加载
#开启饥饿加载 #指定饥饿加载的服务名称 ribbon: eager-load: enabled: true clients: userservice - 更多的服务加载