赞
踩
回到总概
上一篇:Spring Cloud - 项目练习 - 1.项目准备
下一篇
<dependencies> <!--引入自己定义的api通用包--> <dependency> <groupId>cloud.learn</groupId> <artifactId>example-common-api</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> </dependency> <!--mysql-connector-java--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!--jdbc--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- 热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
server: port: 8001 spring: application: name: eureka-provider-payment datasource: # 当前数据源操作类型 type: com.alibaba.druid.pool.DruidDataSource # mysql驱动包 driver-class-name: org.gjt.mm.mysql.Driver url: jdbc:mysql://localhost:3306/cloud_learn?useUnicode=true&characterEncoding=utf-8&useSSL=false username: #数据库用户名 password: #数据库密码 mybatis: # xml文件夹位置 mapper-locations: classpath:mapper/*.xml # 所有Entity别名类所在包 type-aliases-package: cloud.learn.entities
<dependencies> <!--引入自己定义的api通用包--> <dependency> <groupId>cloud.learn</groupId> <artifactId>example-common-api</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!-- 热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
server:
port: 80
spring:
application:
name: eureka-consumer-order
package cloud.learn.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class ApplicationContextConfig {
@Bean
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
package cloud.learn.controller; import cloud.learn.entities.CommonResult; import cloud.learn.entities.Payment; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; @RestController @RequestMapping("eureka/order/") public class OrderController { private String URL_PAYMENT_PRE = "http://localhost:8001/eureka/payment/"; @Resource private RestTemplate restTemplate; @GetMapping("get/{id}") public CommonResult queryById(@PathVariable("id") Long id) { System.out.println("eureka-consumer-order80"); CommonResult result = restTemplate.getForObject(URL_PAYMENT_PRE + "get/" + id, CommonResult.class); result.setMessage(result.getMessage()+"eureka-consumer-order80"); return result; } @GetMapping("create") public CommonResult create(Payment payment) { System.out.println("eureka-consumer-order80"); CommonResult result = restTemplate.postForObject(URL_PAYMENT_PRE + "insert", payment, CommonResult.class); result.setMessage(result.getMessage()+"eureka-consumer-order80"); return result; } }
localhost/eureka/order/get/1
和localhost/eureka/order/create?serial=aa
并对比数据库<dependencies> <!-- eureka-server --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies>
server:
port: 7001
eureka:
instance:
# eureka server名称
hostname: localhost
client:
# 不向服务注册中心注册自身
register-with-eureka: false
# 不会拉取服务列表
fetch-registry: false
service-url:
# eureka server的地址
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka
package cloud.learn;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class EurekaServer {
public static void main(String[] args) {
SpringApplication.run(EurekaServer.class, args);
}
}
localhost:7001
成功显示eureka网页<!-- 服务注册中心的客户端端 eureka-client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
eureka:
client:
service-url:
defaultZone: http://localhost:7001/eureka
@EnableEurekaClient
注释localhost:7001
查看表(Instances currently registered with Eureka)中两个微服务成功注册# eureka-server7002子Module server: port: 7002 eureka: instance: # eureka server名称 hostname: eurekaServer7002 client: # 不向服务注册中心注册自身 register-with-eureka: false # 不会拉取服务列表 fetch-registry: false service-url: # eureka server的地址 defaultZone: http://eurekaServer7001:7001/eureka
# eureka-server7001子Module server: port: 7001 eureka: instance: # eureka server名称 hostname: eurekaServer7001 client: # 不向服务注册中心注册自身 register-with-eureka: false # 不会拉取服务列表 fetch-registry: false service-url: # eureka server的地址 defaultZone: http://eurekaServer7002:7002/eureka
package cloud.learn;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class EurekaServer7002 {
public static void main(String[] args) {
SpringApplication.run(EurekaServer7002.class, args);
}
}
localhost:7001
和localhost:7002
地址查看两个服务注册中心,能正常显示且可以查看到另一个服务注册中心http://eurekaServer7001:7001/eureka/,http://eurekaServer7002:7002/eureka/
127.0.0.1 eurekaServer7001
和127.0.0.1 eurekaServer7002
两行server: port: 8002 spring: application: name: eureka-provider-payment datasource: # 当前数据源操作类型 type: com.alibaba.druid.pool.DruidDataSource # mysql驱动包 driver-class-name: org.gjt.mm.mysql.Driver url: jdbc:mysql://localhost:3306/cloud_learn?useUnicode=true&characterEncoding=utf-8&useSSL=false username: root password: 123456 mybatis: # xml文件夹位置 mapper-locations: classpath:mapper/*.xml # 所有Entity别名类所在包 type-aliases-package: cloud.learn.entities eureka: client: service-url: defaultZone: http://eurekaServer7001:7001/eureka/,http://eurekaServer7002:7002/eureka/ instance: # 注入服务注册中心时使用的别名,不写时默认使用spring.application.name instance-id: payment8002
localhost:8001
改为别名eureka-provider-payment
@LoadBalanced
注释@GetMapping("discovery")
public CommonResult discovery() {
Map<String, List<String>> servicesResult = new HashMap<>();
List<String> services = discoveryClient.getServices();
for (String service : services) {
List<ServiceInstance> instances = discoveryClient.getInstances(service);
List<String> tmp = new ArrayList<>();
for (ServiceInstance instance : instances) {
tmp.add(instance.getServiceId()+"\t"+instance.getHost() + "\t" + instance.getPort() + "\t" + instance.getUri());
}
servicesResult.put(service, tmp);
}
return new CommonResult(200, "success", servicesResult);
}
eureka:
server:
# 关闭自我保护机制
enable-self-preservation: false
# 扫描失效服务的间隔时间(单位毫秒,默认是60秒)
eviction-interval-timer-in-ms: 2000
eureka:
instance:
# 客户端向注册中心发送心跳的时间间隔
lease-renewal-interval-in-seconds: 1
# 注册中心等待下一次心跳的超时时间
lease-expiration-duration-in-seconds: 2
sult);
}
3. 测试:访问该接口查看响应中的服务列表信息
## 自我保护禁用
1. 服务注册中心改yml:为yml文件添加以下配置
```yml
eureka:
server:
# 关闭自我保护机制
enable-self-preservation: false
# 扫描失效服务的间隔时间(单位毫秒,默认是60秒)
eviction-interval-timer-in-ms: 2000
eureka:
instance:
# 客户端向注册中心发送心跳的时间间隔
lease-renewal-interval-in-seconds: 1
# 注册中心等待下一次心跳的超时时间
lease-expiration-duration-in-seconds: 2
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。