支付微服务集群配置
新建8002
1. 建module
2. 改pom (和8001一样)
3. Yml
5. 主启动类
6. 业务类
7. 测试
http://localhost:8001/payment/get/2
{
"code": 200,
"message": "select successfully :), +server Port:8001",
"data": {
"id": 2,
"serial": "2test"
}
}
consumer一直是8001
http://localhost/consumer/payment/get/2
{
"code": 200,
"message": "select successfully :), +server Port:8001",
"data": {
"id": 2,
"serial": "2test"
}
}
负载均衡, server url不能写死
Load banlance注解
Ribbon 和 Eureka整合后,Consumer可以直接调用服务而不用在关心地址和端口号,还有负载均衡功能了
服务发现 + 自我保护
- 对于注册进eureka里面的微服务,可以通过服务发现来获得该服务信息
- 修改8001的controller
@Resource
privateDiscoveryClientdiscoveryClient;
@GetMapping(value="/payment/discovery")
publicObjectdiscovery(){
List<String>services=discoveryClient.getServices();
for(Stringservice:services
){
log.info("***************Service:"+service);
}
//一个service下的全部具体实例
List<ServiceInstance>instances=discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");
for(ServiceInstanceinstance:instances
){
log.info(instance.getInstanceId()+"\t"+instance.getHost()+"\t"+instance.getPort()+"\t"+instance.getUri());
}
returnthis.discoveryClient;
}
-
8001主启动类 – @EnableDiscoveryClient
-
自测 http://localhost:8001/payment/discovery
-
自我保护
一大排红字just to be safe
某时刻某个微服务出问题了。不会注销任何微服务,依旧会对该信息进行保存
属于CAP里面的AP分支
-
怎么禁止自我保护
eureka
server:
#关闭自我保护机制,保证不可用服务被及时踢除
enable-self-preservation:false
#续期时间,即扫描失效服务的间隔时间(缺省为60*1000ms)
eviction-interval-timer-in-ms:2000
8001
eureka
instance:
#Eureka客户端向服务端发送心跳的时间间隔,单位为秒(默认是30秒)
lease-renewal-interval-in-seconds:1
#Eureka服务端在收到最后一次心跳后等待时间上限,单位为秒(默认是90秒),超时将剔除服务
lease-expiration-duration-in-seconds:2
关掉8001后,马上就没了
停更说明