前言
本篇博文是关于SpringCloud Eureka搭建会员中心服务提供方-集群,希望你能够喜欢
个人主页:晨犀主页
个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力
欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看
如果文章有什么需要改进的地方还请大佬不吝赐教 先在此感谢啦
server:
port: 10002
@SpringBootApplication
@EnableEurekaClient
public class MemberProviderApplication10000 {
public static void main(String[] args) {
SpringApplication.run(MemberProviderApplication10000.class, args);
}
}
@SpringBootApplication
@EnableEurekaClient
public class MemberProviderApplication10002 {
public static void main(String[] args) {
SpringApplication.run(MemberProviderApplication10002.class, args);
}
}
启动eureka server 集群(目前2 台)
启动member-service-provider-10000
启动member-service-provider-10002
测试页面
浏览器输入: http://eureka9001.com:9001/
浏览器输入: http://eureka9002.com:9002/
//定义member_service_provider_url 这是一个基础url地址
//使用shift+ctrl+u 进行字母大小写的切换
/**
* 说明:
* 1. MEMBER-SERVICE-PROVIDER 就是服务提供方[集群], 注册到Eureka Server 的名称
* 2. 也就是服务提供方[集群]对外暴露的名称为 MEMBER-SERVICE-PROVIDER
* 3. MEMBER-SERVICE-PROVIDER 目前有 两个 Availability Zones member-service-provider:10000
* 还有一个 member-service-provider:10002
* 需要增加一个注解@LoadBalanced 赋予 RestTemplate 负载均衡的能力,也就是会根据你的负载均衡算法
* 来选择某个服务去访问, 默认是轮询算法, 当然我们也可以自己配置负载均衡算法
*/
public static final String MEMBER_SERVICE_PROVIDER_URL =
"http://MEMBER-SERVICE-PROVIDER";
@Configuration
public class CustomizationBean {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
@GetMapping(value = "/member/get/{id}")
public Result getMemberById(@PathVariable("id") Long id) {
Member member = memberService.queryMemberById(id);
log.info("查询结果= " + member);
if (member != null) {
return Result.success("查询成功member-service-provider-10000", member);
}
else {
return Result.error("402", "ID= " + id + " 不存在");
}
}
启动member-service-provider-10000
启动member-service-provider-10002
先测试: http://localhost:10000/member/get/1 和http://localhost:10002/member/get/1
http://localhost:10000/member/get/1
http://localhost:10002/member/get/1
浏览器访问: http://localhost/member/consumer/get/1
再次访问,会看到访问到不同的服务.
1.spring-cloud-starter-netflix-eureka-client 自带spring-cloud-starter-netflix-ribbon(如图)
@GetMapping("/member/consumer/discovery")
public Object discovery() {
List<String> services = discoveryClient.getServices();
//遍历services
for (String service : services) {
log.info("服务名={}",service);
List<ServiceInstance> instances = discoveryClient.getInstances(service);
for (ServiceInstance instance : instances) {
log.info("id={},host={},port={},uri={}",
instance.getServiceId(),instance.getHost(),instance.getPort(),instance.getUri());
}
}
return discoveryClient;
}
//排除DataSourceAutoConfiguration 自动配置
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
//@EnableEurekaClient 将该程序标识为EurekaClient
@EnableEurekaClient
//@EnableDiscoveryClient 注解启用服务发现
@EnableDiscoveryClient
public class MemberConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(MemberConsumerApplication.class, args);
}
}
后台信息:
在引入DiscoveryClient 时,不要引入错误的包
正确的包: import org.springframework.cloud.client.discovery.DiscoveryClient;
错误的包: import com.netflix.discovery.DiscoveryClient;
2.这里演示的是在服务消费方使用DiscoveryClient 来完成服务发现,同样,在服务提供方/模块也OK
文章到这里就结束了,如果有什么疑问的地方请指出,诸大佬们一起来评论区一起讨论
希望能和诸大佬们一起努力,今后我们一起观看感谢您的阅读
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力