栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

简要接触微服务架构——个人记账

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

简要接触微服务架构——个人记账

为了了解微服务,简单使用微服务架构方式完成一个小小的记账项目模拟。

实现前后端分离,前端进链接,后端传JSON数据,达到这样的效果,使服务与服务之间分离。

项目构建 1.创建SpringCloud父工程

配置好pom文件

 com.wly
    manage-springcloud
    1.0-SNAPSHOT
    
        manage-service
        manage-eureka
        manage-config
        manage-gateway
        manage-view
    
    pom

    
        spring-boot-starter-parent
        org.springframework.boot
        2.1.5.RELEASE
        
    

    
        1.8
        Greenwich.SR1
        2.1.5
        8.0.25
    

    
        
            
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
            
            
                tk.mybatis
                mapper-spring-boot-starter
                ${mapper.starter.version}
            
            
            
                mysql
                mysql-connector-java
                ${mysql.version}
            
        
    

    
        
            org.projectlombok
            lombok
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

注意在packging中要声明pom,表示这是父工程

2.搭建eureka注册中心

我们在父工程中创建新的module名为manage-eureka

并引入eureka注册中心服务的依赖


        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        
    

然后生成启动类和配置文件

启动类上要添加启动eureka服务的注解  @EnableEurekaServer

配置文件如下:

配置文件中声明了注册中心本身服务的端口号,自身的服务名(id),服务地址以及相关的其他配置。

server:
  port: 10085

#该注解表示本应用的名称
spring:
  application:
    name: eureka-server

eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10085/eureka
    #不注册自己
    register-with-eureka: false
    #不拉取服务
    fetch-registry: false
  server:
    #每10000毫秒(10秒)去检查是否有超时的服务并剔除,默认60     eviction——驱逐
    eviction-interval-timer-in-ms: 10000
    #该配置表示eureka自我保护模式是否开启
    enable-self-preservation: false
3.创建网关服务——Gateway Spring Cloud Gateway 组件的核心是一系列的过滤器,通过这些过滤器可以将客户端发送的请求转发(路由)到对 应的微服务。 Spring Cloud Gateway 是加在整个微服务最前沿的防火墙和代理器,隐藏微服务结点 IP 端口信息, 从而加强安全保护。 Spring Cloud Gateway 本身也是一个微服务,需要注册到 Eureka 服务注册中心。 网关的核心功能是:过滤和路由 下面看配置: 引入依赖
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        
        
        
            org.springframework.cloud
            spring-cloud-starter-gateway
        

启动类要注解声明被服务发现——

@EnableDiscoveryClient

配置文件中声明端口号、服务id、线路断言和目标路径、跨域、负载均衡、熔断等。

这里网关的端口号为8086,固定的能够路由到记账服务的路径要求为 /api/bill/**。

server:
  port: 8086
spring:
  application:
    name: manage-gateway
  cloud:
    gateway:
      routes:
        - id: manage-service-route
          uri: lb://manage-service
          predicates:
            - Path=/api/bill/**
          filters:
            #去除一个路径后调取服务
            - StripPrefix=1
        - id: manage-view-route
          uri: lb://manage-view
          predicates:
            - Path=/index
      #跨域访问
      globalcors:
        cors-configurations:
          '[/**]':
            #        *表示全部
            allowedOrigins:
              - "*"
            allowedMethods:
              - GET

eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10085/eureka
  instance:
    prefer-ip-address: true


#熔断
hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 6000 #服务降级超时时间,默认1S

#负载均衡
ribbon:
  ConnectTimeout: 1000 # 连接超时时长
  ReadTimeout: 2000 # 数据通信超时时长
  MaxAutoRetries: 0 # 当前服务器的重试次数
  MaxAutoRetriesNextServer: 0 # 重试多少次服务

4.创建配置中心

需要的依赖:


        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        
        
        
            org.springframework.cloud
            spring-cloud-config-server  
        
        
        
            org.springframework.cloud
            spring-cloud-bus
        
        
        
            org.springframework.cloud
            spring-cloud-stream-binder-rabbit
        
    

启动类上添加 @EnableConfigServer表示开启配置中心服务

配置文件:

server:
  port: 10086
spring:
  application:
    name: manage-config
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/My1310835162/manage-config.git
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10085/eureka
#暴露出触发消息总栈的地址,此地址在仓库配置发生变动之后,可手动发送post形式的请求到:http://127.0.0.1:{本服务端口号}/actuator/{暴露的地址}
                                                               #此处为:http://127.0.0.1:10086/actuator/bus-refresh
management:
  endpoints:
    web:
      exposure:
        include: bus-refresh

uri的值为存放配置文件的git仓库地址

我的是这样:

 

5.记账后台服务

这里要注意,服务类要使用配置中心的话引入的依赖为        spring-cloud-starter-config

config配置中心服务本身使用的是        spring-cloud-config-server

不要添加错了。

配置文件使用bootstrap.yml

bootstrap.yml 文件也是 Spring Boot 的默认配置文件,而且其加载的时间相比于 application.yml 更早。 application.yml 和 bootstrap.yml 虽然都是 Spring Boot 的默认配置文件,但是定位却不相同。 bootstrap.yml 可以理解成系统级别的一些参数配置,这些参数一般是不会变动的。application.yml 可以用来定义应用级别 的参数,如果搭配 spring cloud confifig 使用, application.yml 里面定义的文件可以实现动态替换。 总结就是, bootstrap.yml 文件相当于项目启动时的引导文件,内容相对固定。 application.yml 文件是微服务 的一些常规配置参数,变化比较频繁。

spring:
  cloud:
    config:
      name: bill
      profile: dev
      discovery:
        service-id: manage-config
        #启用配置中心
        enabled: true
      label: master

  #rabbit默认配置
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest

#注册到微服务注册中心
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10085/eureka

 

spring.cloud.config中配置好要引用的配置文件的名、域、分支以及要使用的配置中心服务的注册id。

rabbit是消息队列设置,实现不重启微服务的情况下可以做到更新配置文件。

当然,前提是在配置中心中配置了相关参数,以及需要在服务controller中注明     @RefreshScope

表示监控和刷新。

由于本博客重点是记录微服务的运行逻辑,具体的服务逻辑这里不做展示。

此时,我们依次启动注册中心 > 网关服务 > 配置中心 > 记账服务后台 进行测试。

这里使用便捷的api接口测试应用——Postman进行测试,数据成功返回,代表注册中心、网关、配置中心、服务本身都正常运行。

 

之后,前端利用ajax可以到指定的网关路径,然后网关路由到服务接口进行执行,将执行结束的json数据返回到网关再返回给前端页面进行使用。

如下:

 

这里是进入页面后利用ajax发送了获得分页list的请求,到达网关后路由到后端记账服务,然后成功获取到返回的json格式的数据,这里弹出数据以表示获取成功。

 微服务架构使各个环节的开发耦合性更低,提高开发效率,这里作为初学者简单熟悉了一下微服务的基础架构,将来还会深入了解,并在此基础上重构项目。

以此记录。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/667229.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号