一、目标分析

目标:
创建微服务父工程heima-springcloud、用户服务工程user-service、服务消费工程consumer-demo

分析:
需求:查询数据库中的用户数据并输出到浏览器

  • 父工程heima-springcloud:添加spring boot父坐标和管理其它组件的依赖
  • 用户服务工程user-service:整合mybatis查询数据库中用户数据;提供查询用户服务
  • 服务消费工程consumer-demo:利用查询用户服务获取用户数据并输出到浏览器

    二、搭建配置heima-springcloud

    1. <!--springCloud-->
    2. <dependency>
    3. <groupId>org.springframework.cloud</groupId>
    4. <artifactId>spring-cloud-dependencies</artifactId>
    5. <version>${spring-cloud.version}</version>
    6. <type>pom</type>
    7. <scope>import</scope>
    8. </dependency>
    通过scope的import可以继承spring-cloud-dependencies工程中的依赖

在实际开发中,每个微服务可独立为一个工程

三、搭建配置user-service工程

目标:配置user-service工程并能够根据用户id查询数据库中用户数据

需求:可以访问http://localhost:9091/user/8输出用户数据

实现步骤:
1.添加启动器依赖( web、通用Mapper) ;
2.创建启动引|导类和配置文件;
3.修改配置文件中的参数;
4.编写测试代码( UserMapper , UserService , UserController ) ;
5.测试

四、搭建配置cosumer-demo工程

目标:编写测试类使用restTemplate访问user-service的路径根据id查询用户

需求:访问 http://localhost:8080/consumer/8 使用RestTemplate获取 http://localhost:9091/user/8的数据

实现步骤:
1.添加启动器依赖;
2.创建启动引导类(注册RestTemplate )和配置文件;
3.编写测试代码( ConsumerController中使用restTemplate访问服务获取数据)
4.测试

小结:
分布式服务存在问题:

  • 服务管理

如何自动注册和发现
如何实现状态监管
如何实现动态路由

  • 服务如何实现负载均衡
  • 服务如何解决容灾问题
  • 服务如何实现统一配置

    五、Eureka注册中心说明

    image.png

    六、搭建eureka-server工程

    目标:添加eureka对应依赖和编写引导类搭建eureka服务并可访问eureka服务界面

Eureka是服务注册中心,只做服务注册;自身并不提供服务也不消费服务。可以搭建web_ 工程使用Eureka,可以使用Spring Boot方式搭建。

搭建步骤:
1.创建工程;
2.添加启动器依赖;

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.cloud</groupId>
  4. <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  5. </dependency>
  6. </dependencies>

3.编写启动引导类(添加Eureka的服务注解)和配置文件;

  1. package com.itheima;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringRootApplication;
  4. import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
  5. //声明当前应用为eureka服务
  6. @EnableEurekaServer
  7. @SpringBootApplication
  8. public class EurekaServerApplication f
  9. public static void main(string[] args) {
  10. SpringApplication.run(EurekaServerApplication.class);
  11. }
  12. }

4.修改配置文件(端口,应用名称..) ;

  1. server:
  2. port: 10086
  3. spring:
  4. application:
  5. name: eureka-server # 应用名称,会在Eureka中作为服务的id标识(serviceId)
  6. eureka:
  7. client:
  8. service-url: # EurekaServer的地址,现在是自己的地址,如果是集群,需要写其它Server的地址。
  9. defaultZone: http://127 .0.0.1:10086/eureka
  10. register-wi th-eureka:false # 不注册自己
  11. fetch-registry: false # 不拉取

5.启动测试