Spring Cloud Alibaba 微服务二 - 服务注册与发现

Spring Cloud Alibaba 微服务一 - nacos
Spring Cloud Alibaba 微服务二 - 服务注册与发现
Spring Cloud Alibaba 微服务三 - gateway网关
Spring Cloud Alibaba 微服务四 - sentinel服务限流与降级
Spring Cloud Alibaba 微服务五 - seata分布式事务

一、搭建项目

项目是spring cloud alibaba + nacos + dubbo 做注册与发现的
以下是我一开始搭建的项目结构
在这里插入图片描述
在主pom中定义基础组件版本,使用dependencyManagement引入版本依赖。

<properties>
	<java.version>1.8</java.version>
	<spring-boot.version>2.1.9.RELEASE</spring-boot.version>
	<springcloud-alibaba.version>0.9.0.RELEASE</springcloud-alibaba.version>
	<mybatis-plus.version>3.1.1</mybatis-plus.version>
	<mysql.version>5.1.47</mysql.version>
	<encoding>UTF-8</encoding>
	<maven.compiler.source>1.8</maven.compiler.source>
	<maven.compiler.target>1.8</maven.compiler.target>
</properties>

<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-dependencies</artifactId>
			<version>${spring-boot.version}</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>

		<!--database-->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql.version}</version>
		</dependency>

		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>${mybatis-plus.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-alibaba-dependencies</artifactId>
			<version>${springcloud-alibaba.version}</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>

	</dependencies>
</dependencyManagement>

子模块的依赖

 <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.xsw</groupId>
            <artifactId>xsw-core</artifactId>
            <version>${project.parent.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-context</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

二、模块连接的bootstrap.yml文件

spring:
  application:
    name: xsw-gateway
  cloud:
    nacos:
      config:
        server-addr: ${NACOS_ADDRESS}
        #namespace: xsw
        namespace: ${NACOS_NAMESPACE}
        file-extension: yml
        shared-configs[0]:
          data-id: common.yml
          refresh: true
        shared-configs[1]:
          data-id: xsw-gateway.yml
          refresh: true

${NACOS_ADDRESS} ${NACOS_NAMESPACE}为启动时添加的参数,分别时nacos的参数以及nacos 的组
idea 相关配置如:
在这里插入图片描述

  • nacos的内容如下:

在这里插入图片描述

  • common.yml
dubbo:
    scan:
        base-packages: com.xsw
    protocols:
        dubbo:
            name: dubbo
            port: -1
    consumer:
        check: false
    registry:
        address: spring-cloud://127.0.0.1
        port: 8848
    provider:
        timeout: 5000
#nacos
spring:
    cloud:
        nacos:
            discovery:
                server-addr: 127.0.0.1:8848
                namespace: xsw
    datasource:
        url: jdbc:mysql://127.0.0.1:3306/xsw?noAccessToProcedureBodies=true&useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&allowMultiQueries=true
        username: root
        password: 123456
        driver-class-name: com.mysql.jdbc.Driver
        type: com.alibaba.druid.pool.DruidDataSource
#redis
redis:
    datebase: 0
    address: 172.16.70.76:26379
    password:
    minipoolsize: 1
    maxpoolsize: 2  
  • gateway.yml
server:
    port: 40001

#dubbo

dubbo:
    scan:
        base-packages: com.xsw.gateway.rpc
    application:
        name: xsw-gateway
    cloud:
        subscribed-services: xsw-atuh,xsw-blog
  • 项目启动类上:
package com.xsw.gateway;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.ComponentScans;
import org.springframework.context.annotation.EnableAspectJAutoProxy;

@SpringBootApplication
@EnableDiscoveryClient
@EnableAspectJAutoProxy
@ComponentScans({})
@MapperScan("com.xsw.gateway.mapper")
public class GatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class, args);
    }

}

启动则自动注册到nacos上:
在这里插入图片描述

三、服务调用

  • 提供者
    在这里插入图片描述
import com.xsw.core.entity.blog.Blog;
import com.xsw.core.rpc.blog.BlogService;
import org.apache.dubbo.config.annotation.Service;

/**
 * @author xiesw
 * @since 2020/12/25 12:02
 */
@Service
public class BlogServiceProvice implements BlogService {

    @Override
    public boolean add(Blog blog) {
        return new Blog() != null;
    }
}

  • 消费者
    在这里插入图片描述
import com.xsw.core.entity.blog.Blog;
import com.xsw.core.rpc.blog.BlogService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;

/**
 * @author xiesw
 * @since 2020/12/25 15:03
 */
@Service
public class BlogConsumer {

    @Reference(check = false)
    private BlogService blogService;

    public boolean add(Blog blog) {
        return blogService.add(blog);
    }

}

本文github地址:https://github.com/XSWgrzh/xsw.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值