使用【SpringCloud】构建微服务项目之服务注册与发现

接上一篇的内容,本篇开始构建微服务项目
步骤一 创建父项目(创建SpringBoot项目)
1、具体步骤省略
2、在生成的项目中修改pom文件,添加项目基本的依赖,主要信息如下:

 <parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.7.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<groupId>com.kyrie</groupId>
	<artifactId>spring-cloud-microservice-study</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>
	<name>microservice-study</name>
	<description>Demo project for Spring Boot</description>

	<modules>
		<module>microservice-discovery-eureka</module>
        <module>microservice-provider-user</module>
		<module>microservice-consumer-movie-ribbon</module>
	</modules>

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

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</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>Finchley.SR1</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

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

3、删除父项目多余文件夹(删除src文件夹)
至此一个简单的父项目已经构建完成,后面所有子项目的父项目都是该项目。所以可以在该项目中添加常用的一下依赖,否则各子项目会显得比较冗余。

步骤二 创建注册中心(在微服务架构中,服务发现是很重要的关键原则之一,SpringCloud提供了很多服务发现的实现方式,常见的有Eureka、Consul、Zookeeper)在此自己选择使用Eureka作为服务发现
1、在父项目上右击选择新建module,创建一个maven项目(过程省略)
2、在该项目的pom文件中新增如下依赖:

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
            <version>1.4.0.RELEASE</version>
        </dependency>
    </dependencies>

3、编写EurekaApplication启动类,并添加注解@EnableEurekaServer 该注解申明一个注册中心

@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
    public static void main(String[] args){
        SpringApplication.run(EurekaApplication.class,args);

    }
}

4、编辑配置文件application.yml(在默认情况下,eureka会把自己当做一个客户端注册到注册中心中,禁止这种行为)

#指定该erueka实例的端口号
server:
  port: 8761


eureka:
  instance:
    hostname: discovery     #指定该eureka的主机名
  client:
    registerWithEureka: false   #禁止把自己作为服务注册到注册中心
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

5、启动工程,访问http://discovery:8761/eureka/(等同于访问http://locahost:8761/eureka/和http://127.0.0.1:8761/eureka/),会发现如图显示,目前还没有服务注册到注册中心
在这里插入图片描述
至此,一个eureka注册中心已搭建完成
接下来就让不同的服务提供者把服务注册到该注册中心中,以便服务消费者调用

步骤三 创建服务提供者(它所提供的服务需要注册到注册中心供其他消费者使用)
1 在父项目上右击选择新建module,创建一个maven项目
2 在该项目的pom文件中新增如下依赖

 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </dependency>


        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.11</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.0</version>
        </dependency>
    </dependencies>

3 编辑配置文件application.yml,(核心配置是指定注册中心地址)具体信息如下:

server:
  port: 8001

# 使用druid连接池
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
# 数据库的URL、帐号、密码、驱动
    url: jdbc:mysql://127.0.0.1:3306/microservice?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
    username: root
    password: root
    driverClassName: com.mysql.cj.jdbc.Driver

#连接池的配置信息
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    maxPoolPreparedStatementPerConnectionSize: 20
    filters: stat,wall,log4j

  application:
      name: microservice-provider-user


#mybatis的配置
mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.kyrie.provider.entity



eureka:
  client:
    serviceUrl:
      defultZone: http://discovery:8761/eureka/    #指定注册中心地址

  instance:
    prefreIpAddress: true

4 利用mybatis的逆向工程生成代码
5 创建启动类,给启动类添加注解@EnableEurekaClient 申明一个客户端,注解@MapperScan(“mapper包的路径”)用于指定扫描地址

@SpringBootApplication
@EnableEurekaClient
@MapperScan("com.kyrie.provider.dao")
public class ProviderApplication {
    public  static void  main(String[] args){
        SpringApplication.run(ProviderApplication.class,args);

    }
}

6 创建Controller类,注入service类,创建service类,调用service完成逻辑

@RestController
public class UserController {
    @Autowired
    private org.springframework.cloud.client.discovery.DiscoveryClient discoveryClients;

    @Autowired
    private UserService userService;

    @GetMapping("/one")
    public User selectByPrimaryKey(Long id){
      User user = userService.selectByPrimaryKey(id);
      return  user;

    }
    @GetMapping("/list")
    public List<User> getUserList(){
        return userService.getUserList();
    }

    @GetMapping("/test")
    public String  test(){
         return  "test";

    }
}

7 启动该项目(先启动服务发现的服务,即eureka),访问http://discovery:8761/eureka/(等同于访问http://locahost:8761/eureka/和http://127.0.0.1:8761/eureka/),看到本服务已经存在于注册中心
在这里插入图片描述
至此,一个服务已经成功的注册到了注册中心,接下来就是创建一个消费者去调用它,也就是去消费它。
项目地址github

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值