# 电商多店运维实战:解决云机24小时挂机掉线、账号高频风控问题 ##
2026/7/18 22:09:25
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>spring.application.name=service-order server.port=8000 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848@EnableDiscoveryClient//开启服务发现功能@SpringBootApplicationpublicclassProductMainApplication{publicstaticvoidmain(String[]args){SpringApplication.run(ProductMainApplication.class,args);}}@SpringBootTestpublicclassDiscoveryTest{@AutowiredDiscoveryClientdiscoveryClient;@AutowiredNacosServiceDiscoverynacosServiceDiscovery;@TestvoiddiscoveryClientTest(){//获取所有服务for(Stringservice:discoveryClient.getServices()){System.out.println("service = "+service);//获取ip+port//获取所有实例List<ServiceInstance>instances=discoveryClient.getInstances(service);for(ServiceInstanceinstance:instances){System.out.println("ip; "+instance.getHost()+"; "+"port = "+instance.getPort());}}}@TestvoidnacosServiceDiscoveryTest()throwsNacosException{for(Stringservice:nacosServiceDiscovery.getServices()){System.out.println("service = "+service);//获取ip+porttry{List<ServiceInstance>instances=nacosServiceDiscovery.getInstances(service);for(ServiceInstanceinstance:instances){System.out.println("ip; "+instance.getHost()+"; "+"port = "+instance.getPort());}}catch(Exceptione){e.printStackTrace();}}}}@Configurationpublic class ProductServiceConfig {
@Bean public RestTemplate restTemplate(){ return new RestTemplate(); }}
```java /** * 远程查询商品信息 * @param productId * @return */ private Product getProductFromRemote(Long productId){ //1. 获取商品服务所在的所有机器IP+port List<ServiceInstance> instances = discoveryClient.getInstances("service-product"); ServiceInstance serviceInstance = instances.get(1); //远程url String url = "http://"+serviceInstance.getHost()+":"+serviceInstance.getPort()+"/product/"+productId; log.info("url = " + url); //给远程发送请求 Product product = restTemplate.getForObject(url, Product.class); return product; }@ConfigurationpublicclassProductServiceConfig{@Bean@LoadBalancedpublicRestTemplaterestTemplate(){returnnewRestTemplate();}}/**private Product getProductFromRemoteWithLoadBalancerAnnotation(Long productId){
// 进阶 3 :基于注解的负载均衡
String url = “http://service-product/product/”+productId;
//给远程发送请求 service-product 会被动态替换
Product product = restTemplate.getForObject(url, Product.class);
return product;
}