spring-cloud-alibaba学习

spring-cloud-alibaba组件

  • 服务的注册与发现:适配spring-cloud服务注册与发现标准,默认集成ribbon的支持
  • 服务限流与降级,默认支持serlet,feigin.resttemplate,dobbo和rocketMQ限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级metrics监控
  • 分布式配置管理,分布式配置中的外部配置,配置更改时自动刷新
  • 消息驱动能力:基于spring-cloud-stream,为微服务应用构建消息驱动能力
  • 分布式事物:使用@GlobalTransaction注解,高效并且对事物零侵入地解决分布式事物问题
  • 阿里云对象存储
  • 分布式任务调度
  • 阿里云短信服务

nacos的注册与发现

nacos启动

-- 启动nacos,默认端口8848,
linux/mac:  ./startup.sh -m standalone

-- nacos 账户密码
nacos = nacos

客户端

pom 配置
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
 </parent>
 
<dependencies>
        <dependency>
            <groupId>org.springframework.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-test</artifactId>
            <scope>test</scope>
        </dependency>
   </dependencies>
    
<!--依赖版本定义-->
   <dependencyManagement>
       <dependencies>
           <dependency>
               <groupId>org.springframework.cloud</groupId>
               <artifactId>spring-cloud-dependencies</artifactId>
               <version>Greenwich.RELEASE</version>
               <type>pom</type>
               <scope>import</scope>
           </dependency>
           <dependency>
               <groupId>org.springframework.cloud</groupId>
               <artifactId>spring-cloud-alibaba-dependencies</artifactId>
               <version>0.2.1.RELEASE</version>
               <type>pom</type>
               <scope>import</scope>
           </dependency>
       </dependencies>
   </dependencyManagement>
application.yml 配置文件
server:
  port: 8050
  
spring:
  application:
    name: nacos-discovery-consumer
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        metadata:
           name: lengleng
程序
//加上EnableDiscoveryClient
@EnableDiscoveryClient
@SpringBootApplication
public class NacosDiscoveryConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(NacosDiscoveryConsumerApplication.class, args);
    }
    @Bean
    @LoadBalanced //实现负载均衡
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}
@RestController
public class DemoController {
    @Autowired
    private RestTemplate restTemplate;
    @Autowired
    private LoadBalancerClient loadBalancerClient;

    @GetMapping("/test")
    public String test(String name) {
        RibbonLoadBalancerClient.RibbonServer ribbonServer = (RibbonLoadBalancerClient.RibbonServer) loadBalancerClient.choose("nacos-discovery-provider");
        NacosServer nacosServer = (NacosServer) ribbonServer.getServer();
        System.out.println("-->" + nacosServer.getMetadata());
        //远程调用
        return restTemplate.getForObject( "http://nacos-discovery-provider/demo?name=" + name, String.class); 
    }
}

服务端

pom配置同上
application.yml配置
server:
  port: 8051

spring:
  application:
    name: nacos-discovery-provider
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        metadata:
          name: provider
程序
@EnableDiscoveryClient
@SpringBootApplication
public class NacosDiscoveryProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(NacosDiscoveryProviderApplication.class, args);
    }
}
@RestController
public class DemoController {
    @Value("${server.port}")
    private Integer port;
    @GetMapping("/demo")
    public String demo(String name) {
        return "hello " + name + port;
    }
}

测试

curl http://nacos-discovery-provider/demo?name=xxx
发布了14 篇原创文章 · 获赞 0 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/u010152183/article/details/101151790