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
.
版权声明:本文为KillerXie原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。