微服务实战demo(1.5.17.RELEASE&Edgware.SR5)

发布时间 2023-08-13 14:52:39作者: 咔咔皮卡丘

一、注册中心(使用eureka)

1.依赖:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka-server</artifactId>    
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-security</artifactId>
 </dependency>

 

2.配置:
server:
  port: 8761
spring:
  application:
    name: register
eureka:
  instance:
    hostname: imooc:123456@localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
security:
  basic:
    enabled: true
  user:
    name: imooc
    password: 123456

 

3.启动注解:
在启动类添加
@EnableEurekaServer

 

4.访问:
http://localhost:8761
 

二、 网关 

(zuul,默认是Hystrix 客户端,不需要再注入Hystrix,并且能对所有的请求进行监控)
1.依赖:
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
 <dependency> 
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>

 

2.配置:
server:
  port: 8888
spring:
  application:
    name: proxy
eureka:
  client:
    service-url:
      defaultZone: http://imooc:123456@localhost:8761/eureka
zuul:
  #定义路由规则,默认路由是网关地址+应用名+应用原来的接口requestMapping
  routes:    
    userApi:
      path: /user/**
      serviceId: user
      # 是否去掉**前缀,默认是
      stripPrefix: true

 

3.启动注解:

在启动类添加
@EnableEurekaClient
@EnableZuulProxy

 

三、服务

1.依赖:
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-eureka</artifactId>
  </dependency>

 

2.配置:

server:
  port: 8081
spring:
  application:
    name: user
eureka:
  client:
    service-url:
      defaultZone: http://imooc:123456@localhost:8761/eureka

 

3.启动注解:
在启动类添加
@EnableEurekaClient

 

四、监控(Hystrix 分服务端和客户端)

1.依赖:
<!-- 服务端 -->
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
  </dependency>
 
<!-- hystrix 客户端 -->
  <dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-hystrix</artifactId>
  </dependency>
<!-- 能够收集应用中的性能监控信息及开放一些管理端的接口 --> 
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
  </dependency>

 

2、配置:
 
 
3、启动注解:
在启动类添加(服务端)
@EnableHystrixDashboard

 

在启动类添加(客户端)

@EnableHystrix

在接口处添加(客户端)

@HystrixCommand(fallbackMethod = "fallbackGetOrder")

*fallbackMethod = "fallbackGetOrder"是指定如果报错了,就调用该方法,要求方法的入参及出参要与原方法一样

 
4、服务端访问:ip:端口/hystrix
在服务页文本框里输入客户端的ip:端口/hystrix.stream 进行查看监控
 
 

五、服务间调用(Feign)

1、依赖:
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-feign</artifactId>
  </dependency>

 

2、配置:0
 
 
3、启动注解:
在启动类添加
@EnableFeignClients

 

4、代码编写:
调用端编写接口:
@FeignClient(value = "order",path = "/")
public interface OrderClient {

    /**
     * 获取订单信息
    * @return java.lang.String
    * @author wangquanqing
    * @date 2018/11/27 15:21
    */
    @GetMapping("/{id}")
    String getMyOrderId(@PathVariable(name = "id") Long id);
}

 

被调用端编写接口实现:
@RestController
@RequestMapping("/")
public class OrderResource {

    @GetMapping("/{id}")
    public Long getMyOrder(@PathVariable(name="id") Long id){
        return id;
   }
}