Eureka(AP)是基于REST(Representational State Transfer)服务注册中心.
C 一致性(Consistency)
A 可用性(Availability)
P 分区容错性(Tolerance of network Partition)
AP 保证了高可用 与分区容错性
项目名称:cloud
UTF-8
1.8
1.8
4.12
1.2.17
1.16.18
5.1.47
1.1.16
1.3.0
org.springframework.boot
spring-boot-dependencies
2.2.5.RELEASE
pom
import
org.springframework.cloud
spring-cloud-dependencies
Hoxton.SR3
pom
import
com.alibaba.cloud
spring-cloud-alibaba-dependencies
2.1.0.RELEASE
pom
import
mysql
mysql-connector-java
${mysql.version}
com.alibaba
druid
${druid.version}
org.mybatis.spring.boot
mybatis-spring-boot-starter
${mybatis.spring.boot.version}
junit
junit
${junit.version}
log4j
log4j
${log4j.version}
org.projectlombok
lombok
${lombok.version}
true
org.springframework.boot
spring-boot-maven-plugin
true
true
result类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CommonResult{
private Integer code;
private String message;
private T data;
public CommonResult(Integer code,String message){
this(code,message,null);
}
}
实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Payment implements Serializable {
private long id;
private String serial;
}
pom
org.springframework.boot
spring-boot-devtools
runtime
true
org.projectlombok
lombok
true
cn.hutool
hutool-all
5.1.0
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
com.eureka.springcloud
cloud-api-commons
${project.version}
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-actuator
org.mybatis.spring.boot
mybatis-spring-boot-starter
com.alibaba
druid-spring-boot-starter
1.1.10
mysql
mysql-connector-java
org.springframework.boot
spring-boot-starter-jdbc
org.springframework.boot
spring-boot-devtools
runtime
true
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
server:
port: 8001
spring:
application:
name: cloud-payment-service
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/xxx?useUnicode=true&characterEncoding=utf-8&useSSL=false
password: root
username: root
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.demo.springcloud.entities
eureka:
client:
#表示是否将自己注册进EurekaServer默认为true。
register-with-eureka: true
#是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
fetch-registry: true
# eureke地址
service-url:
defaultZone: http://eureka7001:7001/eureka,http://eureka7002.com:7002/eureka
instance:
instance-id: patment8001
prefer-ip-address: true
@EnableEurekaClient
@EnableDiscoveryClient
yml
server:
port: 80
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
spring:
application:
name: cloud-order-server
使用 RestTemplate 模板
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
controller
@RestController
public class OrderController {
//单机
//private static final String PAYMENT_URL="http://localhost:8001/";
private static final String PAYMENT_URL="http://CLOUD-PAYMENT-SERVICE/";
@Resource
private RestTemplate restTemplate;
@GetMapping("consumer/create")
public CommonResult create(Payment payment){
return restTemplate.postForEntity(PAYMENT_URL+"payment/create",payment,CommonResult.class).getBody();
}
@GetMapping("consumer/get/{id}")
public CommonResult getPaymentById(@PathVariable("id") long id){
CommonResult forObject = restTemplate.getForObject(PAYMENT_URL + "payment/get/" + id, CommonResult.class);
return forObject;
}
}
需要在 hosts文件 添加者=这两句
127.0.0.1 eureka7001.com
127.0.0.1 eureka7002.com
eureka 集群
7001yml
server:
port: 7001
eureka:
instance:
hostname: eureka7001.com
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://eureka7002.com:7002/eureka
server:
enable-self-preservation: false
eviction-interval-timer-in-ms: 2000
7002yml
server:
port: 7002
eureka:
instance:
hostname: eureka7002.com
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://eureka7001.com:7001/eureka
server:
enable-self-preservation: false
eviction-interval-timer-in-ms: 2000
两个服务的启动类都需要添加 注解
@EnableEurekaServer