Nacos

suaxi
2021-04-29 / 0 评论 / 108 阅读 / 正在检测是否收录...

服务注册和配置中心的组合:Nacos = Eureka + config + bus

一、安装

1、环境:java8、Maven

nacos地址:https://github.com/alibaba/nacos


2、启动

# 注:单机启动,需修改bin目录下的startup.cmd为`standalone`模式
set MODE="standalone"
set FUNCTION_MODE="all"
set SERVER=nacos-server
set MODE_INDEX=-1
set FUNCTION_MODE_INDEX=-1
set SERVER_INDEX=-1
set EMBEDDED_STORAGE_INDEX=-1
set EMBEDDED_STORAGE=""

windows环境下,双击startup.cmd启动


3、访问Nacos

# nacos默认监听8848
# 默认账号:nacos,密码:nacos
localhost:8848


二、测试

1、payment模块

新建cloudalibaba-provider-payment9001、cloudalibaba-provider-payment9002两个模块


pom
<!-- Nacos -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</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>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>


yml
server:
  port: 9001

spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848

management:
  endpoints:
    web:
      exposure:
        include: '*'


主启动类
@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain9001 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentMain9001.class, args);
    }
}


controller
@RestController
@RequestMapping("/payment")
public class PaymentController {

    @Value("${server.port}")
    private String serverPort;

    @GetMapping("/nacos/{id}")
    public String getPayment(@PathVariable("id")int id){
        return "nacos registry, serverPort: " + serverPort + "\t id: " + id;
    }
}


2、order模块

pom

同理payment


yml
server:
  port: 8088

spring:
  application:
    name: nacos-payment-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848

# 消费者将要去访问的微服务名称(注册进nacos的服务提供者)
service-url:
  nacos-user-service: http://nacos-payment-provider


主启动类
@SpringBootApplication
@EnableDiscoveryClient
public class ConsumerMain80 {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerMain80.class, args);
    }
}


config
@Configuration
public class ApplicationContextConfig {

    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}


controller
@RestController
@RequestMapping("/consumer")
public class ConsumerController {

    @Autowired
    private RestTemplate restTemplate;

    @Value("${service-url.nacos-user-service}")
    private String serverURL;

    @GetMapping("/payment/nacos/{id}")
    public String paymentInfo(@PathVariable("id")int id){
        return restTemplate.getForObject(serverURL + "/payment/nacos/" + id, String.class);
    }
}
0

评论 (0)

取消