Spring cloud 使用-eureka作為註冊中心
阿新 • • 發佈:2022-04-10
Spring cloud
Spring Cloud 為開發者提供了工具來快速構建分散式系統中的一些常見模式(例如配置管理、服務發現、斷路器、智慧路由、微代理、控制匯流排、一次性令牌、全域性鎖、領導選舉、分散式 會話,叢集狀態)。 分散式系統的協調導致了樣板模式,使用 Spring Cloud 開發人員可以快速建立實現這些模式的服務和應用程式。 它們在任何分散式環境中都能很好地工作,包括開發人員自己的膝上型電腦、裸機資料中心和 Cloud Foundry 等託管平臺。Spring cloud官網
使用 eureka 作為服務註冊中心
eureka 模組
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies>
eureka啟動類
@SpringBootApplication
@EnableEurekaServer
public class EruekaApplication {
public static void main(String[] args) {
SpringApplication.run(EruekaApplication.class);
}
}
配置properties.yml
server: port: 8761 eureka: instance: hostname: 127.0.0.1 client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ server: enable-self-preservation: false spring: application: name: erueka
eureka的具體文件可以通過Spring Cloud Netflix查閱
服務提供者
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> </dependencies>
配置 properties.yml
server:
port: 18081
spring:
datasource:
url: jdbc:mysql://localhost:3306/cloud_consumer?useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
application:
name: consumerservice
mybatis:
config-location: classpath:mybatis/mybatis-config.xml
mapper-locations: classpath:mybatis/mapper/*.xml
logging:
level:
cn.geoary: debug
pattern:
dateformat: MM-dd HH:mm:ss:SSS
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
啟動類,注意這裡添加了@EnableEurekaClient
註解
@MapperScan("cn.geoary.mapper")
@SpringBootApplication
@EnableEurekaClient
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class);
}
}
提供者提供了一個get請求 http://127.0.0.1:18080/consumer/{id}
的請求方法,用來通過主鍵查詢患者資訊。
服務消費者
消費者的配置與提供者類似,現在只把區別展示下。
呼叫請求方式,通過RestTemplate
,注意,這個需要添加註解@LoadBalanced
。
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
呼叫程式碼段:
private final String CONSUMER_SERVICE = "consumerservice";
String url = "http://" + CONSUMER_SERVICE + "/consumer/" + consumerId;
// String url = "http://127.0.0.1:18081/consumer/" + consumerId;
TConsumer tConsumer = restTemplate.getForObject(url, TConsumer.class);
這樣我們就把之前需要通過寫死的ip:port去呼叫請求的方式調成了 通過微服務名的方式來呼叫了。
通過 eureka 控制檯可以檢視註冊的微服務,也就是這裡的CONSUMERSERVICE
和 DRUGSETVICE
了。